OTA Updates: Ship JS Fixes Without App Store Review
Over-the-Air (OTA) updates let you ship JavaScript, styling, and image changes directly to users, bypassing app store review. Use it to fix JS bugs or tweak UI between releases. The footgun: you can't update native code or change permissions this way.
WHY IT EXISTS App store review cycles are slow. A small UI bug or typo that would be a quick fix on the web could take days to deploy to a mobile app. Over-the-Air (OTA) updates solve this by allowing developers to push changes to the non-native parts of an app directly to users, bypassing the store.
THE MENTAL MODEL Think of your React Native app as a native shell that loads a JavaScript bundle. An OTA update is like shipping a new version of that JS bundle without rebuilding the entire shell. The native code on the user's device remains unchanged, but it loads new logic, UI, and assets on its next launch. It's a way to trade the ability to change native code for deployment speed.
HOW IT WORKS When you build your app with a library like expo-updates, the app is configured to check a specific URL for new bundles. Using a service like Expo Application Services (EAS), you run a command like eas update. This bundles your current JavaScript and assets and uploads them to EAS's cloud service. The next time a user opens your app, it can check for an update, download the new bundle in the background, and apply it on the subsequent launch.
WHEN TO USE IT Use OTA updates for rapid fixes and improvements that don't touch native code. This includes fixing bugs in your JavaScript logic, correcting typos, updating translations, changing UI styling or screen layouts, and pushing new images or other assets. It's also great for rolling out features to a small percentage of users or for internal testing before a full release.
WHEN NOT TO USE IT Do not use OTA updates for any change that requires a new app binary. This includes changing native code or adding new native dependencies, updating app permissions (like camera or location access), or upgrading the Expo SDK version. These changes always require a full rebuild and submission to the App Store and Google Play. Attempting to bypass this is a common footgun that will lead to crashes or broken functionality.
ONE CANONICAL EXAMPLE A user reports a critical bug where the login button is misaligned, preventing them from logging in. The fix is a one-line style change. Instead of waiting days for an app store review, you make the change, run eas update --channel production --message "Fix login button alignment", and publish. Most users will receive the fix the next time they open the app, resolving the issue in minutes instead of days.
Read the original → docs.expo.dev
Get five bites like this every day.
Tezvyn delivers a daily feed of 60-second tech bites with quizzes to lock in what you learn.