This project is already configured for EAS Update:
expo-updatesis installed.updates.urlpoints to the Expo project.runtimeVersion.policyis set toappVersion.- EAS build channels are defined in
eas.json.
Use a real EAS build to test OTA updates. Expo Go will not receive updates from your project channel.
For preview testing on both platforms:
npm run eas:build:previewIf you want one platform only:
npm run eas:build:android:preview
npm run eas:build:ios:previewFor production-style testing, install builds created with:
eas build --profile production --platform android
eas build --profile production --platform iosChange something visible in the app, for example text on the Profile screen or Home screen.
Do not change native configuration for an OTA test.
For preview on both Android and iOS:
npm run eas:update:preview -- --message "Test OTA update"If you want one platform only:
npm run eas:update:android:preview -- --message "Android OTA test"
npm run eas:update:ios:preview -- --message "iOS OTA test"For production on both platforms:
npm run eas:update:production -- --message "Production OTA update"Open the Profile screen and check the OTA Updates card:
- Channel should match the build channel.
- Runtime should match the app version runtime.
- Update ID changes after a new OTA update is applied.
Tap Check for OTA update to fetch and apply the latest update manually.
- Because
runtimeVersion.policyusesappVersion, OTA updates only apply to builds with the same app version. - If you bump
expo.version, older builds will not receive the new OTA update. - If an update does not appear, verify that the installed binary and published update use the same channel and runtime version.
- The same JS update can be published to both platforms together, but only if both installed binaries are on a compatible runtime version.