TestFlight Introduction

What TestFlight Is

TestFlight lets you distribute builds to real users for testing before release. It solves the core problems of:

  • Real-device verification: push, camera, location, performance, and review paths that the simulator can’t cover.
  • Small-scale staged rollout: let a small group try before everyone, lowering the cost of finding problems.
  • Collecting feedback: testers can give feedback directly in the TestFlight app, and crashes upload automatically.

Compared to Ad Hoc, TestFlight doesn’t require registering device UDIDs — testers just install the TestFlight app and accept an invite, making management far easier.

Two Testing Methods

AspectInternal TestingExternal Testing
AudienceTeam members (dev, QA, product)External real users / customers
Limit100 members10,000 testers
Requires reviewNo (Beta App Review)Yes (first build of the version)
InvitationAdd member emailsEmail invite / public link
Testers must be team membersYesNo
Feedback entryIn TestFlight appSame

Basic Workflow

A typical TestFlight test cycle:

  1. Build & upload: upload a build signed with a distribution certificate via Xcode, Transporter, or CI (fastlane).
  2. Wait for processing: the build shows “Processing” in App Store Connect, usually minutes to tens of minutes.
  3. Create a test group: create internal/external groups and attach the build.
  4. Add testers: internal adds team members; external adds emails or enables the public link.
  5. Install & test: testers install the TestFlight app, accept the invite, and download the build.
  6. Collect feedback: testers report issues in-app or via crash reports.
  7. Fix & iterate: fix issues, upload a new build, repeat.
  8. Submit: after testing passes, submit the final build to App Store review.

Build Expiration

TestFlight builds expire 90 days after upload. If you don’t keep uploading new builds within 90 days, old builds become invalid and testers can no longer install them. This is a hard constraint that enforces a steady iteration cadence.

Key Concepts

ConceptDescription
BuildA compiled artifact with a unique build number
Test GroupA set of testers, attachable to specific builds
Beta App ReviewThe review step for external testing, different from full review
Export ComplianceExport compliance declaration, involving encryption
TestFlight AppThe tester-side install/feedback tool (free on the App Store)

FAQ

  • TestFlight vs on-device debugging (development mode)? Development mode requires adding device UDIDs to profiles, for fast debugging; TestFlight uses distribution signing for near-production builds and doesn’t require UDID management.
  • Do testers need a developer account? No. External testers only need an Apple ID.
  • Is the external build the same one submitted for review? Not necessarily. Usually one build is used for external testing, and after passing you submit for full review (can be the same build).
  • Build stuck on Processing? Usually just wait; if it exceeds several hours, check distribution signing, export compliance, and upload errors.