¶ Build
npx eas-cli@latest build --profile production --platform android
npx eas-cli@latest build --profile production --platform ios
npx eas-cli@latest build --profile production --platform ios
The app is built with EAS Build and sent to the stores with EAS Submit. A release is only in staff hands once the store makes it available, so the order of steps matters, especially when an update is made required.
Defined in eas.json.
| Profile | Produces | Android APK updater | Use for |
|---|---|---|---|
development | Development build, internal | On | Developers testing on a phone. |
preview | Android APK, internal | On | Internal testing. |
apk | Android APK | On | Installing outside the Play Store. |
production | Store builds | Off | App Store and Play Store releases. |
| Number | Where | Who changes it |
|---|---|---|
Version, for example 1.5.0 | app.json expo.version for Android, and MARKETING_VERSION in the iOS project for iOS (Debug and Release) | You, by hand, on both platforms. The two must be the same. |
| Build number | Stored by EAS | EAS, automatically on every production build. Do not change it. |
eas update.
Changes to native packages, permissions, plugins, app links, app.json, or app.config.js always need a new native build.
The app can block an old version until staff update. It is controlled by the app_versions table in Supabase, one row per platform.
| Rule | Why |
|---|---|
The version in app.json, the iOS MARKETING_VERSION, and latest_version in app_versions must all be identical. | If they differ, the new build blocks itself. |
Only update app_versions after the store version is live. | Otherwise staff tap Update, get the old version from the store, and are locked out. |
| If no row is active for a platform, nothing is blocked. | No configuration means no requirement. |
| If the app cannot reach the server when it starts, it lets the staff member in, unless it already knows the version is blocked. | A network problem should not lock everyone out. |
If a new version blocks itself, check the three version numbers match. If staff are locked out, turn it off, wait for the store, and try again.
A separate, Android-only way to update APKs installed outside the Play Store.
development, preview, and apk profiles, and off in production.
Turning it on or off changes Android permissions, so it needs a new native build.
Hosting operations are in FIREBASE_HOSTING_TRANSFER_GUIDE.md in the mobile repository.