mix mob.snapshot_loaded (mob_dev v0.3.37)

Copy Markdown View Source

Asks a connected device's BEAM what modules it has loaded right now. In interactive mode (Mob's default), a module is loaded only when something calls into it — so the loaded set after a real user session is the empirical "actually used" set.

Anything shipped but never loaded is a strong strip candidate. Combine with mix mob.audit_otp (static reachability) for the highest-confidence strip set:

shipped  statically-reachable  NEVER-loaded = safe to strip

Workflow

mix mob.deploy                    # deploy the app
# Use the app — every flow you care about
mix mob.connect --no-iex          # set up the dist tunnel
mix mob.snapshot_loaded           # snapshot
mix mob.snapshot_loaded --json out.json  # machine-readable

What the report shows

  • Total .beam files shipped
  • Modules currently loaded
  • Modules in the bundle that have never been loaded
  • Per-OTP-lib breakdown (which libs have any module loaded vs not)

What this is NOT

Not a trace — it doesn't tell you which function was called or how often. Just whether the module was touched. For per-function or per-call-frequency data, use mix mob.trace_otp (host-side harness) or extend Mob.Diag with :recon_trace-based on-device tracing.