Deployment
This skill covers deploying Expo applications across all platforms using EAS (Expo Application Services).
References
Consult these resources as needed:
- •./references/workflows.md -- CI/CD workflows for automated deployments and PR previews
- •./references/testflight.md -- Submitting iOS builds to TestFlight for beta testing
- •./references/app-store-metadata.md -- Managing App Store metadata and ASO optimization
- •./references/play-store.md -- Submitting Android builds to Google Play Store
- •./references/ios-app-store.md -- iOS App Store submission and review process
Quick Start
Install EAS CLI
bash
npm install -g eas-cli eas login
Initialize EAS
bash
npx eas-cli@latest init
This creates eas.json with build profiles.
Build Commands
Production Builds
bash
# iOS App Store build npx eas-cli@latest build -p ios --profile production # Android Play Store build npx eas-cli@latest build -p android --profile production # Both platforms npx eas-cli@latest build --profile production
Submit to Stores
bash
# iOS: Build and submit to App Store Connect npx eas-cli@latest build -p ios --profile production --submit # Android: Build and submit to Play Store npx eas-cli@latest build -p android --profile production --submit # Shortcut for iOS TestFlight npx testflight
Web Deployment
Deploy web apps using EAS Hosting:
bash
# Deploy to production npx expo export -p web npx eas-cli@latest deploy --prod # Deploy PR preview npx eas-cli@latest deploy
EAS Configuration
Standard eas.json for production deployments:
json
{
"cli": {
"version": ">= 16.0.1",
"appVersionSource": "remote"
},
"build": {
"production": {
"autoIncrement": true,
"ios": {
"resourceClass": "m-medium"
}
},
"development": {
"developmentClient": true,
"distribution": "internal"
}
},
"submit": {
"production": {
"ios": {
"appleId": "your@email.com",
"ascAppId": "1234567890"
},
"android": {
"serviceAccountKeyPath": "./google-service-account.json",
"track": "internal"
}
}
}
}
Platform-Specific Guides
iOS
- •Use
npx testflightfor quick TestFlight submissions - •Configure Apple credentials via
eas credentials - •See ./reference/testflight.md for credential setup
- •See ./reference/ios-app-store.md for App Store submission
Android
- •Set up Google Play Console service account
- •Configure tracks: internal → closed → open → production
- •See ./reference/play-store.md for detailed setup
Web
- •EAS Hosting provides preview URLs for PRs
- •Production deploys to your custom domain
- •See ./reference/workflows.md for CI/CD automation
Automated Deployments
Use EAS Workflows for CI/CD:
yaml
# .eas/workflows/release.yml
name: Release
on:
push:
branches: [main]
jobs:
build-ios:
type: build
params:
platform: ios
profile: production
submit-ios:
type: submit
needs: [build-ios]
params:
platform: ios
profile: production
See ./reference/workflows.md for more workflow examples.
Version Management
EAS manages version numbers automatically with appVersionSource: "remote":
bash
# Check current versions eas build:version:get # Manually set version eas build:version:set -p ios --build-number 42
Monitoring
bash
# List recent builds eas build:list # Check build status eas build:view # View submission status eas submit:list