メインコンテンツまでスキップ

Releasing an app to the store

Once your release has a release candidate uploaded to the store and all approvals are completed, you can release it to users. For iOS, this also requires submitting the app for App Store review first. Android releases skip straight to the release step.

The Store Releases sub-API base URL: https://api.bitrise.io/release-management/v2/store-releases/v1. See the Store Releases API reference for the full list of endpoints, parameters, and schemas.

Configuring beta distribution (iOS)Click to copy link

Before submitting for full release, you can distribute the build to beta testers through TestFlight (iOS only).

Listing TestFlight testing groupsClick to copy link

Returns the TestFlight testing groups associated with the release. Use the id values from the response to start distribution to a specific group.

curl -X GET "https://api.bitrise.io/release-management/v2/store-releases/v1/app-versions/RELEASE_ID/beta-distribution/testing-groups" \
-H "Authorization: YOUR_ACCESS_TOKEN" \
-H "Accept: application/json"

Starting beta distribution to a TestFlight groupClick to copy link

Makes the release build available to testers in a specific TestFlight group. Testers receive a notification and can install the build directly from the TestFlight app.

curl -X PATCH "https://api.bitrise.io/release-management/v2/store-releases/v1/app-versions/RELEASE_ID/beta-distribution/testing-groups/GROUP_ID" \
-H "Authorization: YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"

Adding what-to-test notes for TestFlightClick to copy link

Attaches testing instructions to the release build. Testers see these notes in the TestFlight app when they receive the build notification.

curl -X POST "https://api.bitrise.io/release-management/v2/store-releases/v1/app-versions/RELEASE_ID/beta-distribution/what-to-test" \
-H "Authorization: YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"locale": "en-US",
"whats_new": "Fixed login issue and improved onboarding flow."
}'

Adding release notes (Android)Click to copy link

Release notes appear on the app's Google Play Store listing under What's new, and are shown to users before and after they update the app. You can provide notes in multiple languages — Google Play displays the version that matches the user's device language, falling back to en-US if no match is found.

Pass an array of language/text pairs to the release_notes field, using BCP 47 language tags (e.g. en-US, de-DE, fr-FR):

curl -X PUT "https://api.bitrise.io/release-management/v2/store-releases/v1/app-versions/RELEASE_ID/google-play-store/localized-release-notes" \
-H "Authorization: YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"release_notes": [
{
"language": "en-US",
"text": "Fixed login issue and improved onboarding flow."
},
{
"language": "de-DE",
"text": "Login-Problem behoben und Onboarding-Flow verbessert."
}
]
}'

Each release note text can be up to 500 characters.

Submitting for store review (iOS)Click to copy link

Android

Android releases submitted via the API go directly to the configured Google Play track and do not require a separate review submission step. Proceed to the release step below.

EndpointFunctionRequired role
POST /app-versions/{id}/apple-app-store/review/submitSubmit the release for App Store review.Release manager
GET /app-versions/{id}/apple-app-store/review/statusGet the current App Store review status.Any
POST /app-versions/{id}/apple-app-store/review/cancelCancel a pending review submission.Release manager

Submit the release for App Store review:

curl -X POST "https://api.bitrise.io/release-management/v2/store-releases/v1/app-versions/RELEASE_ID/apple-app-store/review/submit" \
-H "Authorization: YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"copy_primary_whats_new": true,
"localizations": [
{
"locale": "en-US",
"whats_new": "Bug fixes and performance improvements.",
"description": "Updated description for this version.",
"keywords": "productivity, task manager"
}
]
}'

Setting copy_primary_whats_new: true copies the primary locale's "What's new" text to all other localizations that have no text set.

To check the review status:

curl -X GET "https://api.bitrise.io/release-management/v2/store-releases/v1/app-versions/RELEASE_ID/apple-app-store/review/status" \
-H "Authorization: YOUR_ACCESS_TOKEN" \
-H "Accept: application/json"

Configuring release settingsClick to copy link

Before releasing, configure how the update rolls out to users:

curl -X PATCH "https://api.bitrise.io/release-management/v2/store-releases/v1/app-versions/RELEASE_ID/apple-app-store/release/settings" \
-H "Authorization: YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"release_type": "AFTER_APPROVAL",
"phased_release": true
}'

release_type options:

  • AFTER_APPROVAL: Release automatically once approved by Apple.
  • MANUAL: Hold the release until you manually trigger it.
  • SCHEDULED: Release at a specific date and time (requires earliest_release_date in ISO 8601 format).

phased_release: true rolls the update out to users over 7 days rather than all at once.

Releasing to usersClick to copy link

EndpointFunctionRequired role
POST /app-versions/{id}/apple-app-store/releaseRelease the app to the App Store.Release manager
GET /app-versions/{id}/apple-app-store/release/statusGet the release status.Any
POST /app-versions/{id}/apple-app-store/release/pausePause a phased release.Release manager
POST /app-versions/{id}/apple-app-store/release/continueContinue a paused phased release.Release manager
POST /app-versions/{id}/apple-app-store/release/completeComplete a phased release immediately.Release manager

Trigger the release:

curl -X POST "https://api.bitrise.io/release-management/v2/store-releases/v1/app-versions/RELEASE_ID/apple-app-store/release" \
-H "Authorization: YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"

Check the release status:

curl -X GET "https://api.bitrise.io/release-management/v2/store-releases/v1/app-versions/RELEASE_ID/apple-app-store/release/status" \
-H "Authorization: YOUR_ACCESS_TOKEN" \
-H "Accept: application/json"

To complete a phased release immediately (rolling out to 100% of users right away):

curl -X POST "https://api.bitrise.io/release-management/v2/store-releases/v1/app-versions/RELEASE_ID/apple-app-store/release/complete" \
-H "Authorization: YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"

Setting up release webhooksClick to copy link

You can configure outgoing webhooks to receive notifications when a release reaches key stages.

curl -X POST "https://api.bitrise.io/release-management/v2/store-releases/v1/app-versions/RELEASE_ID/outgoing-webhooks" \
-H "Authorization: YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"events": ["release_started", "submitted_for_review"],
"webhook_configuration_id": "WEBHOOK_CONFIG_ID"
}'

Set all_events: true instead of listing individual events to receive notifications for all release lifecycle events.