TestFlight & Beta Distribution

iOS Development — Production & Publishing

Chapter 5 · TestFlight & Beta Distribution

Chapter 4's own Ad Hoc profile — device-limited, up to 100 registered UDIDs — is the mechanism real beta distribution used to run on before Apple built a dedicated tool for it. TestFlight is that dedicated tool: Apple's own real, official beta-testing platform, built specifically to remove the manual UDID/provisioning-profile burden Chapter 4 described.

Internal vs. External Testers: A Real, Verified Distinction

TestFlight draws a real, sharp line between two genuinely different kinds of tester, verified directly against Apple's own TestFlight documentation:

Internal TestersExternal Testers
WhoUp to 100 members of the actual development teamUp to 10,000 testers outside the team
Requires App Review?NoYes — Beta App Review
Real roles requiredAccount Holder, Admin, App Manager, Developer, or MarketingNone — any invited person
Invitation methodAdded directly to the team on App Store ConnectIndividual email invite, or a real public link
A Real, Verified Detail Worth Noticing
Internal testers can be set to automatically receive every new build — no manual re-invitation needed. External testers cannot skip Beta App Review even for a build that's already been through it once before: a real, new build submitted to an existing external test group is verified to be automatically sent for review again before it reaches those testers.

Beta App Review: What It Actually Checks

Beta App Review exists specifically to gate the moment a build first reaches anyone outside the actual development team. The real requirement, verified directly: the very first build offered to external testers must already be approved before those testers can install it — a genuine, real checkpoint, distinct from (and lighter-weight than) the full App Store review Chapter 6 covers next.

Build Expiration

A TestFlight build doesn't stay installable forever — it expires after a real, fixed window, after which testers on that build must update to a newer one to keep using the app at all. This is a deliberate, real safeguard: it keeps testers from running an old, unmaintained build indefinitely once a project has moved on.

Why This Matters in Practice
A beta test that goes quiet for a couple of months genuinely risks every tester's own build silently expiring in the background — a real, common source of "the app just stopped working" reports that has nothing to do with a bug in the code at all.

Getting a Build Into TestFlight

A build reaches TestFlight through the exact same real Archive step Chapter 4's own signing machinery underpins — Xcode builds and signs the app using a real Apple Distribution certificate, then uploads it directly to App Store Connect.

// Product → Archive in Xcode, then, from the Organizer window: // 1. Select the new archive // 2. Distribute App → App Store Connect → Upload // 3. Xcode signs the build with the real Apple Distribution certificate // from Chapter 4, using the matching App Store provisioning profile // 4. The build appears in App Store Connect's TestFlight tab // once Apple finishes real, automated processing

Hands-On Exercises

Exercise 1

Explain, in your own words, why an internal tester never triggers Beta App Review while an external tester always does, connecting this back to the real trust boundary the review exists to protect.

📄 View solution
Exercise 2

A team wants to invite 500 outside beta testers using a public link rather than 500 individual email invitations. Explain whether this is possible under TestFlight's own real tester categories, and why.

📄 View solution
Exercise 3

Explain, in your own words, how Chapter 4's own Ad Hoc provisioning profile and TestFlight solve genuinely the same real problem (getting a build onto a real device outside the developer's own Mac) using two different mechanisms — and what real limitation of the Ad Hoc approach TestFlight removes.

📄 View solution

Chapter 5 Quick Reference

  • Internal testers — up to 100 team members, no App Review, automatic new-build delivery
  • External testers — up to 10,000 testers, real Beta App Review required, invited by email or a real public link
  • Beta App Review gates the first build any external tester ever sees, and re-triggers on every new build sent to an existing external group
  • A TestFlight build expires after a real, fixed window — testers must update to keep using the app
  • A build reaches TestFlight via Xcode's own Archive → Distribute App → App Store Connect flow, signed with the Chapter 4 Apple Distribution certificate