Skip to main content
Once you’ve created a development build, you need to install it on your test devices. Installation methods vary by platform and distribution strategy.

iOS Installation

iOS Simulator

Simulator builds are the easiest to install for local development.
1

Build for simulator

In eas.json, ensure simulator is enabled:
eas.json
2

Download the build

If using EAS Build:
Download the .tar.gz file from the build URL.
3

Install on simulator

iOS Physical Devices

For testing on actual iPhones and iPads, you have several options.
1

Configure for TestFlight

eas.json
2

Build and submit

3

Invite testers

  1. Go to App Store Connect
  2. Select your app
  3. Go to TestFlight tab
  4. Add internal testers (up to 100)
  5. Testers receive an email invitation
4

Install via TestFlight app

Testers:
  1. Install TestFlight from App Store
  2. Accept invitation email
  3. Install the development build

Option 2: Ad-Hoc Distribution

For direct installation without TestFlight:
1

Register devices

Provide your device UDID. Find it:
  • Connect device to Mac
  • Open Finder > Device > Click serial number
  • Copy UDID
2

Build with registered devices

eas.json
3

Download and install

Download the .ipa file and:Using Xcode:
Using iOS App Installer:
  1. Download iOS App Installer
  2. Open the .ipa file
  3. Select connected device
  4. Click Install

Option 3: Xcode Direct Install

For local development:
Xcode handles code signing automatically for development.

iOS Development Certificates

For physical device installation, you need:
  1. Apple Developer Account ($99/year for teams, free for personal)
  2. Development Certificate (automatic with Xcode)
  3. Provisioning Profile (automatic with EAS or Xcode)

Android Installation

Android Emulator

Emulator installation is straightforward.
1

Start an emulator

Or start from Android Studio > Device Manager.
2

Build and install

Android Physical Devices

Android allows direct APK installation without app store distribution.
1

Enable developer options

On your Android device:
  1. Go to Settings > About Phone
  2. Tap “Build Number” 7 times
  3. Go back to Settings > System > Developer Options
  4. Enable “USB Debugging”
2

Build APK

eas.json
3

Install via USB

Option 2: Download from URL

Share APKs via URL:
1

Get build URL

Copy the APK download URL.
2

Install on device

On the Android device:
  1. Open the URL in a browser
  2. Download the APK
  3. Tap the downloaded file
  4. Allow installation from unknown sources if prompted
  5. Tap “Install”

Option 3: Internal Distribution

For team distribution:
1

Build AAB for Play Console

eas.json
2

Upload to Play Console

  1. Go to Google Play Console
  2. Select your app
  3. Go to Testing > Internal Testing
  4. Upload the AAB file
  5. Add testers via email

Android Signing

Debug builds use automatic debug keystore:
For custom signing:

Installation via Development Server

Once installed, load JavaScript from the dev server.

QR Code Method

1

Start dev server

A QR code appears in the terminal.
2

Scan QR code

Open your development build and:
  • iOS: Use camera app or dev client scanner
  • Android: Use dev client scanner

Manual URL Entry

In the dev client:
  1. Tap “Enter URL manually”
  2. Enter: exp://YOUR-IP:8081
  3. Tap “Connect”

LAN Connection

For local network development:
Requires:
  • Device and computer on same network
  • Firewall allows port 8081
  • No VPN interfering with local network

Troubleshooting

iOS: App Won’t Install

“Unable to Install App”

iOS: Untrusted Developer

On device:
  1. Go to Settings > General > VPN & Device Management
  2. Select your developer certificate
  3. Tap “Trust”

Android: Installation Blocked

“Install blocked for security”
  1. Go to Settings > Apps > Special Access
  2. Select “Install unknown apps”
  3. Enable for your browser or file manager

Android: ADB Not Found

Can’t Connect to Dev Server

  1. Check firewall: Allow port 8081
  2. Try tunnel mode: npx expo start --tunnel
  3. Verify same network: Device and computer on same WiFi
  4. Check URL: Should be exp://IP:8081 not http://

Build Expires (iOS TestFlight)

TestFlight builds expire after 90 days:

Managing Multiple Builds

Build Channels

Test different versions simultaneously:
eas.json

Build Versions

Track builds with version numbers:
app.json
Auto-increment with EAS:
eas.json

Next Steps

Start Debugging

Learn how to debug your development build

Dev Tools

Explore the dev tools and inspector

Testing

Set up automated testing

Error Handling

Handle errors in development