August 22, 2025

Auto-Localized TestFlight Notes with String Catalog

Easily localize your TestFlight release notes with String Catalog. Manage one base file and let translations update automatically across all languages.

Apple recently introduced support for including localized release notes in your TestFlight builds by adding text files directly to your Xcode project. This makes it possible to automate “What to Test” notes alongside your app localization flow. With String Catalog, we’ve taken it one step further: your TestFlight notes can now be auto-translated and managed just like your in-app strings.


How TestFlight Notes Work in Xcode

When you distribute a build with Xcode Cloud, TestFlight will look for a special folder in your project:

TestFlight/

Inside this folder you can add text files for each language, using BCP-47 locale identifiers:

TestFlight/WhatToTest.en-US.txt
TestFlight/WhatToTest.de-DE.txt
TestFlight/WhatToTest.fr-FR.txt

Each file’s contents become the “What to Test” release notes testers see in the TestFlight app. This is different from .xcstrings (which can use just en, fr, etc.) — for TestFlight notes, Apple requires full locale codes like en-US or de-DE.

Apple’s documentation →


Automating Notes with String Catalog

Instead of manually updating each file, String Catalog now lets you manage TestFlight notes the same way you manage your in-app localizations:

  1. Edit one base language file
    For example, update:
TestFlight/WhatToTest.en-US.tx
  1. String Catalog detects changes
    We treat the base language (your project’s source locale) as the source of truth.

  2. Auto-localization kicks in
    Whenever the base file changes, String Catalog automatically creates or updates the translated WhatToTest.<locale>.txt files for all your supported languages.

  3. Xcode Cloud picks them up
    The next time you push a build, your localized TestFlight notes are included automatically.


Example

Update your base English file:

TestFlight/WhatToTest.en-US.tx

String Catalog will then generate:

TestFlight/WhatToTest.de-DE.txt
TestFlight/WhatToTest.fr-FR.txt
TestFlight/WhatToTest.ja-JP.txt

All translations stay in sync with your base language, and you never have to copy & paste notes manually into App Store Connect again.


Why This Matters

  • Consistency – Your release notes stay accurate across languages.
  • Automation – No more manual copy & paste into App Store Connect.
  • Faster releases – Updating one file triggers a full set of localized notes.
  • Scalability – Works even if you’re translating into 20+ languages.

Getting Started

  • Make sure your repo contains a TestFlight/ folder.
  • Add your base language file: WhatToTest.<base_locale>.txt.
  • Connect your project to String Catalog.
  • Update that file on your next release — we’ll handle the rest.

Final Thoughts

This closes the gap between in-app localization and release note localization. With String Catalog, both are automated, consistent, and version-controlled in your repository.

If you’re already using String Catalog for app strings, this comes at no extra setup cost. Just update your base TestFlight file, and your customers around the world will see release notes in their own language — instantly.