mix mob.verify_strip (mob_dev v0.3.37)

Copy Markdown View Source

Boot-safety verification for stripped Mob app builds.

After deploying a slim build (where mix mob.release has dropped OTP libs to shrink the IPA), this task connects to the running app's BEAM and asks it to force-load every .beam shipped in the bundle. Any module that fails to load — typically because a stripped lib was needed by a transitive dep — shows up here.

Usage

# First connect to the device (sets up tunnels + verifies node):
mix mob.connect --no-iex

# Then run the verifier:
mix mob.verify_strip

Or pass --node explicitly to skip auto-discovery.

What it checks

  1. Eager load sweepCode.ensure_loaded/1 on every .beam under <files_dir>/otp/. Catches "module X depends on stripped module Y" at load time.

  2. Harness exercise — runs MobDev.OtpTrace.Harness.all/0 on the device and reports any exception. Catches issues with the common Elixir surface even if individual modules loaded fine.

What it does NOT check

App-specific code paths. If your app calls :public_key.something when the user opens a particular screen, this verifier won't find it unless the screen is opened. Run your own integration tests for that.

Output

Plain mode prints a summary + per-failure detail. Exit code is 0 if everything loaded + harness passed, 1 otherwise.