TestFlight job type for Workflows

Sep 18, 2025 by

Ash Wu

Ash Wu

The TestFlight job allows you to distribute iOS builds directly to TestFlight internal and external testing groups. Unlike the standard iOS submit job, the TestFlight job provides advanced control over TestFlight features including test group management, changelog distribution, and Beta App Review submission.

TestFlight job type for Workflows

Using the TestFlight job

To distribute a build to TestFlight groups, add a job with type: testflight to your workflow:

Code
name: Distribute to TestFlight
jobs:
testflight_distribution:
name: Distribute to TestFlight
type: testflight
params:
build_id: ${{ needs.build_ios.outputs.build_id }}
internal_groups: ['QA Team']
external_groups: ['Public Beta']
changelog: "Bug fixes and performance improvements"

The TestFlight job requires an iOS build created with distribution: store. You'll need to have your Apple Developer account configured for TestFlight submissions.

Development builds with TestFlight

One useful pattern we've found is distributing development builds through TestFlight. This approach eliminates the need to manage ad hoc provisioning profiles across your team's iOS devices, which simplifies your team's process for distributing development builds.

Examples

You can distribute to both internal and external TestFlight groups with a detailed changelog:

Code
name: Full TestFlight Distribution
jobs:
build_ios:
name: Build iOS
type: build
params:
platform: ios
profile: production
testflight:
name: Distribute to TestFlight
needs: [build_ios]
type: testflight
params:
build_id: ${{ needs.build_ios.outputs.build_id }}
internal_groups: ['QA Team', 'Internal Testers']
external_groups: ['Public Beta', 'Partner Testing']
changelog: |
What's new in this release:
- Performance improvements
- Bug fixes for login flow
- Updated user interface
submit_beta_review: true

For external groups, the job automatically submits your build for Beta App Review unless you explicitly set submit_beta_review: false. This ensures your app can be distributed automatically to external testers once Apple's review is complete.

You can also upload builds with just a changelog. This way, the build will only get added to internal groups with "auto-distribute" enabled:

Code
testflight:
name: Upload with Changelog
type: testflight
params:
build_id: ${{ needs.build_ios.outputs.build_id }}
changelog: "Latest development build with bug fixes"

Learn more about the TestFlight job type in our pre-packaged jobs documentation.