TestFlight Setup
TestFlight serves as a beta testing platform for production builds. It’s particularly useful for:
- Testing production builds before App Store release
- Distributing beta versions to stakeholders
- Validating app behavior in production environment
Note: For testing development or staging environments, use development builds as described in the EAS Setup guide.
This guide will help you submit your Expo app to TestFlight using EAS Submit.
Prerequisites
Before proceeding, ensure you have:
- An Apple Developer account
- Your app already built with EAS Build (production build)
- App Store Connect setup completed
- App signing setup (certificates and provisioning profiles)
Understanding App Signing
While EAS handles most of the complexity for you, it’s good to understand the basics:
- Certificates: Digital signatures that identify you as an Apple Developer
- Development certificate: For building development versions
- Distribution certificate: For TestFlight and App Store builds
- Provisioning Profiles: Files that link your app, certificates, and deployment method
- Development profile: For testing on specific devices
- Distribution profile: For TestFlight and App Store distribution
Good news: EAS manages all of this automatically! When you run your first build, EAS will:
- Create necessary certificates
- Generate appropriate provisioning profiles
- Handle all the signing configuration
- Store everything securely in EAS servers
You only need to provide your Apple Developer account credentials when prompted.
Adding Test Devices
For development builds, devices need to be registered in your provisioning profile. EAS makes this easy:
eas device:create
This command will:
- Register your device with Apple
- Update your development provisioning profile
- Allow development builds to be installed on that device
Note: This is only needed for development/preview builds. TestFlight builds can be installed on any device.
Configuring for TestFlight
1. Update eas.json
Make sure your eas.json
has your apple developer app information
{
"submit": {
"production": {
"ios": {
"appleId": "your-apple-id@example.com",
"ascAppId": "REPLACE_WITH_YOUR_APP_ID",
"bundleIdentifier": "com.yourcompany.app"
}
}
}
}
2. Build for TestFlight
Create a production build for TestFlight:
eas build --platform ios --profile production
3. Submit to TestFlight
Once the build is complete:
eas submit -p ios
EAS will prompt you to select your production build for submission.
Managing TestFlight Distribution
TestFlight offers both internal and external testing capabilities. For most development teams, internal testing is the primary method used.
For information about external testing (public beta testing), check out Apple’s TestFlight documentation.
In order to setup TestFlight and have team members start testing the app:
- Log in to App Store Connect
- Navigate to your app > TestFlight
- Add internal or external testers
- Manage beta testing groups
Internal Testers
Internal testers are typically your team members and require special setup:
- User Access Setup (Required First):
- Go to App Store Connect > Users and Access
- Add team members with appropriate roles:
- At minimum, they need the “App Manager” or “Developer” role
- For TestFlight access, ensure “TestFlight” is enabled in their role permissions
- Team members must accept their invitation via email
- Adding Internal Testers:
- Go to App Store Connect > Your App > TestFlight > Internal Testing
- First time only: Click the + button to create an “Internal Testing” group
- Click on the Internal Testing group
- Click “Testers” tab and click the + button to add testers
- Only members previously added to Users and Access will appear here
- They’ll receive an email invitation to test your app
- Important Notes:
- Internal testers must have an Apple ID
- They must be added to Users and Access BEFORE they can be added as testers
- Internal testers can see all build versions
- They need to install TestFlight app on their devices and redeem the invitation:
- Accept email invitation from App Store Connect
- Install TestFlight from the App Store
- Open the invitation link again to add the app to TestFlight
Advantages of Internal Testing:
- Builds are available immediately (no Beta App Review required)
- Can test development features before external release
- Up to 100 internal testers allowed
- Testers can access all builds you upload
Promoting to Production
Once your TestFlight build has been thoroughly tested and you’re ready to release:
- Go to App Store Connect > Your App > Distribution
- Click “Add for Review” if this is your first version, or “+” (Add Version) for subsequent versions
- Complete the App Store submission information:
- App Store version information
- Screenshots and app preview
- Description and keywords
- Support URL
- Marketing URL (optional)
- Version Release notes
- Once all metadata is ready, you’ll be prompted to select a build
- Any build uploaded via EAS submit will be available
- Make sure your desired build has been uploaded and tested in TestFlight
- Submit for Review
Note: Make sure all your app’s metadata and assets are ready before submitting. The review process for App Store release is typically more thorough than TestFlight reviews.
Common Issues and Solutions
Build Rejection Issues
- Ensure your bundle identifier matches App Store Connect
- Verify your signing certificates are valid
- Check that your provisioning profile includes all necessary devices
Submission Issues
- Verify your Apple Developer account has the correct role
- Ensure your app meets Apple’s guidelines
- Check that your app’s privacy declarations are complete