TestFlight Flow

How to distribute TheCompanyApp to beta testers via TestFlight.

Prerequisites

Apple Developer Account: Required (paid membership $99/year).

App Store Connect Access: Admin or App Manager role.

Xcode: Version 15.0+ with iOS 16.0+ SDK.

Build and Archive

Step 1: Update Version

File: TheCompanyApp.xcodeproj/project.pbxproj (via Xcode UI)

  1. Select project in navigator

  2. Select "TheCompanyApp" target

  3. General tab → Identity

  4. Version: 1.0.0 (marketing version)

  5. Build: 1 (increment for each upload)

Increment Build Number:

cd /Users/ehsanazish/Documents/Projects/TheCompanyApp
agvtool next-version -all

Step 2: Configure Signing

  1. Signing & Capabilities tab

  2. Team: Select your development team

  3. Bundle Identifier: com.3nsofts.TheCompanyApp (must match App Store Connect)

  4. Signing Certificate: Apple Distribution

  5. Provisioning Profile: App Store (automatic or manual)

Step 3: Select Device

Toolbar → Any iOS Device (arm64)

Step 4: Archive

Menu: Product → Archive

Wait: 5-10 minutes for build to complete.

Result: Archives window opens with new archive.

Upload to App Store Connect

Step 1: Validate

  1. Select archive in Archives window

  2. Click "Validate App"

  3. Choose distribution certificate

  4. Wait for validation (2-5 minutes)

  5. Resolve any errors (see Troubleshooting below)

Step 2: Distribute

  1. Click "Distribute App"

  2. Select "App Store Connect"

  3. Upload method: "Upload"

  4. Distribution options:

    • ✅ Include bitcode (if available)

    • ✅ Upload symbols (for crash reports)

  5. Review details

  6. Click "Upload"

Upload Time: 5-20 minutes depending on file size and network.

Step 3: Processing

App Store Connect → My Apps → TheCompanyApp → TestFlight tab

Status: "Processing" (appears after upload completes)

Wait: 10-60 minutes for Apple to process build.

Notification: Email sent when build ready for testing.

Configure TestFlight

Step 1: Build Information

  1. Select build in TestFlight tab

  2. Add What to Test:

  3. Add Test Details (optional):

    • Contact email

    • Marketing URL

    • Privacy policy URL

Step 2: Export Compliance

Question: "Does your app use encryption?"

Answer: Yes (HTTPS for CloudKit)

CCATS Required?: No (standard encryption only)

Submit: Saves compliance info.

Step 3: Internal Testing Group

Internal Testers: Up to 100 (must have App Store Connect access)

  1. TestFlight → Internal Testing

  2. Click "+" to create group

  3. Name: "Internal Team"

  4. Add testers by email

  5. Select build to test

  6. Enable automatic distribution (new builds auto-deploy)

Testers receive: Email invite immediately.

Step 4: External Testing Group (Optional)

External Testers: Up to 10,000 (public beta)

  1. TestFlight → External Testing

  2. Create group: "Public Beta"

  3. Add build (requires App Review first time)

  4. Submit for Beta App Review

  5. Wait for approval (1-2 days)

  6. Add testers via email or public link

Tester Experience

Tester Receives Invite

Email: "You're invited to test TheCompanyApp"

Steps:

  1. Tap "View in TestFlight" button

  2. Redirects to App Store → TestFlight app

  3. If TestFlight not installed:

    • Install TestFlight (free)

    • Tap link again

  4. Accept invite

  5. Tap "Install"

Testing the App

TestFlight UI:

  • Build number and version displayed

  • "What to Test" instructions visible

  • "Send Feedback" button (shake device or screenshot)

Feedback Options:

  • Screenshot-based feedback

  • Crash reports (automatic)

  • Text feedback

Tester Sends Feedback

Shake Device:

  • Feedback UI appears

  • Select area of screenshot (optional)

  • Type feedback

  • Submit

Developer Receives:

  • Feedback in App Store Connect → TestFlight → Feedback

  • Includes: screenshot, text, device info, iOS version

Update Process

Releasing New Build

  1. Fix bugs from tester feedback

  2. Increment build number: 12

  3. Archive and upload (repeat steps above)

  4. Wait for processing

  5. Automatic distribution (if enabled) or manually select build

Testers notified: "New build available for TheCompanyApp"

Update:

  • Open TestFlight

  • Tap "Update"

  • New version installs

Version Update

New version (e.g., 1.0.01.1.0):

  • Update Version in Xcode

  • Reset Build to 1

  • Create new "What to Test" notes

  • Upload as new version

Expiration

TestFlight Build Lifespan: 90 days from upload.

Expiration Warning: Testers notified 5 days before expiration.

Developer Action: Upload new build to extend testing.

Generate Link:

  1. External Testing group → Build → Enable Public Link

  2. Copy link: https://testflight.apple.com/join/ABC123XYZ

  3. Share on website, social media, email

Anyone with link can:

  • Join TestFlight beta

  • Install app (no email invite needed)

  • Limited to 10,000 testers per build

Monitoring

App Store Connect → TheCompanyApp → TestFlight → Metrics

View:

  • Installs over time

  • Sessions per tester

  • Crashes per session

  • Feedback count

Crash Reports:

  • TestFlight → Crashes

  • View stack traces

  • Download .crash files

  • Symbolicate with dSYM

Transitioning to Production

When ready for App Store:

  1. Archive new build (or use existing TestFlight build)

  2. Distribute → App Store Connect

  3. App Store Connect → App Store tab (not TestFlight)

  4. Create new version

  5. Fill in App Store metadata

  6. Submit for App Review

  7. Wait for approval (1-7 days)

  8. Release to App Store

TestFlight continues: Can run TestFlight alongside production.


Related: Share Testing Checklist, Debugging Logs, Common Issues

Last updated