TestFlight Beta Testing for Expo Apps: Internal vs External Testers

DavidDavid August 5, 2026 8 min read
TestFlight beta testing workflow for an Expo app on iPhone
Original image, App Store Launch Club

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 TestingExternal Testing
Max testers10010,000
Who can joinPeople with a role on your App Store Connect teamAnyone with your public TestFlight link or an email invite
Review requiredNone - the build is available as soon as Apple finishes processing itApple's Beta App Review, a lighter pass than full App Store review
Best forYou, your co-founder, anyone helping you buildReal early users you want feedback from before you submit

Getting Your Expo Build Into TestFlight

  1. 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.
  2. 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.
  3. 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.
  4. 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

SymptomLikely CauseStarting Fix
Build stuck in 'Processing' for hoursApple's backend queue, or a missing export-compliance flagCheck App Store Connect for an export compliance prompt on the build itself
Internal testers do not see the new buildThey were added to the team but never assigned as a testerAdd them under Users and Access with the Tester role, not just general team access
External testers see a crash internal testers do notThe build used a development profile instead of the production oneConfirm the build was created with your production eas.json profile
Beta App Review rejects the submission before external testing startsMissing 'What to Test' notes or incomplete beta app informationFill 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.

Free app-building tips, straight to your inbox

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

David

Written by

David

Founder and app builder

Keep reading

App StoreLaunch

App Store Phased Release: How the 7-Day Rollout Works, How to Pause It, and When to Skip It

App Store phased release rolls a version update out to a random sample of users with automatic updates on over 7 days: 1 percent on day one, then 2, 5, 10, 20, 50 and 100. You can pause it for up to 30 days in total, or release to everyone with one button. Here is exactly what Apple says it does, what it does not do, and how I decide when an Expo app update should use it.

David 8 min
Read article
ExpoClaude Code

How to Add Haptic Feedback to Your Expo App

How to add haptic feedback to your Expo app: install expo-haptics, then call the right method for the moment - selectionAsync for pickers, impactAsync for taps and gestures, notificationAsync for outcomes. Here is the exact mapping, the reason the simulator stays silent, and the one rule that keeps haptics from feeling cheap.

David 8 min
Read article

Ready to build it yourself?

Join App Store Launch Club, the #1 community for building and launching apps, for $9/month.

← Back to the blog