EAS Update

EAS Update: Over-the-Air Updates

Most of a React Native 36,878 app is a JavaScript bundle plus assets, and that part can change without a store release. The expo-updates library (57.0.23) checks an update server at launch, downloads a newer bundle in the background and uses it on the next launch; EAS Update 6,418 is Expo 6,418 's hosted server. The setup, from Expo's documentation (not run here, because it needs an Expo account):

Configuring and publishing an over-the-air update (not run here)Shell
npx expo install expo-updates
eas update:configure
eas update --channel preview --message "Fix price rounding in the cart"

update:configure adds runtimeVersion, updates.url and extra.eas.projectId to app.json, and a matching "channel" to the preview and production profiles. A build listens on its channel and accepts only updates with the same runtime version, which stands for its native code, so a bundle that needs a newer native module never reaches a binary that lacks it. JavaScript fixes, new screens, styles, copy, translations and images can ship over the air; new native libraries, new permissions and SDK upgrades need a new binary.

The Free plan covers 1,000 monthly active users, Starter 3,000 and Production 50,000. To host updates yourself, the protocol is open, with a reference server in custom-expo-updates-server (https://github.com/expo/custom-expo-updates-server 535 ). Microsoft's CodePush ended with App Center's retirement on 31 March 2025 and lives on as the self-hosted code-push-server (https://github.com/microsoft/code-push-server 986 ). Use updates for fixes, not to turn the reviewed app into a different one; OTA After Launch covers rollouts.