Skip to content

fix(ios): don't read the expo-updates launch asset before the controller starts - #508

Merged
hurali97 merged 1 commit into
callstack:mainfrom
malopezr7:fix/ios-expo-updates-57-launch-asset-before-start
Oct 20, 2026
Merged

hurali97 merged 1 commit into
callstack:mainfrom
malopezr7:fix/ios-expo-updates-57-launch-asset-before-start

Conversation

@malopezr7

Copy link
Copy Markdown
Contributor

Fixes #507

With expo-updates 57, EnabledAppController.launchAssetUrl() traps if it runs before start(), because startupProcedure is an implicitly unwrapped optional. ExpoUpdatesStartup, ExpoHostRuntimeDelegate.bundleURL() and isBundleURLStable could call it before the controller started.

This PR checks isStarted before each call. Before start() there is no launch asset, so Expo 58 behaves the same.

Testing

  • Ran the same change as a patch on an Expo 57 brownfield iOS host with Updates enabled: no crash, OTA update and rollback work.
  • yarn build, yarn lint, yarn typecheck pass.

…ler starts

With expo-updates 57, EnabledAppController.launchAssetUrl() reads
startupProcedure, an implicitly unwrapped optional that only start() sets.
ExpoUpdatesStartup.prepareReactNative, ExpoHostRuntimeDelegate.bundleURL()
and isBundleURLStable called it before start(), which crashed with
EXC_BREAKPOINT. Check isStarted first.
@hurali97
hurali97 merged commit 7e63e20 into callstack:main Oct 20, 2026
13 of 14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

iOS: crash (EXC_BREAKPOINT) with expo-updates 57 when launchAssetUrl() is read before AppController starts

2 participants