EAS Update Pitfalls: When OTA Isn’t the Silver Bullet
A quick look at the hidden costs of over‑relying on Expo Application Services (EAS) OTA updates and how to mitigate version‑drift issues.
Insight
Expo's EAS Update lets you push JavaScript changes without a store review, but treating it as a universal release mechanism can backfire. OTA updates bypass native code changes, so any modification to native modules, permissions, or linked libraries will be ignored until the next binary release. This creates a silent version drift where users run a mix of old native binaries and new JS bundles, leading to crashes that are hard to reproduce.
Example
// eas.json – keep the runtime version in sync with native builds
{
"build": {
"development": { "runtimeVersion": "1.2.0" },
"production": { "runtimeVersion": "1.2.0" }
},
"updates": {
"fallbackToCacheTimeout": 0,
"checkAutomatically": "ON_LOAD"
}
}
By pinning runtimeVersion to the native build number, OTA bundles are rejected unless the binary matches, preventing accidental mismatches.
Takeaway
Never rely on OTA for native changes. Use runtimeVersion to tie JavaScript updates to a specific binary, and reserve OTA for pure JS tweaks, UI tweaks, or feature flags.