Use EAS Build to create development clients for testing native code changes on physical devices. Use this for creating custom Expo Go clients for testing branches of your app.
Important: When Development Clients Are Needed
Only create development clients when your app requires custom native code. Most apps work fine in Expo Go.
You need a dev client ONLY when using:
- Local Expo modules (custom native code)
- Apple targets (widgets, app clips, extensions)
- Third-party native modules not in Expo Go
Try Expo Go first with
. If everything works, you don't need a dev client.
EAS Configuration
Ensure
has a development profile:
json
{
"cli": {
"version": ">= 16.0.1",
"appVersionSource": "remote"
},
"build": {
"production": {
"autoIncrement": true
},
"development": {
"autoIncrement": true,
"developmentClient": true
}
},
"submit": {
"production": {},
"development": {}
}
}
Key settings:
- - Bundles expo-dev-client for development builds
- - Automatically increments build numbers
appVersionSource: "remote"
- Uses EAS as the source of truth for version numbers
Building for TestFlight
Build iOS dev client and submit to TestFlight in one command:
bash
eas build -p ios --profile development --submit
This will:
- Build the development client in the cloud
- Automatically submit to App Store Connect
- Send you an email when the build is ready in TestFlight
After receiving the TestFlight email:
- Download the build from TestFlight on your device
- Launch the app to see the expo-dev-client UI
- Connect to your local Metro bundler or scan a QR code
Building Locally
Build a development client on your machine:
bash
# iOS (requires Xcode)
eas build -p ios --profile development --local
# Android
eas build -p android --profile development --local
Local builds output:
- iOS: file
- Android: or file
Installing Local Builds
Install iOS build on simulator:
bash
# Find the .app in the .tar.gz output
tar -xzf build-*.tar.gz
xcrun simctl install booted ./path/to/App.app
Install iOS build on device (requires signing):
bash
# Use Xcode Devices window or ideviceinstaller
ideviceinstaller -i build.ipa
Install Android build:
Building for Specific Platform
bash
# iOS only
eas build -p ios --profile development
# Android only
eas build -p android --profile development
# Both platforms
eas build --profile development
Checking Build Status
bash
# List recent builds
eas build:list
# View build details
eas build:view
Using the Dev Client
Once installed, the dev client provides:
- Development server connection - Enter your Metro bundler URL or scan QR
- Build information - View native build details
- Launcher UI - Switch between development servers
Connect to local development:
bash
# Start Metro bundler
npx expo start --dev-client
# Scan QR code with dev client or enter URL manually
Troubleshooting
Build fails with signing errors:
Clear build cache:
bash
eas build -p ios --profile development --clear-cache
Check EAS CLI version: