Distribute a TestFlight build
distribute_buildShips an App Store Connect build to TestFlight testers in one call: waits for processing, sets What to Test notes, adds beta groups, and submits for beta review when external testers need it.
Instructions
Ships a build to TestFlight testers in one call: waits for processing, answers export compliance if you say how, sets the What to Test notes, adds the build to beta groups, and submits it for beta app review when an external group needs it. Every step checks the current state first, so re-running after a timeout or error picks up where it stopped.
Changes App Store Connect (needs ASC_WRITE=1). Safe to re-run: steps already done are skipped.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| app | No | App ID, bundle ID or exact app name. Defaults to ASC_APP_ID, or to the only app the key can see. | |
| build | No | Build number (CFBundleVersion, e.g. "202610010021"), build resource ID, or "latest" (the default). | |
| notes | No | "What to Test" text shown to testers. | |
| groups | No | Beta group names or IDs. Internal groups with access to all builds get it automatically. | |
| dry_run | No | If true, return the plan without changing anything. | |
| version | No | Marketing version (CFBundleShortVersionString, e.g. "1.2"). Needed only if build numbers repeat across versions. | |
| platform | No | Platform. Defaults to IOS. | |
| notes_locale | No | en-US | |
| wait_minutes | No | Minutes to wait for Apple's processing before returning (0-30, default 5). Processing usually takes 5-30 minutes; if it isn't done in time, the result says how to resume. | |
| submit_for_beta_review | No | Submit for beta app review. Defaults to true when any target group is external, since external testers need an approved build. | |
| uses_non_exempt_encryption | No | Export compliance answer, used only if the build is waiting on it. false means the app uses no encryption or only exempt encryption such as HTTPS. |