TestFlight is Apple's built-in beta-testing service for iOS, iPadOS, tvOS, watchOS, and visionOS apps. Builds you upload to App Store Connect become available in the TestFlight app on the tester's device. It is the default path for getting a pre-release build into the hands of teammates or customers without going through full App Store review.
What TestFlight costs
TestFlight is free. Apple does not charge per tester, per build, or per install, and testers download the TestFlight app at no cost. What is not free is the ability to upload: builds reach TestFlight through App Store Connect, which requires an Apple Distribution certificate and an App Store provisioning profile, and Apple only issues those to a paid Apple Developer Program member at $99 USD per year. So TestFlight is free for developers who already have a membership, and out of reach for anyone on a free Apple ID.
- Free
- The TestFlight service, all 100 internal and 10,000 external tester slots, unlimited builds, and the tester-side TestFlight app.
- Paid
- The Apple Developer Program membership ($99 USD per year) that issues the distribution certificate and App Store profile needed to upload a build at all.
Internal vs external testers
- Internal testers
- Up to 100 people with an App Store Connect role on the team. Builds are available within minutes of upload and processing. No Beta App Review.
- External testers
- Up to 10,000 people invited by email or via a public link. The first build for an external group needs Beta App Review (usually less than 24 hours). Subsequent builds in the same train do not.
How it differs from Ad Hoc
- No 100-device-per-class cap. TestFlight is sized for thousands of testers.
- No UDID collection. Testers just have an Apple ID.
- Builds expire after 90 days, so you need a continuous release cadence.
- Requires an upload to App Store Connect (and a signed App Store provisioning profile).
TestFlight limits at a glance
| Limit | Value |
|---|---|
| Internal testers | Up to 100, each with an App Store Connect role |
| External testers | Up to 10,000 per app, by email or public link |
| Build availability | 90 days from upload, then the build expires |
| Beta App Review | First external build only, usually under 24 hours |
| Tester device info | No UDID collection; testers just need an Apple ID |
Public links and tester groups
External testers can be invited one at a time by email or through a public link that anyone can open to join, up to the 10,000-tester cap. Testers are organized into groups, and each group can receive a different build, which is how teams run a small canary group before opening a wider beta.
Invitation codes and how testers redeem them
There are two ways a tester gets in, and the difference matters when someone tells you their code does not work.
- Public link
- A URL of the form testflight.apple.com/join/XXXXXXXX. The eight characters after /join/ are the invitation code. Anyone with the link can join until the tester cap or your own enrolment limit is reached. Generated per tester group in App Store Connect.
- Email invitation
- You add a specific address in App Store Connect and Apple emails that person a View in TestFlight button. This invite is tied to their Apple Account and cannot be forwarded to somebody else.
In the TestFlight app itself, the Redeem option accepts the code portion of a public link, not the full URL. A tester who pastes the whole address gets an error, which is the single most common support question teams get about TestFlight invites.
- 1
Open TestFlight and tap Redeem
On iOS it is in the top-right of the Apps tab. On macOS it sits under the TestFlight menu.
- 2
Enter the code, not the link
Only the characters after /join/. If you were sent testflight.apple.com/join/aB3dE7Gh, the code is aB3dE7Gh.
- 3
Install the build
The app appears in the tester's list. Builds expire 90 days after upload, after which the tester needs a newer build rather than a new code.