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 npx expo start. If everything works, you don't need a dev client.
EAS Configuration
Ensure eas.json has a development profile:
{
"cli": {
"version": ">= 16.0.1",
"appVersionSource": "remote"
},
"build": {
"production": {
"autoIncrement": true
},
"development": {
"autoIncrement": true,
"developmentClient": true
}
},
"submit": {
"production": {},
"development": {}
}
}
Key settings:
- •
developmentClient: true- Bundles expo-dev-client for development builds - •
autoIncrement: true- 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:
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:
# iOS (requires Xcode) eas build -p ios --profile development --local # Android eas build -p android --profile development --local
Local builds output:
- •iOS:
.ipafile - •Android:
.apkor.aabfile
Installing Local Builds
Install iOS build on simulator:
# 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):
# Use Xcode Devices window or ideviceinstaller ideviceinstaller -i build.ipa
Install Android build:
adb install build.apk
Building for Specific Platform
# 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
# 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:
# Start Metro bundler npx expo start --dev-client # Scan QR code with dev client or enter URL manually
Troubleshooting
Build fails with signing errors:
eas credentials
Clear build cache:
eas build -p ios --profile development --clear-cache
Check EAS CLI version:
eas --version eas update