What TestFlight Actually Does
TestFlight is Apple's official beta distribution app, built into App Store Connect. You upload a signed build, invite testers by email or a public link, and they install the real native app on their own iPhone through the TestFlight app, not a browser or a simulator. For an Expo app, TestFlight is the bridge between eas build and eas submit - the step where you find out whether the app actually works on hardware you do not control, before Apple's full App Store review ever sees it.
You need an active Apple Developer Program membership to use TestFlight. It is $99 a year and it is also what gives you access to App Store Connect, code signing, and App Store submission itself, so it is not an extra cost specific to beta testing.
Internal Testing vs External Testing
TestFlight's two testing tiers
| Internal Testing | External Testing | |
|---|---|---|
| Max testers | 100 | 10,000 |
| Who can join | People with a role on your App Store Connect team | Anyone with your public TestFlight link or an email invite |
| Review required | None - the build is available as soon as Apple finishes processing it | Apple's Beta App Review, a lighter pass than full App Store review |
| Best for | You, your co-founder, anyone helping you build | Real early users you want feedback from before you submit |
Getting Your Expo Build Into TestFlight
- Run `eas build --platform ios` using a production build profile in eas.json. This produces the signed .ipa that TestFlight actually runs, not a development client.
- Run `eas submit --platform ios` once the build finishes. EAS uploads it directly to App Store Connect, and it appears in TestFlight after Apple finishes processing the build.
- Add internal testers straight in App Store Connect under Users and Access. No review needed - they get notified and can install through the TestFlight app right away.
- For external testers, create a public TestFlight link or add testers by email, fill in the 'What to Test' notes, and submit for Beta App Review before the build goes out to that group.
What to Ask Testers to Actually Check
A tester who just opens the app and closes it again tells you almost nothing. Give them specific things to try, tied to the parts of the app that behave differently outside your own dev environment.
- Complete the full onboarding flow, not just the first screen.
- Trigger a sandbox purchase if the app has a paywall or subscription, and confirm it unlocks the right content.
- Accept or deny the push notification permission prompt and confirm the app does not break either way.
- Try any deep links or shared content flows - these depend on native configuration that Expo Go does not fully replicate.
- Use TestFlight's built-in feedback tool to send an annotated screenshot the moment something looks wrong, instead of describing it from memory later.
Common TestFlight Problems
TestFlight problems and where to look first
| Symptom | Likely Cause | Starting Fix |
|---|---|---|
| Build stuck in 'Processing' for hours | Apple's backend queue, or a missing export-compliance flag | Check App Store Connect for an export compliance prompt on the build itself |
| Internal testers do not see the new build | They were added to the team but never assigned as a tester | Add them under Users and Access with the Tester role, not just general team access |
| External testers see a crash internal testers do not | The build used a development profile instead of the production one | Confirm the build was created with your production eas.json profile |
| Beta App Review rejects the submission before external testing starts | Missing 'What to Test' notes or incomplete beta app information | Fill in the beta review information fields in App Store Connect and resubmit |
After the Beta: What Comes Next
TestFlight is not the finish line, it is the checkpoint before you submit for real. Once your testers have gone through onboarding, the paywall, and the core flows without a fresh wave of crash reports, you move to the actual App Store submission - the same build pipeline, a different destination. Everything you fixed because a tester caught it is one less thing Apple's App Store review can flag.
Join the App Store Launch Club at appstorelaunchclub.com for $9/month for the full pipeline from first EAS build to a live App Store listing.
Short, practical drops on app ideas, validating fast, store listings, and passing app review. No spam, unsubscribe anytime.
Frequently asked questions
Do I need TestFlight if I already tested in Expo Go?
Yes. Expo Go is a development tool that runs your JavaScript inside Apple's own Expo Go container, not the actual signed binary you will ship. TestFlight runs the real production-equivalent build made by EAS Build, so it catches store-specific and native-configuration issues that Expo Go cannot surface, like code signing, entitlements, and universal link handling.
How many testers can I have on TestFlight?
Up to 100 internal testers, who need a role on your App Store Connect team and no review. Up to 10,000 external testers, invited by email or a public link, which requires Apple's Beta App Review before the build reaches them.
Does TestFlight cost extra?
No. TestFlight is included with your Apple Developer Program membership, which is $99 a year. There is no separate fee for beta testing itself.
How long do TestFlight builds last before they expire?
90 days from the date you upload the build. After that, testers can no longer open it through TestFlight and you need to upload a fresh build to keep the beta running.
Is there an Android equivalent to TestFlight?
Google Play has its own beta system built around closed testing tracks, with different rules than TestFlight - including a mandatory 12-tester, 14-day minimum before you can move to production. It is a separate process worth planning for if you are shipping to both stores.
Where can I learn the full submission pipeline, not just TestFlight?
The App Store Launch Club covers the entire path from EAS Build through TestFlight to a live App Store and Google Play listing. Join at appstorelaunchclub.com for $9/month.
Last reviewed by David on August 5, 2026


