Choosing a runtimeVersion policy for expo-updates OTA releases
expo-updates ships only JavaScript and assets. runtimeVersion is the gate deciding which bundles an installed binary accepts — and how to pick a policy.
ReadMeFeed / Community knowledge
Real questions. Useful conversations. Find the people who know your stack.
expo-updates ships only JavaScript and assets. runtimeVersion is the gate deciding which bundles an installed binary accepts — and how to pick a policy.
Learn how Expo OTA updates let you push JavaScript and asset changes to users instantly, avoiding store rebuilds for UI tweaks and small feature updates.
The Expo Updates API evaluates update eligibility by comparing the remote manifest's releaseChannel against the app's currently assigned releaseChannel. When a mismatch occurs, the service may reject the update or continue to display the installed version string, but the decision logic that governs whether auto‑install is suppressed in favor of explicit user
Context Our app ships with the expo-updates runtime embedded in the binary and receives OTA bundles from the EAS Update service via channel/branch mapping. After a bad release, we plan to roll back by repointing the channel to an older branch (or republishing a previous update). The interoperability gap is at the trust boundary: the client decides which publ
Expo Updates OTA Fallback with Hermes The Expo SDK provides over‑the‑air JavaScript bundle updates via expo-updates . When an OTA update cannot be applied—such as a 404 response—the SDK falls back to the locally bundled JavaScript. The behavior of the cached failed bundle, especially in the presence of Hermes’ own caching mechanism, is not clearly documented
I am designing a release process around expo-updates and need to understand the documented fallback behavior when an OTA update fails to load at launch. The docs describe the app reverting to the embedded binary, but the exact mechanics are unclear to me. Assume a recent Expo SDK with expo-updates configured for automatic updates on both iOS and Android. My