Skip to content
Back to Blog
·9 min read

TestFlight checklist: from the first build to external testers

Internal and external testers, groups, public links, TestFlight App Review, test information, the 90-day expiry and why a build isn't available to testers.

TestFlight has two kinds of testers. Internal testers are people on your App Store Connect team, up to 100 of them, and they can test a build without any review once you add it to their group. External testers are anyone with an email invitation or your public link, up to 10,000 per app, and they only get a build after it passes TestFlight App Review. Every build can be tested for up to 90 days. Before external testing you need a beta app description, a feedback email and an answer to the encryption question. Most "my testers can't see the build" problems come down to one of a few statuses on the build, listed at the end.

Internal vs external testers

Internal testersExternal testers
WhoApp Store Connect users with access to your content (roles Account Holder, Admin, App Manager, Developer or Marketing)Anyone you invite by email or who joins through a public link
How manyUp to 100Up to 10,000 per app
Review neededNoYes, the first build added to an external group goes to TestFlight App Review
How they joinEmail invitation, accepted in the TestFlight app (or a redemption code on Apple TV)Email invitation or public link, accepted in the TestFlight app
Builds marked "TestFlight Internal Only"YesNo

Apple's TestFlight page adds two numbers that apply to both: testers can use your builds "on up to 30 devices", and "You can share up to 100 builds, and start testing multiple builds at once."

Someone who isn't on your App Store Connect team can't be added to an internal group. If you want a friend or customer to test without review, that isn't possible: outside your team, every tester is external.

Groups

Groups are how you hand out builds. Apple: "Groups are how you organize and distribute builds to testers." You can create several groups and give each one different builds.

  • Internal group first. "To create an external group for external testing, you must first create an internal group for internal testing."
  • One build at a time. When adding builds to a group, "You can add only one build at a time, but you can add more later."
  • New builds for internal groups. You can tick a checkbox on the internal group so Xcode delivers each new build to everyone in it. Without it, you add every build yourself. Builds made by Xcode Cloud always have to be added to groups by hand in App Store Connect.
  • Internal-only builds. A build uploaded as TestFlight Internal Only from Xcode or Xcode Cloud shows "internal" under the build number. It can only go to internal groups: "you can't submit them for external testing or to customers."
  • Removing a build. "If you remove a build from a group or from testing, testers currently using the build will continue to have access until they switch builds or choose to stop testing your app."

Apple's help pages don't state a maximum number of groups.

Public links

A public link lets people join an external group without you typing in their email.

  • Tester limit. Under Tester Limit you can enter "a number between 1 and 10,000" for how many people can join through that link.
  • Who can join. Either Open to Anyone or Filter by Criteria (by device or platform, with an OS version range: from, newer than or equal to, older than or equal to, or all supported). With criteria, "You need to add at least one criteria to invite testers."
  • Anyone can pass it on. "Keep in mind that anyone can share this link, so testers could potentially join your testing group even if you do not invite them directly."
  • You don't see who they are. Testers who join by public link show as anonymous; you still see their installation date, sessions and crashes.
  • When you are full, Apple suggests you "disable your link so people who try and join your beta will know it's no longer accepting new testers."

What goes to TestFlight App Review, and when

  • Only for external testing. Internal testers don't need a review. The build status Ready to Submit means: "Your build can be distributed to internal testers, or can be submitted to TestFlight App Review for external testing".
  • The first build needs a full review. Adding a build to an external group sends it for review. Apple: "The first build you submit requires a full review, but later builds for the same version might not." Apple doesn't say exactly which later builds skip a full review.
  • One build per version in review. "You can only have one build of each version in review at a time. Once that build is approved, you can submit additional builds."
  • Six per day. "You can submit up to six builds for TestFlight App Review within a 24-hour period."
  • What is reviewed. "Apple reviews the build and its accompanying metadata", against the App Review Guidelines.
  • After approval, users with the Admin role get an email. If you left the notify checkbox unticked when adding the build, "you must manually distribute the build to testers after it's approved".
  • If rejected, the build shows Rejected "and can no longer be used in TestFlight. To begin testing, upload a new build."

Apple doesn't publish how long TestFlight App Review usually takes.

Test information you have to fill in

On the TestFlight tab, Test Information (Account Holder, Admin or App Manager) is needed before external testing. Apple names these:

  • Beta App Description: "This field is required." It also appears in the invitation.
  • Feedback Email: where testers reach you from the TestFlight app, and the reply-to address on invitation emails. Apple's add-testers flow also asks for Contact Information if it's missing.
  • What to Test, per build: "enter what you want testers to focus on."
  • Beta app review information: Apple's TestFlight page says "your beta app description and beta app review information are required in order to share your beta with external testers." Apple's help pages don't list each field in it. If your app needs a sign-in, a working account for the reviewer is what Apple asks for in App Store submissions, so it makes sense here too.

