Mobile App Release Guide
March 24, 2026 ยท View on GitHub
Prerequisites
-
Expo Account: Login to EAS
npx eas login -
Apple Developer Account: Ensure you're enrolled in Apple Developer Program
-
App Store Connect: Create app listing (one-time setup)
One-Time Setup
1. Initialize EAS
cd packages/mobile
npx eas init
This creates a project in your Expo account and updates app.json with your projectId.
2. Update app.json
Set your own values:
{
"expo": {
"owner": "your-expo-username",
"ios": {
"bundleIdentifier": "com.yourdomain.codecast"
},
"extra": {
"eas": {
"projectId": "your-project-id-from-eas-init"
}
}
}
}
3. Create App Store Connect Listing
- Go to App Store Connect
- Click "Apps" > "+" > "New App"
- Fill in:
- Platform: iOS
- Name: Codecast (or your chosen name)
- Primary Language: English (U.S.)
- Bundle ID:
com.yourdomain.codecast - SKU:
codecast-ios-001 - User Access: Full Access
- Copy the Apple ID (10-digit number from app page URL)
- Set as
ASC_APP_IDenv var for EAS submit
4. Configure EAS Credentials
cd packages/mobile
npx eas credentials
Choose "iOS" > "production" and follow prompts to generate:
- Distribution Certificate
- Provisioning Profile
EAS manages these automatically with your Apple Team ID.
5. Set Environment Variables
For cloud builds, set secrets via EAS:
npx eas secret:create --name EXPO_PUBLIC_CONVEX_URL --value "https://convex.yourdomain.com" --scope project
npx eas secret:create --name APPLE_ID --value "you@example.com" --scope project
npx eas secret:create --name ASC_APP_ID --value "1234567890" --scope project
npx eas secret:create --name APPLE_TEAM_ID --value "XXXXXXXXXX" --scope project
Build Commands
cd packages/mobile
# Development build (simulator)
bun run build:dev
# Preview build (internal testing via TestFlight)
bun run build:preview
# Production build
bun run build:prod
# Submit latest build to App Store
bun run submit:ios
# Build + auto-submit in one command
bun run release:ios
Release Process
TestFlight (Internal Testing)
-
Build preview:
bun run build:preview -
Submit to TestFlight:
bun run submit:ios -
In App Store Connect:
- Go to TestFlight tab
- Add internal testers
- Build will be available after processing (~10-30 min)
App Store Release
-
Complete App Store listing in App Store Connect:
- Screenshots (6.7" and 5.5" required)
- App description, keywords, support URL
- Privacy policy URL
- Age rating questionnaire
- App category
-
Build and submit:
bun run release:ios -
In App Store Connect:
- Select the build for release
- Submit for review
-
Wait for Apple review (1-3 days typically)
OTA Updates
Push JavaScript updates without a new App Store binary:
bun run update:preview # TestFlight channel
bun run update:production # Production channel
Version Management
EAS manages version incrementing automatically via appVersionSource: "remote" in eas.json.
To manually set version, update app.json:
{
"expo": {
"version": "1.1.0"
}
}
Build numbers auto-increment per build.
Troubleshooting
Credentials Issues
npx eas credentials --platform ios
Build Failures
Check build logs at your Expo dashboard: https://expo.dev/accounts/<your-username>/projects/codecast/builds
Stuck Submission
npx eas submit --platform ios --id <build-id>