TestFlight is Apple’s official platform for distributing pre-release app builds to testers. It allows developers to upload beta versions to App Store Connect, manage access, and collect feedback before publication. According to Apple Developer Documentation, TestFlight supports up to 10,000 external testers via a public link and up to 100 internal testers by Apple ID.
Key Takeaways
TestFlight is a beta testing platform integrated into App Store Connect for distributing pre-release app builds before publication in the App Store. Developers upload builds archived via Xcode and distribute them among testers without the need to manually distribute IPA files.
Apple acquired TestFlight in 2014 to replace Ad Hoc distribution through Provisioning Profiles. Previously, developers collected device UDIDs, created provisioning profiles, and distributed IPAs through third-party services. TestFlight automated the entire process: testers install the beta app through the TestFlight App, while developers manage access via a web interface.
According to WWDC 2024, TestFlight handles over 2 million test installs monthly. The platform supports distribution across all Apple platforms, including iOS, iPadOS, macOS, tvOS, watchOS, and visionOS, making it the only unified beta testing tool in the Apple ecosystem.
TestFlight splits testing into two types: Internal Testing for team members (up to 100 participants, build available immediately after upload) and External Testing for external users (up to 10,000 participants, requires Beta App Review). Internal testing does not require moderation, making it ideal for quick build verification within the team.
External Testing allows inviting testers by email or via a public link. After passing Beta App Review, the build is available for download to all invitees. For apps being published for the first time, External Testing is mandatory according to the App Store Review Guidelines.
The TestFlight workflow begins with archiving the app in Xcode and uploading it to App Store Connect via Organizer or Transporter. After upload, the build undergoes automatic validation and security scanning.
Internal testers receive a notification about the available build through the TestFlight App. They can install the app and leave feedback through the built-in screenshot and text comment interface. For external testers, Beta App Review approval is required, after which the build is distributed the same way as internal ones.
TestFlight automatically collects usage metrics: installation counts, crash logs, screenshots with annotations, and feedback. The developer sees this data in the TestFlight section of App Store Connect. All data is aggregated by build versions, making it easier to compare stability across different builds.
Each build uploaded to TestFlight has a 90-day expiration period. After expiration, testers can no longer install or launch the app. To continue testing, a new build with an incremented version number must be uploaded. This limitation encourages developers to regularly update builds.
As the expiration date approaches, TestFlight sends notifications to both the developer and testers. If a new build is not uploaded in time, testing is interrupted and participants lose access to the app until a fresh version appears.
Setting up TestFlight begins in App Store Connect under the TestFlight section. To get started, at least one uploaded app build is required. The interface is divided into three main sections: builds, internal testers, and external groups.
Internal testers are added by Apple ID. Each participant must be invited through App Store Connect with a role that includes testing access. After the invitation, the tester receives an email and can install the app via the TestFlight App on their device.
For external testing, groups are created that combine testers by scenarios. Each group is linked to specific builds. A group can have a public link for self-joining — convenient for open-source projects or mass beta testing. According to Apple Developer Documentation, a public link can be revoked at any time without losing access for testers who have already joined.
Uploading a build to TestFlight is done through Xcode Organizer after archiving the project. An Apple Developer Program account with Admin or App Manager permissions in App Store Connect is required for upload.
Before uploading, the build must be signed with a valid Distribution Certificate and contain a Provisioning Profile with App Store distribution. Xcode automatically configures signing through Automatic Signing when an active developer account is available.
# Upload via xcrun altool (Xcode 15+ uses notarytool)
xcrun notarytool submit MyApp.ipa --apple-id "developer@example.com" --team-id "TEAMID123" --password "@keychain:AC_PASSWORD" --wait
# Upload to App Store Connect directly
xcrun altool --upload-app -f MyApp.ipa -t ios -u "developer@example.com" -p "@keychain:AC_PASSWORD"
After upload, the build undergoes automatic verification: binary validation, malicious code scanning, and compliance checks with App Store Review Guidelines. Verification typically takes from a few minutes to an hour. The status is displayed in App Store Connect under the TestFlight section.
For CI/CD (GitHub Actions, Bitrise, Jenkins), xcrun altool or notarytool is used to upload the build directly without Xcode. Authentication keys are stored in Keychain or App Store Connect API. Fastlane provides the upload_to_testflight action for full process automation.
Inviting testers to TestFlight depends on the type of testing. Internal testers are added directly in App Store Connect by Apple ID and gain access to all builds immediately after upload. External testers are invited through groups with specific builds assigned.
For external testing, Beta App Review must be passed — a simplified version of App Review that checks basic functionality and compliance with rules. The first external build typically passes review in 1–2 days, with subsequent ones being faster. After approval, all testers in the group receive a notification.
A public link simplifies invitations: the developer publishes the link on a website or social media, users follow it and automatically join the testing. TestFlight supports up to 10,000 participants per external group, and the number of groups is unlimited. Multiple groups with different builds can be configured for each app.
Testers send feedback through the TestFlight App, attaching screenshots and annotations. The developer sees all feedback in App Store Connect, grouped by builds. Each feedback entry contains the OS version, device model, and timestamp, making it easier to reproduce and fix bugs.
Publishing an app from TestFlight to the App Store does not require rebuilding. Simply select the approved beta build in App Store Connect and click Submit for Review. The same build that underwent beta testing is sent for final App Review without recompilation.
This guarantees that the exact version tested by participants goes into production, eliminating risks of differences between beta and release builds. After passing final App Review, the build is automatically published in the App Store according to the configured Availability rules.
Before publication, the developer needs to update metadata: version description, screenshots for the new OS version, and changelog information. TestFlight builds that were not submitted to the App Store are automatically deleted 90 days after upload along with all testing data.
Frequently Asked Questions
Automatic verification typically takes from 5 minutes to an hour. Beta App Review for external testing takes from a few hours to 2 days. For subsequent builds, review is faster as Apple considers the history of previous reviews.
TestFlight is only available to Apple Developer Program members ($99/year). Without a subscription, uploading builds to App Store Connect is not possible. For Ad Hoc distribution without a subscription, an Enterprise account or SideStore would be required.
Ad Hoc requires collecting device UDIDs, creating a Provisioning Profile, and manually distributing the IPA. TestFlight automates the entire process: the developer uploads the build, the tester installs through the TestFlight App without provisioning profiles or UDIDs.
The build lifetime in TestFlight is 90 days from upload. After expiration, testers cannot install or launch the app. To continue testing, a new build with an incremented version number must be uploaded.
TestFlight supports macOS applications starting from macOS 11 Big Sur. Testers install the beta version through the TestFlight App on Mac. The upload and management process is identical to the iOS version: archiving in Xcode, uploading via Organizer.
Summary
We will develop a mobile application turnkey
IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.
Read also