Building and Releasing Expo Android Apps with EAS
Step-by-step setup and release workflow for Expo EAS Android builds - from initial configuration, signing credentials, and APK/AAB generation to submitting updates on Google Play and maintaining version consistency.
A complete guide to setting up and managing Expo EAS builds for Android using the CLI. It covers initial project configuration, credential management, build types (APK vs AAB), submission to Google Play, and versioning best practices for future releases.
📦1 - Install & Authenticate
- 1Install required CLIsbash
npm install -g expo-cli eas-cli - 2Login to Expo / EASbash
npx expo login # or eas login - 3Verify sessionbash
eas whoami
⚙️2 - Project Configuration
Run the EAS setup wizard once inside your Expo project root.
eas build:configureeas.json for your build profiles (e.g. preview and production).{
"build": {
"preview": {
"distribution": "internal",
"android": { "buildType": "apk" }
},
"production": {
"distribution": "store",
"android": { "buildType": "app-bundle" }
}
}
}🧩3 - Check app.json / app.config.js
Ensure Android identifiers, versioning, and permissions are defined.
{
"expo": {
"name": "App Name",
"slug": "app-slug",
"version": "1.0.0",
"android": {
"package": "com.appname.identifier",
"versionCode": 1,
"permissions": [
"ACCESS_FINE_LOCATION",
"ACCESS_COARSE_LOCATION",
"INTERNET"
],
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#ffffff"
}
}
}
}android.versionCode for every Play Store submission.🧱4 - Build Types & Commands
- 1Internal testing build (APK)bash
eas build -p android --profile preview - 2Play Store bundle (AAB)bash
eas build -p android --profile production - 3List past buildsbash
eas build:list
🔑5 - Signing Credentials
When prompted, let Expo manage credentials automatically.
eas credentials -p android📱6 - Testing the APK
- 1Manual installbash
# copy to device and install adb install -r yourapp.apk - 2Smoke-test checklist
- App launches without errors
- Registration & login flows work
- Network and API calls succeed
- Permissions prompt correctly
- Splash / icons display correctly
🚀7 - Submit to Google Play
After a successful AAB build, you can either upload manually via Play Console or submit directly from CLI.
eas submit -p android --latest- Opt into Play App Signing (recommended)
- Complete store listing & content rating
- Add release notes for each locale (e.g.
en-ZA) - Roll out to Internal Testing track first
🔄8 - Update Cycle & Versioning
- 1Bump versionsjson
"version": "1.0.1", "android": { "versionCode": 2 } - 2Rebuild & submitbash
eas build -p android --profile production eas submit -p android --latest - 3Check buildsbash
eas build:list
eas update to push over-the-air updates without rebuilding.🧠9 - Common Gotchas
- Android 9+ blocks HTTP (cleartext). Use HTTPS or add a network security config via
expo-build-properties. - Android 13+ requires runtime permission for
POST_NOTIFICATIONS. - Each Play Store update must increment
versionCode. - Don't delete Expo-managed keystores unless you've exported a backup.
Filed under: React Native, Expo, EAS Builds, Android, Play Store, Deployment, Versioning