What are over-the-air updates?
OTA updates let you push new JavaScript and assets to installed apps directly, skipping the store review for changes that do not touch native code. The app downloads the update on launch. EAS Update (and CodePush) provide this for React Native.
Why it matters
Store review takes hours to days, which is painful for a critical bug fix or copy change. OTA updates let you fix JS-level issues in minutes. But they come with rules — you cannot change native code or sneak past review intent — and misusing them risks removal from the store.
What to learn
- What OTA can and cannot change (JS/assets, not native)
- EAS Update and release channels
- How and when the app checks for updates
- Mapping updates to app versions / runtime versions
- Staged rollouts and rollback
- The store rules around OTA
- When a full store build is required
Common pitfall
Pushing an OTA update that assumes native changes the installed binary does not have — a new native module or permission — causing crashes. OTA only updates the JS layer; if your change needs native code, it requires a new store build. Match updates to the right runtime version so they never land on an incompatible binary.
Resources
Primary (free):
- Expo — EAS Update · docs
- Expo — Runtime versions · docs
- Apple — Guideline on OTA (3.3.1) · docs
Practice
Configure EAS Update on your app with a release channel, ship a small JS-only change (text or styling), and confirm an installed build downloads it on relaunch. Note what would require a full store build instead. Done when an OTA update lands on the device without a store submission.
Outcomes
- Push JS and asset updates over the air.
- Match updates to compatible runtime versions.
- Use staged rollouts and rollback.
- Know when a change needs a full store build.