Documentation Index
Fetch the complete documentation index at: https://docs.asccli.sh/llms.txt
Use this file to discover all available pages before exploring further.
TestFlight Distribution
Distribute builds to beta testers using TestFlight
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
List existing beta groups
View all beta groups for your app:asc testflight groups list --app "YOUR_APP_ID"
Filter to internal or external groups:asc testflight groups list --app "YOUR_APP_ID" --internal
asc testflight groups list --app "YOUR_APP_ID" --external
Create a new beta group
Create an external beta group:asc testflight groups create --app "YOUR_APP_ID" --name "External Beta Testers"
Create an internal beta group:asc testflight groups create --app "YOUR_APP_ID" --name "QA Team" --internal
Configure group settings
Enable public link for external distribution:asc testflight groups edit --id "GROUP_ID" \
--public-link-enabled \
--public-link-limit-enabled \
--public-link-limit 100
Enable feedback collection:asc testflight groups edit --id "GROUP_ID" --feedback-enabled
Managing Beta Testers
Add beta testers
Add a new tester to a beta group:asc testflight testers add \
--app "YOUR_APP_ID" \
--email "[email protected]" \
--group "Beta Testers"
Optionally include name details:asc testflight testers add \
--app "YOUR_APP_ID" \
--email "[email protected]" \
--first-name "Jane" \
--last-name "Doe" \
--group "Beta Testers"
Import testers in bulk
Export existing testers to CSV:asc testflight testers export \
--app "YOUR_APP_ID" \
--output "./testers.csv"
Import testers from CSV (with dry-run first):asc testflight testers import \
--app "YOUR_APP_ID" \
--input "./testers.csv" \
--dry-run
# After verifying, run without dry-run
asc testflight testers import \
--app "YOUR_APP_ID" \
--input "./testers.csv"
List and filter testers
List all testers for an app:asc testflight testers list --app "YOUR_APP_ID"
Filter by beta group:asc testflight testers list --app "YOUR_APP_ID" --group "Beta Testers"
Filter by build:asc testflight testers list --app "YOUR_APP_ID" --build-id "BUILD_ID"
Send invitations
Invite a tester to start testing:Invite and auto-create if tester doesn’t exist:asc testflight testers invite \
--app "YOUR_APP_ID" \
--email "[email protected]" \
--group "Beta Testers"
Distributing Builds to Groups
Find your build ID
List recent builds:asc builds list --app "YOUR_APP_ID" --sort "-uploadedDate" --limit 5
Get a specific build:asc builds info --app "YOUR_APP_ID" --version "1.0" --build-number "42"
Add build to beta groups
Add a build to one or more groups:asc builds add-groups --build-id "BUILD_ID" --group "GROUP_ID"
Add to multiple groups:asc builds add-groups --build-id "BUILD_ID" --group "GROUP_ID1,GROUP_ID2"
Verify distribution
Check which groups have access to a build:asc testflight distribution view --build-id "BUILD_ID"
Feedback and Crash Reports
View crash submissions
Get crash submission details:asc testflight crashes view --submission-id "SUBMISSION_ID"
Download the crash log:asc testflight crashes log --submission-id "SUBMISSION_ID"
View screenshot feedback
Get screenshot submission with annotations:asc testflight feedback view --submission-id "SUBMISSION_ID"
Retrieve crash logs
Get detailed crash logs for analysis:asc testflight crashes log --crash-log-id "CRASH_LOG_ID"
Clean up old feedback (optional)
Delete processed crash submissions:asc testflight crashes delete --submission-id "SUBMISSION_ID" --confirm
Delete screenshot submissions:asc testflight feedback delete --submission-id "SUBMISSION_ID" --confirm
Beta Tester Metrics
Track how testers engage with your builds:
asc testflight metrics app-testers --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 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-id "$BUILD_ID" --group "$GROUP_ID"
# 5. List testers in the group
asc testflight testers list --app "$ASC_APP_ID" --group "$GROUP_ID"
# 6. Add new testers if needed
asc testflight testers add \
--app "$ASC_APP_ID" \
--email "[email protected]" \
--group "Beta Testers"
# 7. Send invitations
asc testflight testers invite --app "$ASC_APP_ID" --email "[email protected]"
# 8. Monitor beta tester activity
asc testflight metrics app-testers --app "$ASC_APP_ID"
Troubleshooting
Tester Not Receiving Invitation
-
Verify the tester is added to the group:
asc testflight testers list --app "YOUR_APP_ID" --group "GROUP_ID"
-
Check if invitation was sent:
asc testflight testers view --id "TESTER_ID"
-
Resend invitation:
Build Not Appearing for Testers
-
Verify build is assigned to the group:
asc testflight distribution view --build-id "BUILD_ID"
-
Check build processing status:
asc builds info --build-id "BUILD_ID"
-
Ensure build passed TestFlight review:
asc testflight review submissions list --build-id "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 groups view --id "GROUP_ID"
If you hit limits, create additional groups:
asc testflight groups create --app "YOUR_APP_ID" --name "Beta Testers Group 2"
Best Practices
-
Organize by testing focus: Create separate groups for different testing purposes (QA, feature testing, general beta)
-
Use CSV import for bulk operations: Export your current tester list, make changes, and re-import
-
Enable feedback collection: Turn on feedback for external groups to collect valuable user input
-
Monitor crash reports: Regularly check crash submissions and address issues before App Store release
-
Set public link limits: For public beta links, set reasonable limits to control your beta population size
-
Track metrics: Use beta tester usage metrics to identify your most active testers