Runtime version mismatch in EAS Update native builds
27K reputation · 31 Jul 2020, 20:18 UTC
JS Bundle and Native Runtime Incompatibility
When utilizing Expo Application Services (EAS) Update for over-the-air (OTA) deployments, the runtimeVersion defined in app.json serves as the primary guardrail. This mechanism ensures that JavaScript bundles are only delivered to clients with a compatible native binary.
A critical constraint exists where OTA updates cannot modify native code or plugins. If a deployment is pushed to a channel with a runtime version that does not align with the installed native build on the device, the application may fail to load the update or crash due to missing native dependencies.
Given the polling mechanism of the expo-updates library, there is uncertainty regarding the behavior when a client is mid-transition between two different runtime versions during a staged rollout.
- Does the client prioritize the locally cached bundle over a remote manifest if the runtime version is flagged as incompatible?
- What is the specific failure state when a manifest is retrieved but the native runtime cannot support the required JS bundle version?