What Is TestFlight?
TestFlight is Apple's official platform for distributing beta versions of iOS, iPadOS, macOS, tvOS, watchOS, and visionOS apps to testers before public release. It is free, built into App Store Connect, and is the standard way to get pre-release builds onto real devices.
TestFlight supports up to 10,000 external testers and 100 internal testers per app. Testers install a special TestFlight app from the App Store, which manages all their beta installations.
Internal vs. External Testing
Internal Testers
- Members of your App Store Connect team (developers, marketing, finance, etc.)
- Up to 100 internal testers
- Builds are available immediately after upload (no Apple review)
- Each internal tester can test on up to 30 devices
External Testers
- Anyone with an email address or a public invite link
- Up to 10,000 external testers
- First build of each version requires Apple's Beta App Review (usually takes 24-48 hours)
- Subsequent builds of the same version often skip review
- Testers can be organized into groups with different builds
Uploading a Build
Step 1: Archive and Upload
Build an archive in Xcode (Product > Archive) and upload it through the Xcode Organizer, or use command-line tools:
- xcodebuild + altool: Traditional CLI approach
- Fastlane deliver/pilot: Automated upload and tester management
- EAS Submit: If you use Expo, submits directly from cloud builds
- Transporter app: Drag-and-drop upload utility from Apple
Step 2: Processing
After upload, App Store Connect processes the build (typically 10-30 minutes). During processing, Apple runs automated checks including:
- Binary validation
- Symbol extraction for crash reporting
- App thinning and bitcode recompilation
- Privacy manifest verification (required since 2024)
Step 3: Add to Testing Group
Once processing completes, assign the build to internal or external tester groups. External groups require you to fill in test information (what to test, contact info) for the Beta App Review.
Managing Testers
Invite Methods
- Email invitation: Send invites to specific email addresses
- Public link: Generate a shareable URL (can set a tester limit)
- Tester groups: Organize testers by role, feature, or phase
Tester Groups Strategy
A practical approach is to create tiered groups:
- Core team: Internal testers who check every build
- Alpha testers: Small external group of power users or QA staff
- Beta testers: Larger external group for broader feedback
- Stakeholders: Executives or clients who need visibility
Each group can receive different builds, letting you control who sees what.
Collecting Feedback
TestFlight provides built-in feedback tools:
- Screenshots: Testers can take screenshots and annotate them directly in TestFlight
- Crash reports: Automatic crash logs visible in App Store Connect
- Feedback text: Testers can write feedback that goes straight to your App Store Connect dashboard
- Tester metrics: See how many testers installed, launched, and used each build
Build Expiration
TestFlight builds expire after 90 days. After that, testers can no longer open the app from that build. Plan your release timeline accordingly. If your beta cycle is longer than 90 days, upload fresh builds periodically.
Best Practices
- Upload builds frequently: Give testers fresh builds at least weekly during active development
- Write clear test notes: Tell testers exactly what changed and what to focus on
- Use groups strategically: Do not send unstable builds to external testers
- Monitor crash reports: Fix crashes before widening the tester pool
- Automate uploads: Use CI/CD to upload builds automatically after merging to your release branch
- Keep tester lists clean: Remove inactive testers to stay within limits and keep feedback relevant
TestFlight vs. Alternatives
| Feature | TestFlight | Firebase App Distribution |
|---|---|---|
| Platform | Apple only | iOS + Android |
| Tester limit | 10,000 external | Unlimited |
| Review required | Yes (external) | No |
| Feedback tools | Built-in | Basic |
| Cost | Free | Free |
| OTA install | Yes | Yes |
For iOS, TestFlight is the gold standard. For cross-platform teams, Firebase App Distribution provides a unified experience across both platforms, though it lacks TestFlight's integrated feedback tools.