Websites · Glossary
What is an over the air update?
An over the air update, or OTA update, delivers new JavaScript code and assets to an app already installed on people's phones, without a new build going through the App Store or Google Play. Frameworks such as React Native can do this because much of the app runs as a JavaScript bundle that can be replaced, while native code changes still need a store release.
OTA updates let a fix reach phones in minutes instead of days. They only cover the JavaScript layer, and the store rules decide what they may change.
Indunil Asanka · Co-founder
4 min read · Published
| Question | Over the air update | New store build |
|---|---|---|
| What it changes | JavaScript, styles, images and other assets | Anything, including native code and libraries |
| Store review | Not reviewed per update | Reviewed by Apple; checked by Google |
| Speed to reach users | Next launch or next restart, often minutes | Hours to days, then users must update |
| Version number in the store | Unchanged | New version |
| Limits | Must match the installed app's runtime version; store rules on changing features | None beyond review |
What it is
A React Native app has two layers: native code compiled for iPhone or Android, and a JavaScript bundle with the app's screens and logic. An OTA update replaces the bundle and assets. The app checks an update server, downloads the new bundle and uses it, usually on the next launch. Expo's service for this is EAS Update: an app built with the expo-updates library can receive updates published to a channel, such as production or staging. Expo's documentation describes publishing with eas update and a message, after which users receive the new version on their next launch.
How it works
Each update is tied to a runtime version, which describes the native layer it was built for. Expo's documentation explains that whenever native code changes, the runtime version must change, and older builds will not receive updates meant for the new native layer. Builds point at a channel, and updates are published to branches mapped to channels, so a team can send an update to a staging build first and to production after checking it. If an update fails to load, the app can fall back to the version embedded in the build.
When it matters
OTA updates matter when an app changes often: fixing a typo in a menu, a wrong price, a broken layout on one phone size or an urgent bug. Without them, every change waits for a build, store review and each person choosing to update. They matter less for apps that change rarely. They never replace store builds entirely, because new native libraries, permissions, the app icon and the SDK version all live in the native layer.
Common mistakes
Publishing an update that needs a native library the installed build does not have, which can crash the app. Forgetting to bump the runtime version after a native change. Pushing straight to production without a staging channel. Assuming everyone has the update the moment it is published, when many people only receive it on their next launch. And using OTA updates to add significant new features that change what the app is: Apple's guideline 2.5.2 says apps may not download code that introduces or changes features or functionality.
Where it shows up in OneCraft
OneCraft writes phone apps as Expo projects and runs Expo builds for Android and iPhone on paid plans: a test build or a store build, at 5 credits each, on OneCraft's Expo organisation unless the owner connects their own token. Every change made in chat is a commit in the app's repository. The owner submits store builds from their own App Store and Google Play accounts with eas submit; OneCraft does not submit apps to the stores.
Questions people ask
Are OTA updates allowed on the App Store?
Updates to interpreted JavaScript are commonly used and accepted, within Apple's rules. Guideline 2.5.2 forbids downloading code that introduces or changes features or functionality, so OTA updates should fix bugs and adjust content or design, while new features go through a store release and review.
Do OTA updates work on Android too?
Yes. The same mechanism replaces the JavaScript bundle on Android, and Google Play's policies also restrict apps from downloading executable code that changes their behaviour outside the store. Keep OTA updates to fixes and small changes on both platforms, and ship new features as store releases.
How fast does an OTA update reach users?
With default settings, an Expo app checks for updates when it launches and applies a downloaded update on the next launch. People who keep the app open for days will see it later. Most active users receive an update within a day or two of publishing.
Can an OTA update change the app icon?
No. The app icon, the app name, permissions and native libraries are part of the native build. Changing them needs a new build and a store release. OTA updates only replace the JavaScript bundle and the assets it loads, such as images inside screens.
What is a runtime version in Expo?
A label for the native layer of a build. An update only installs on builds with a matching runtime version, which stops JavaScript written for new native code from loading in an old app. Expo's documentation recommends changing it whenever native code changes.
Make one with websites
The button opens the generator with this use case already described. Change the wording to match your own.
Create a website with OneCraftRelated questions
- Development build vs production build in ExpoDevelopment build vs production build in Expo: what each EAS build profile is for, who can install it, how it is signed and which one goes to the stores.
- AAB vs APK: Android App Bundle or package fileAAB vs APK: the Android App Bundle Google Play requires for new apps against the APK a phone installs, compared on size, signing and sideloading.
- Deep link vs universal linkDeep link vs universal link: custom scheme links against verified https links that open an app on iPhone and Android, with what happens without the app.
- What is EAS Build?What is EAS Build? The Expo cloud service that compiles your React Native app for iPhone and Android, with EAS Submit sending it to the stores. Steps and needs.
Written and checked by the OneCraft team. Last checked .