You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
iOS: an interrupted BEAM deploy to a physical iPhone leaves the previous
code running (MOB-408).mob_beam.m loaded deployed BEAMs from the one
directory Documents/otp/<app> whenever it existed, so a copy that died
part-way left an override the app could not boot from. It now loads the
highest-numbered Documents/otp/<app>.versions/<N> that has its .mob_complete marker, which mob_dev copies only after the upload is
verified; then the legacy Documents/otp/<app>, then the bundle. Once it
has chosen a version it deletes the older ones and the legacy directory.
Development builds create Documents/otp/<app>.versions/ at each boot,
which tells mob_dev 0.7.28 or later to use it. The choice is in ios/mob_code_versions.h, covered by test/native/code_versions_test.c.
See decisions/2026-10-15-ios-versioned-code-dirs.md. Upgrading: the Documents wipe itself (devicectl --remove-existing-content erasing the app's database, Library and every
other file on each deploy) is fixed in mob_dev 0.7.28, with any mob. For
crash-safe deploys, update both and run mix mob.deploy --native once: that
deploy still writes Documents/otp/<app>, and the ones after it, once the
new runtime has booted, use the numbered directories. Moving an app's mob
across 0.9.20 in either direction needs --native as well; when mob_dev
relaunches the app after a fast deploy it doesn't boot from, the deploy
fails, naming the directory it booted from.