The test information can be localized, and "You can update this information at any time". Apple's help pages don't give character limits for these fields; for the limits Apple does publish, see the App Store Connect limits tool.

The encryption question

Before a build can be tested, App Store Connect wants to know whether it uses encryption. If you haven't answered, the build shows Missing Compliance: "Your build is missing export compliance documentation. Action is needed." You answer by clicking Manage next to the build, or upload previously approved documentation.

To stop being asked for every build, Apple says you can declare encryption use in the app's Info.plist in Xcode, which "eliminates the need to answer encryption questions with each app submission." If you need approved documentation, Apple gives you a key value to put in Xcode for the same effect. The App encryption and export compliance tool helps you work out the answer and the Info.plist entry.

While documentation is with Apple, the status is Waiting for Export Compliance Review or In Compliance Review, and no action is needed.

Build expiry

  • "You can test a build for up to 90 days." After that its status is Expired: it "has passed its 90-day availability window."
  • You can end testing earlier with Expire Build on the build page (Account Holder, Admin or App Manager). After that, "The build no longer allows internal and external testers to install it." Apple's page doesn't say whether this can be undone, so treat it as final.
  • If you don't expire a build and then release that version, testers who were invited "will still be able to test your build even after it goes live on the App Store."

What testers see

  • They install the free TestFlight app, accept the email invitation or open the public link, then install your app, send feedback and get updates there. On Apple TV they can use a redemption code.
  • The invitation includes your beta app description and, if you have an approved version, your screenshots and app category (the App Information checkbox under Invitation Experience is on by default).
  • Testers on TestFlight 2.3 or later on iOS, macOS and visionOS can send feedback from the TestFlight app or by taking a screenshot in your beta app. tvOS testers and those on older versions of iOS send feedback to your feedback email. Crash logs come to you from TestFlight testers.
  • They download "thinned variants" of your app, and either the app or its App Clip can be installed on a device, not both at once.
  • For Mac apps, Apple says to build with Xcode 13 or later to use TestFlight for Mac.

Why a build is not available to testers

Check the status in the TestFlight tab first. Apple's build statuses:

StatusWhat it meansWhat to do
Missing ComplianceThe encryption question isn't answered.Answer it, or set it in Info.plist for future builds.
Waiting for Export Compliance Review / In Compliance ReviewYour documentation is being reviewed.Wait.
Ready to SubmitUsable by internal testers, not yet submitted for external testing.Add it to an external group to send it for review.
Waiting for Review / In Beta ReviewWith TestFlight App Review.Wait; external testers get it after approval.
Ready to TestApproved, but no testers added yet; you may have chosen to notify testers yourself.Add a group or testers, or distribute it.
RejectedTestFlight App Review rejected it.Fix and upload a new build.
Not Available for Testing"the provisioning profile is missing an application identifier."Upload a new build with the application identifier.
Invalid BinaryThe upload didn't meet the requirements.Fix and upload again.
ExpiredPast 90 days, or expired by you.Upload a new build.

Other reasons Apple's pages point to:

  • The build is marked internal and you tried to give it to an external group or tester.
  • The build isn't in the tester's group. Apple: "All testers within this group will have access to the build." A tester in a different group doesn't get it; check the group's builds.
  • The public link filters them out by device or OS version, or its tester limit is reached.
  • The tester uses a Managed Apple Account in a reserved domain, which "can't be used to test builds."
  • The build is still processing after upload. Apple's build status list doesn't include a processing state or say how long it lasts.

If in-app purchases don't load in a TestFlight build, that is a separate issue: see StoreKit returning no products in TestFlight or App Review.

FAQ

Do internal testers need TestFlight App Review?

No. Apple's Ready to Submit status says the build "can be distributed to internal testers" before any review. Review is for external testing.

Does every new build go through a full review?

Not always. Apple says the first build needs a full review and "later builds for the same version might not." Apple doesn't spell out which builds skip it.

Can a tester keep using a build after the version is on the App Store?

Yes, until it expires. Apple: invited testers "will still be able to test your build even after it goes live on the App Store", and builds stop working for testers after 90 days.

Is there a limit on how many builds I can send for review?

Six builds in 24 hours, and only one build per version in review at a time.

Do I have to answer the encryption question for every build?

Only if you don't set it in Info.plist. Apple says the Info.plist setting removes the need to answer it with each submission.

Sources

All read on 1 November 2026.

Apple's tester limits, review rules and statuses change; check the pages above for current details.

Written by

Building local-first Mac & iOS productivity apps at Obelisk Club. About the author →