TestFlight explained: testers, groups, beta review, and the 90-day expiry

Updated 3 July 2026

TestFlight has two tiers: up to 100 internal testers (members of your App Store Connect team) who get every build instantly, and up to 10,000 external testers who need Apple's Beta App Review to approve the first build of each version before they can install it. Every build expires 90 days after upload, no exceptions – when a build expires, testers lose access to the app entirely, so an active beta needs a fresh build well before day 90.

Internal vs external testers

Internal testersExternal testers
WhoApp Store Connect team members (up to 100)Anyone with an email or the public link (up to 10,000)
Review requiredNone – builds available immediatelyBeta App Review for the first build of each version
Best forYour own team, daily buildsReal users, public betas
SetupAdd users in Users and Access, enable TestFlightCreate a group, invite by email or share a public link

The rules that catch people out

  • Builds expire 90 days after upload. Expired builds stop launching for testers – not just stop being installable. The fix is always the same: upload a new build, which starts its own 90-day clock.
  • Beta App Review applies to the first build of each new version number for external groups. Subsequent builds of the same version usually go through without a full review, so bumping the build number is cheap and bumping the version has a review cost.
  • A public link is the lowest-friction way to recruit: no emails, no Apple IDs collected – anyone with the link joins until you disable it or hit the tester cap. You can cap the number of testers per link.
  • Testers install and update through the TestFlight app, and each tester can run the beta on multiple of their devices.
  • TestFlight feedback (screenshots, crash reports, and comments testers submit) lands in App Store Connect per build, with device and OS details attached.

Keeping a long-running beta healthy

  1. Upload on a rhythm, not on demand. A build every few weeks keeps you clear of the 90-day cliff and keeps crash and feedback data flowing on current code. The expiry is per build, so a steady cadence means there is always a valid build.
  2. Expire old builds deliberately. Old builds with known bugs generate stale feedback and confuse testers who never update. Expiring them forces everyone onto the current build. The App Store Connect website makes you expire builds one at a time; Itsyconnect can bulk-expire them, along with per-build install and crash counts to tell you which builds are actually in use.
  3. Watch installs per build, not invitations sent. Ten thousand invited testers means nothing if 40 installed the latest build. Per-build install, session, and crash numbers are the real health metrics of a beta.
  4. Close the loop on feedback. Tester feedback with screenshots is the highest-signal bug reporting most indie apps ever get. Review it per build, fix, and mention fixes in the next build's test notes – testers who see their feedback acted on keep testing.

Frequently asked questions

Why does my TestFlight build say expired?

Every TestFlight build expires 90 days after upload, regardless of activity. Expired builds stop working for testers entirely. Upload a new build – it gets its own 90-day window, and external testers can install it without a new review as long as the version number has already been through Beta App Review.

How long does Beta App Review take?

Usually within a day, often hours. It applies to the first build of each version you distribute to external testers; later builds of the same version typically skip the full review. Internal testers never wait – their builds are available immediately after processing.

How many testers does TestFlight allow?

Up to 100 internal testers (App Store Connect team members) and up to 10,000 external testers per app. External testers can be invited by email or join through a public link, which you can cap or disable at any time.

Can I manage TestFlight without the App Store Connect website?

Yes – TestFlight is fully exposed through Apple's API. Itsyconnect (free, open source) manages builds, groups, and testers, bulk-expires old builds, tracks installs and crashes per build, shares public links, and shows beta feedback with screenshots and device details.

Related guides

Get Itsyconnect

Itsyconnect is a free, local-first Mac app that replaces the App Store Connect website – analytics, releases, TestFlight, reviews, keywords, and screenshots in one fast interface, with bring-your-own-key AI. Completely free, open source, no account, and your data never leaves your Mac. Download for Mac →