---
title: Add Release Notes to a Submission
description: Publish release notes with each app store submission from Capawesome Cloud — a default text and translations for TestFlight, the App Store, Google Play, Huawei AppGallery, and Firebase App Distribution.
---

# Add Release Notes

Release notes tell your testers and users what changed in a build. When you [submit a build](submit-a-build.md) to a [destination](destinations/index.md), you can attach release notes to the submission, and Capawesome Cloud publishes them where the store shows them: **What to Test** in TestFlight, **What's New** on the App Store and Google Play, **New features** on Huawei AppGallery, and the release notes of a Firebase App Distribution release.

Release notes consist of a **default text** and optional **translations** keyed by locale, such as `de-DE`, `pt-BR`, `zh-Hans`, or `es-419`. They are optional: without them, Capawesome Cloud leaves the release notes in the store unchanged.

## Add release notes to a submission

=== "CLI"

    Pass the default text with `--release-notes` and a translation with `--release-notes-locale`, which you can repeat, to [`apps:deployments:create`](../cli/commands.md#appsdeploymentscreate):

    ```bash
    npx @capawesome/cli apps:deployments:create --build-number 42 --destination my-destination \
      --release-notes "Bug fixes and performance improvements." \
      --release-notes-locale de-DE="Fehlerbehebungen und Leistungsverbesserungen."
    ```

    Alternatively, keep all texts in a JSON file with a `default` key and one key per locale:

    ```json
    {
      "default": "Bug fixes and performance improvements.",
      "de-DE": "Fehlerbehebungen und Leistungsverbesserungen."
    }
    ```

    Then pass the file with `--release-notes-file`, which can't be combined with the other two flags:

    ```bash
    npx @capawesome/cli apps:deployments:create --build-number 42 --destination my-destination --release-notes-file release-notes.json
    ```

    To use a plain text file as the default text, pass its content with `--release-notes="$(cat release-notes.txt)"`. The `=` keeps a text that starts with a hyphen, such as a bulleted list, from being read as a flag.

    To build and submit in one go, pass the same three flags to [`apps:builds:create`](../cli/commands.md#appsbuildscreate) together with `--destination`. The build is submitted with its release notes once it finishes:

    ```bash
    npx @capawesome/cli apps:builds:create --platform ios --type app-store --git-ref v1.2.0 \
      --destination my-destination --release-notes-file release-notes.json
    ```

=== "Console"

    Enter the text in the **Release notes** field of the **Create deployment** dialog on the [Deployments](https://console.cloud.capawesome.io/apps/_/deployments){:target="_blank"} page. When you create a build with **Deploy build after completion** checked, the build dialog offers the same field. The Console only sets the default text.

=== "GitHub Action"

    The official [`cloud-build-action`](https://github.com/capawesome-team/cloud-build-action){:target="_blank"} takes the default text with the `releaseNotes` input, or a JSON file with translations with `releaseNotesFile`. Both require the `destination` input and can't be combined:

    ```yaml
    - uses: capawesome-team/cloud-build-action@v0.1.4
      with:
        appId: "00000000-0000-0000-0000-000000000000"
        platform: ios
        type: app-store
        gitRef: ${{ github.ref_name }}
        certificate: "Production"
        destination: "TestFlight"
        releaseNotesFile: release-notes.json
        token: ${{ secrets.CAPAWESOME_TOKEN }}
    ```

    See [Native Builds with GitHub Actions](../native-builds/integrations/github-actions.md) for the workflow basics.

To add release notes from your own code, pass the `releaseNotes` object to the [API](../api.md) when you create a deployment at `/v1/apps/{appId}/deployments`, or a build with a destination at `/v1/apps/{appId}/builds`. The [Capawesome MCP server](../../ai/mcp/capawesome.md) accepts the same object.

## Where release notes appear

Each store shows release notes in a different place and limits their length:

| Destination | Where the release notes appear | Limit per language |
| --- | --- | --- |
| [App Store Connect](destinations/apple-app-store.md#release-notes) | **What to Test** in TestFlight, default text only. With [Submit for App Review](submit-for-app-review.md), also **What's New** of the App Store version, including translations. Requires an API key. | 4,000 characters |
| [Google Play](destinations/google-play-store.md#release-notes) | **What's new** of the track release. The default text goes to the destination's default language, `en-US` if none is set. | 500 characters |
| [Huawei AppGallery](destinations/huawei-appgallery.md#release-notes) | **New features** of the app version. The default text goes to the destination's default language, `en-US` if none is set. | 500 characters |
| [Firebase App Distribution](destinations/firebase-app-distribution.md#release-notes) | Release notes of the release, default text only. | 4,000 characters |

Google Play and Huawei AppGallery publish the default text in the destination's **Default language**. Set it on the destination if the default language of your store listing isn't `en-US`.

## Limitations

- **Destinations only**: Release notes are supported for submissions to destinations, not for Live Update channels.
- **No automations**: [Automations](submit-automatically.md) can't provide release notes, so their submissions leave the release notes in the store unchanged. An App Store Connect destination with [beta groups](submit-for-app-review.md#distribute-to-beta-groups) requires release notes, so submit to such a destination with the CLI instead.
- **Fixed once submitted**: Release notes can't be changed after the deployment is created. To change them, edit them in the store.
- **First App Store version**: Apple rejects **What's New** on the very first App Store version of an app. See [Submit for App Review](submit-for-app-review.md#first-app-store-version).

## Next steps

- [Submit a build](submit-a-build.md) — the full submission workflow.
- [Submit for App Review](submit-for-app-review.md) — distribute to TestFlight beta groups and submit to the App Store, with release notes as What to Test and What's New.
- [`apps:deployments:create` reference](../cli/commands.md#appsdeploymentscreate) — every release notes flag.
