Dev Build Guide
Development Build & Testing Guide
Quick Start
1. Build Development Client
Development client allows testing native features (AdMob, RevenueCat) that don't work in Expo Go.
# iOS Development Build
eas build --profile development --platform ios
# Android Development Build
eas build --profile development --platform android
# Both platforms
eas build --profile development --platform all
2. Install on Device
iOS (Simulator)
# Download and install on simulator
eas build:run --platform ios
iOS (Physical Device)
- Download the build from EAS dashboard
- Install via Xcode or Apple Configurator 2
Android
# Download APK and install
eas build:run --platform android
Build Profiles (eas.json)
Your eas.json should have these profiles:
{
"cli": {
"version": ">= 5.0.0"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal",
"ios": {
"simulator": true
}
},
"development-device": {
"developmentClient": true,
"distribution": "internal"
},
"preview": {
"distribution": "internal",
"android": {
"buildType": "apk"
}
},
"production": {
"autoIncrement": true,
"android": {
"buildType": "app-bundle"
}
}
},
"submit": {
"production": {
"ios": {
"appleId": "your@email.com",
"ascAppId": "YOUR_APP_ID",
"appleTeamId": "YOUR_TEAM_ID"
},
"android": {
"serviceAccountKeyPath": "./pc-api-key.json",
"track": "internal"
}
}
}
}
Testing Checklist
Before Building
- All TypeScript errors fixed
- No console errors in Metro
-
npx expo-doctorpasses - All dependencies up to date
Test on Development Build
Run these tests on the development build:
Core Functionality
- App launches without crash
- Home screen loads
- Quiz works end-to-end
- Practice works end-to-end
- Progress saves correctly
- Language switching works
Monetization
- Paywall displays correctly
- All 3 pricing tiers show
- "Restore Purchases" button visible
- Purchase flow starts (sandbox)
- Purchase completes successfully
- Premium features unlock after purchase
Ads (Free Users)
- Banner ad shows on home screen
- Interstitial ad shows after quiz
- Ads hidden for premium users
Edge Cases
- App works offline (cached data)
- No crash when IAP unavailable
- No crash when ads fail to load
- No crash on slow network
RevenueCat Sandbox Testing
iOS Sandbox
-
Create Sandbox Tester account:
- App Store Connect → Users and Access → Sandbox Testers
- Add new tester with unique email
-
On device:
- Settings → App Store → Sandbox Account
- Sign in with sandbox account
-
Test purchases:
- Sandbox purchases don't charge real money
- Subscriptions renew every few minutes (for testing)
Android Test Purchases
-
Add license testers:
- Google Play Console → Setup → License Testing
- Add tester email addresses
-
Test purchases:
- Test users see "TEST PURCHASE" badge
- No real charges
Production Build
iOS Production
# Build for App Store
eas build --profile production --platform ios
# Submit to App Store Connect
eas submit --platform ios --latest
Android Production
# Build AAB for Google Play
eas build --profile production --platform android
# Submit to Google Play (internal track)
eas submit --platform android --latest
Pre-Submit Final Checks
iOS
- App icon displays correctly
- Splash screen works
- All screenshots uploaded
- Privacy Policy URL valid
- Age rating completed
- Export compliance answered
- All metadata filled
Android
- App icon displays correctly
- Feature graphic uploaded
- All screenshots uploaded
- Privacy Policy URL valid
- Data safety form complete
- Content rating completed
- Release notes written
Common Issues & Fixes
Build Fails
# Clear caches and rebuild
rm -rf node_modules
rm -rf ios/Pods
npm install
npx pod-install
eas build --profile development --platform ios --clear-cache
Credentials Issues
# Reset credentials
eas credentials --platform ios
eas credentials --platform android
Metro Bundler Issues
# Clear Metro cache
npx expo start --clear
Useful Commands
# Check EAS CLI version
eas --version
# Check build status
eas build:list
# View build logs
eas build:view [BUILD_ID]
# Cancel build
eas build:cancel [BUILD_ID]
# Open dashboard
eas open
# Doctor check
npx expo-doctor
# Update dependencies
npx expo install --check
Timeline
| Step | Duration |
|---|---|
| Development build | 15-30 min |
| Testing on device | 1-2 hours |
| Production build | 20-40 min |
| iOS review | 24-48 hours |
| Android review | 1-3 days |
Support
- EAS Build: https://docs.expo.dev/build/introduction/
- EAS Submit: https://docs.expo.dev/submit/introduction/
- RevenueCat: https://docs.revenuecat.com
- AdMob: https://developers.google.com/admob