Skip to main content
Manage your TestFlight beta testing program end-to-end, from organizing beta groups to collecting feedback from testers.

Overview

TestFlight allows you to distribute pre-release builds to internal and external testers. The CLI provides complete automation for:
  • Managing beta groups and testers
  • Distributing builds to specific groups
  • Collecting and reviewing crash reports and feedback
  • Tracking beta tester metrics

Beta Groups Workflow

1

List existing beta groups

View all beta groups for your app:
asc testflight beta-groups list --app "YOUR_APP_ID"
Filter to internal or external groups:
asc testflight beta-groups list --app "YOUR_APP_ID" --internal
asc testflight beta-groups list --app "YOUR_APP_ID" --external
2

Create a new beta group

Create an external beta group:
asc testflight beta-groups create --app "YOUR_APP_ID" --name "External Beta Testers"
Create an internal beta group:
asc testflight beta-groups create --app "YOUR_APP_ID" --name "QA Team" --internal
3

Configure group settings

Enable public link for external distribution:
asc testflight beta-groups update --id "GROUP_ID" \
  --public-link-enabled \
  --public-link-limit-enabled \
  --public-link-limit 100
Enable feedback collection:
asc testflight beta-groups update --id "GROUP_ID" --feedback-enabled

Managing Beta Testers

1

Add beta testers

Add a new tester to a beta group:
asc testflight beta-testers add \
  --app "YOUR_APP_ID" \
  --email "tester@example.com" \
  --group "Beta Testers"
Optionally include name details:
asc testflight beta-testers add \
  --app "YOUR_APP_ID" \
  --email "tester@example.com" \
  --first-name "Jane" \
  --last-name "Doe" \
  --group "Beta Testers"
2

Import testers in bulk

Export existing testers to CSV:
asc testflight beta-testers export \
  --app "YOUR_APP_ID" \
  --output "./testers.csv"
Import testers from CSV (with dry-run first):
asc testflight beta-testers import \
  --app "YOUR_APP_ID" \
  --input "./testers.csv" \
  --dry-run

# After verifying, run without dry-run
asc testflight beta-testers import \
  --app "YOUR_APP_ID" \
  --input "./testers.csv"
3

List and filter testers

List all testers for an app:
asc testflight beta-testers list --app "YOUR_APP_ID"
Filter by beta group:
asc testflight beta-testers list --app "YOUR_APP_ID" --group "Beta Testers"
Filter by build:
asc testflight beta-testers list --app "YOUR_APP_ID" --build "BUILD_ID"
4

Send invitations

Invite a tester to start testing:
asc testflight beta-testers invite \
  --app "YOUR_APP_ID" \
  --email "tester@example.com"
Invite and auto-create if tester doesn’t exist:
asc testflight beta-testers invite \
  --app "YOUR_APP_ID" \
  --email "newtester@example.com" \
  --group "Beta Testers"

Distributing Builds to Groups

1

Find your build ID

List recent builds:
asc builds list --app "YOUR_APP_ID" --sort "-uploadedDate" --limit 5
Get a specific build:
asc builds get --app "YOUR_APP_ID" --version "1.0" --build-number "42"
2

Add build to beta groups

Add a build to one or more groups:
asc builds add-groups --build "BUILD_ID" --group "GROUP_ID"
Add to multiple groups:
asc builds add-groups --build "BUILD_ID" --group "GROUP_ID1,GROUP_ID2"
3

Verify distribution

Check which groups have access to a build:
asc builds beta-groups relationships --build "BUILD_ID"

Feedback and Crash Reports

1

View crash submissions

Get crash submission details:
asc testflight beta-feedback crash-submissions get --id "SUBMISSION_ID"
Download the crash log:
asc testflight beta-feedback crash-log get --id "SUBMISSION_ID"
2

View screenshot feedback

Get screenshot submission with annotations:
asc testflight beta-feedback screenshot-submissions get --id "SUBMISSION_ID"
3

Retrieve crash logs

Get detailed crash logs for analysis:
asc testflight beta-crash-logs get --id "CRASH_LOG_ID"
4

Clean up old feedback (optional)

Delete processed crash submissions:
asc testflight beta-feedback crash-submissions delete --id "SUBMISSION_ID" --confirm
Delete screenshot submissions:
asc testflight beta-feedback screenshot-submissions delete --id "SUBMISSION_ID" --confirm

Beta Tester Metrics

Track how testers engage with your builds:
asc testflight metrics beta-tester-usages --app "YOUR_APP_ID"
This provides insights into:
  • Number of sessions per tester
  • App version usage
  • Install and session counts

Complete Example Workflow

Here’s a complete workflow for distributing a new build:
# 1. Set your app ID
export ASC_APP_ID="YOUR_APP_ID"

# 2. Find the latest build
asc builds list --app "$ASC_APP_ID" --sort "-uploadedDate" --limit 1 --output json
BUILD_ID="..." # Extract from output

# 3. Create or find your beta group
asc testflight beta-groups list --app "$ASC_APP_ID"
GROUP_ID="..." # Use existing or create new

# 4. Add build to the beta group
asc builds add-groups --build "$BUILD_ID" --group "$GROUP_ID"

# 5. List testers in the group
asc testflight beta-testers list --app "$ASC_APP_ID" --group "$GROUP_ID"

# 6. Add new testers if needed
asc testflight beta-testers add \
  --app "$ASC_APP_ID" \
  --email "newtester@example.com" \
  --group "Beta Testers"

# 7. Send invitations
asc testflight beta-testers invite --app "$ASC_APP_ID" --email "newtester@example.com"

# 8. Monitor beta tester activity
asc testflight metrics beta-tester-usages --app "$ASC_APP_ID"

Troubleshooting

Tester Not Receiving Invitation

  1. Verify the tester is added to the group:
    asc testflight beta-testers list --app "YOUR_APP_ID" --group "GROUP_ID"
    
  2. Check if invitation was sent:
    asc testflight beta-testers get --id "TESTER_ID"
    
  3. Resend invitation:
    asc testflight beta-testers invite --app "YOUR_APP_ID" --email "tester@example.com"
    

Build Not Appearing for Testers

  1. Verify build is assigned to the group:
    asc builds beta-groups relationships --build "BUILD_ID"
    
  2. Check build processing status:
    asc builds get --build "BUILD_ID"
    
  3. Ensure build passed TestFlight review:
    asc testflight beta-review get --build "BUILD_ID"
    

Managing Group Limits

Internal groups have a limit of 100 testers. External groups can have up to 10,000 testers. To check current tester counts:
asc testflight beta-groups get --id "GROUP_ID"
If you hit limits, create additional groups:
asc testflight beta-groups create --app "YOUR_APP_ID" --name "Beta Testers Group 2"

Best Practices

  1. Organize by testing focus: Create separate groups for different testing purposes (QA, feature testing, general beta)
  2. Use CSV import for bulk operations: Export your current tester list, make changes, and re-import
  3. Enable feedback collection: Turn on feedback for external groups to collect valuable user input
  4. Monitor crash reports: Regularly check crash submissions and address issues before App Store release
  5. Set public link limits: For public beta links, set reasonable limits to control your beta population size
  6. Track metrics: Use beta tester usage metrics to identify your most active testers