Deploying Your App
Overview
This guide covers deploying your app to the Apple App Store and Google Play Store using Expo Application Services (EAS).
Prerequisites
Required Accounts
Apple Developer Account ($99/year)
- developer.apple.com
- Required for iOS App Store
Google Play Developer Account ($25 one-time)
- play.google.com/console
- Required for Google Play Store
Expo Account (free)
- expo.dev
- Create at:
npx expo register
Install EAS CLI
bash
npm install -g eas-cliLogin to Expo
bash
eas loginInitial Setup
Step 1: Configure EAS
bash
eas build:configureThis creates eas.json in your project:
json
{
"cli": {
"version": ">= 5.0.0"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"preview": {
"distribution": "internal"
},
"production": {}
},
"submit": {
"production": {}
}
}Step 2: Update app.json
json
{
"expo": {
"name": "Your Store Name",
"slug": "your-store",
"version": "1.0.0",
"ios": {
"bundleIdentifier": "com.yourcompany.yourstore",
"buildNumber": "1"
},
"android": {
"package": "com.yourcompany.yourstore",
"versionCode": 1
}
}
}Building for iOS
Build for App Store
bash
eas build --platform ios --profile productionFirst time setup:
- EAS will ask to create Apple credentials
- Follow the prompts to authenticate
Build for TestFlight (Preview)
bash
eas build --platform ios --profile previewSubmit to App Store
bash
eas submit --platform iosBuilding for Android
Build for Play Store
bash
eas build --platform android --profile productionFirst time:
- Creates upload keystore (keep this safe!)
- Follow prompts for configuration
Build APK (for testing)
Add to eas.json:
json
{
"build": {
"preview": {
"android": {
"buildType": "apk"
}
}
}
}Then:
bash
eas build --platform android --profile previewSubmit to Play Store
bash
eas submit --platform androidBuild Both Platforms
bash
eas build --platform all --profile productionVersion Management
Before Each Release
Update in app.json:
json
{
"expo": {
"version": "1.1.0",
"ios": {
"buildNumber": "2"
},
"android": {
"versionCode": 2
}
}
}- version: User-visible version (1.0.0, 1.1.0, etc.)
- buildNumber/versionCode: Internal build number (increment each build)
App Store Listings
Required Assets
- Screenshots: Multiple sizes for different devices
- App Icon: 1024x1024 PNG
- Description: Short and long descriptions
- Keywords: Relevant search terms
- Privacy Policy URL: Required for both stores
iOS App Store
- Go to App Store Connect
- Create new app
- Fill in app information
- Upload build from EAS
- Submit for review
Google Play Store
- Go to Google Play Console
- Create new app
- Complete store listing
- Upload AAB from EAS
- Submit for review
Environment Variables for Builds
Using EAS Secrets
bash
eas secret:create --name APP_API_URL --value "https://mystore.com/api/v1"
eas secret:create --name APP_SITE_URL --value "https://mystore.com"
eas secret:create --name APP_NAME --value "Your Store Name"In eas.json
json
{
"build": {
"production": {
"env": {
"APP_API_URL": "https://mystore.com/api/v1",
"APP_SITE_URL": "https://mystore.com",
"APP_NAME": "Your Store Name"
}
}
}
}Over-the-Air Updates
Update JavaScript without app store review:
bash
eas update --branch production --message "Bug fixes"Configure in app.json:
json
{
"expo": {
"updates": {
"url": "https://u.expo.dev/your-project-id"
},
"runtimeVersion": {
"policy": "sdkVersion"
}
}
}Troubleshooting
Build Failed
- Check build logs on expo.dev
- Verify app.json configuration
- Ensure valid credentials
Submission Rejected
Common reasons:
- Missing privacy policy
- Incomplete metadata
- Guideline violations
- Bug reports from review
Credentials Issues
bash
# Clear credentials and reconfigure
eas credentialsDeployment Checklist
Before Submission
- [ ] Test on real devices
- [ ] Verify all features work
- [ ] Check performance
- [ ] Review app size
- [ ] Update version numbers
- [ ] Prepare store listings
- [ ] Create screenshots
- [ ] Write descriptions
- [ ] Set up privacy policy
After Submission
- [ ] Monitor review status
- [ ] Respond to reviewer questions
- [ ] Plan next updates
Need Help?
- Check EAS Documentation
- Read the Troubleshooting Guide
- Contact support for assistance
