EAS Build and Submit Checklist
Take an Expo React Native app from development client to internal testers to App Store Connect and Google Play without turning release day into a guessing game.
The short version
Create separate development, preview, and production build profiles, let EAS manage credentials unless your team has a reason not to, test an internal build, then submit the exact production binary with EAS Submit.
EAS Build produces the installable app binary. EAS Submit uploads that binary to Apple or Google. Keep those two steps boring and repeatable.
1. Lock your app identity
Before the first store build, decide the iOS bundle identifier and Android package name. Changing them later means creating a different app from the stores' point of view.
{
"expo": {
"ios": { "bundleIdentifier": "com.example.myapp" },
"android": { "package": "com.example.myapp" }
}
}Use reverse-domain names you control. Avoid temporary names, client names that may change, or identifiers tied to a feature rather than the product.
2. Define practical build profiles
A three-profile setup covers most teams: development for native debugging, preview for testers, and production for stores.
{
"build": {
"development": {
"developmentClient": true,
"distribution": "internal",
"environment": "development"
},
"preview": {
"distribution": "internal",
"environment": "preview"
},
"production": {
"autoIncrement": true,
"environment": "production"
}
},
"submit": {
"production": {}
}
}Use preview builds for stakeholder testing. Use production builds when you are ready to create a binary that can go to store review.
3. Let EAS manage credentials
EAS can create and store Android keystores, iOS distribution certificates, and provisioning profiles. For most Expo projects, that is the easiest and safest route.
eas login
eas build:configure
eas credentialsIf your company already manages credentials centrally, use your existing process. Otherwise, let EAS do the plumbing and record who owns the Expo account.
4. Build for internal testers first
Internal distribution catches native config mistakes before store submission.
eas build --profile preview --platform ios
eas build --profile preview --platform android- Install the build on a fresh device.
- Test login, push notifications, purchases, deep links, and offline startup.
- Check that staging or production Firebase projects are selected intentionally.
- Confirm app icons, splash screens, permission prompts, and dark mode.
5. Create production binaries
When preview testing is clean, build production. Android produces an AAB for Google Play; iOS produces an IPA for App Store Connect.
eas build --profile production --platform allDo not change code between the production build and submission unless you intentionally create a new build. The goal is to submit the exact binary that passed your release checks.
6. Submit with EAS Submit
After a successful production build, submit it to the stores.
eas submit --profile production --platform ios --latest
eas submit --profile production --platform android --latestApple submission needs App Store Connect access. Google Play submission needs Play Console access and an app that has been created in the console. EAS can guide the credential setup, but the store account permissions still have to exist.
7. Store listing checks
- App name, subtitle, short description, and full description are final.
- Screenshots match the current UI and required device sizes.
- Privacy policy URL works on mobile.
- Data safety and privacy nutrition answers match what the app actually collects.
- Demo account is available if reviewers need login.
- Export compliance, content rating, and age rating are complete.
8. Have a rollback plan
Mobile rollback is slower than web rollback. Have a plan before you need it.
- Use feature flags for risky server-controlled features.
- Keep backend APIs backward compatible with the previous app version.
- Use EAS Update only for JavaScript-safe changes that match the runtime version.
- Prepare a hotfix build profile and know who can approve expedited review.