Black Friday30% off your first month. See prices →
VibeView

Store Submission · Languages

Release notes and What to Test in many languages

Rokas Kašinskas — Co-founder, VibeViewPublished 2026-10-25Updated 2026-10-25

Testers and users read notes in their own language when you send one. Every note has a default language: the app’s primary language in App Store Connect, or your Play listing’s default language in Google Play. Notes in other languages go out alongside it. Typing them into App Store Connect or Play Console for every build is slow, and easy to forget in a release pipeline. VibeView sends them with the upload, from a folder in your repository or from the Submit dialog, and checks them before anything reaches the store.

What each store does with a language

RuleTestFlight (iOS and Apple TV)Google Play (Android and Android TV)
NoteWhat to Test, in the TestFlight appRelease notes (What’s new in this release?)
Limit per language4,000 characters500 characters
Default languageThe app’s primary language in App Store ConnectYour Play listing’s default language
Who sees whichThe device language’s note, else the defaultThe user’s language’s note, when there is one
Languages you can sendApp Store Connect’s languagesOnly languages already on your Play listing
A language refusedThe others go out; testers get the buildNothing is uploaded

Apple’s steps for adding a build to a group say the same: you enter What to Test, and can optionally add localized versions under each language (invite external testers). Google’s prepare and roll out a release page sets the 500-character limit per language. It also says you add translations to the app before a language appears for release notes.

The Amazon Appstore is different: Amazon writes one note to every language of the listing, so it takes no notes by language, and --notes-dir doesn’t apply to --store amazon.

From the command line

  1. Write the default note. It comes from its usual flag: --what-to-test or --what-to-test-file for TestFlight, --release-notes or --release-notes-file for Google Play. --notes-dir needs one of them.

  2. Add a folder for the other languages. One flat folder, one UTF-8 text file per language, named with the store’s language code. Replace these codes with your own languages:

    what-to-test.txt      the default language
    notes-ios/
      de-DE.txt
      fr-FR.txt
      ja.txt

    Leave the default language’s file out of the folder: a file for the default language is refused, because that note comes from its own flag.

  3. Submit. Replace Beta testers with your TestFlight group:

    vibeview submit --platform ios --latest --group "Beta testers" \
      --what-to-test-file what-to-test.txt --notes-dir notes-ios/ --wait-distribution

    For Google Play, replace beta with your track:

    vibeview submit --platform android --latest --track beta \
      --release-notes-file release-notes.txt --notes-dir notes-play/

Each file is read as UTF-8 and trimmed. An empty file is skipped, and the command says so. If the folder has nothing to send, the default note goes alone. Hidden files (names starting with a dot) are ignored. fastlane’s layout of one subfolder per language isn’t read: use one flat folder.

The codes are not the same in both stores

App Store Connect and Google Play name some languages differently, so keep one folder per store if you ship to both. A few examples from the two lists:

LanguageApp Store ConnectGoogle Play
Germande-DEde-DE
French (France)fr-FRfr-FR
Japanesejaja-JP
Koreankoko-KR
Simplified Chinesezh-Hanszh-CN
Russianruru-RU

A file whose name isn’t one of the store’s codes stops the command, and the message suggests the closest codes (for example, de on Google Play points to de-DE). The CLI reference lists every code for both stores.

What stops a submission before anything is uploaded

  • A file whose name isn’t one of the store’s language codes.
  • A note over the limit: 4,000 characters on TestFlight, 500 on Google Play.
  • More than 50 other languages.
  • A file that isn’t UTF-8 text, a subfolder, or a file with another extension.
  • A file for the default language (when VibeView can read your default language first).
  • On Google Play, a language your Play listing doesn’t have. VibeView checks this with Google Play before the upload starts. Add the language in Play Console under Grow users → Store presence → Main store listing → Manage translations, or send without it.

Notes are never read from vibeview.json, so an old note is never sent by accident. In CI, commit the note files with the release, or write them in an earlier step.

From the dashboard

Open Submit to store on a finished production build. On the build’s own page, the button reads Submit to TestFlight for iOS and tvOS builds.

  • TestFlight: under What to Test, by language, the default language comes first, labeled with its name. Add a language lists App Store Connect’s languages: choose one, then Add. Remove takes one out.
  • Google Play: under Release notes, by language, Add a language lists the other languages your Play listing has. When the listing has only one language, the dialog says to add translations in Play Console first.

Empty languages aren’t sent. A note in another language needs a note in the default language too, so the button stays off until you write that one. Reuse last notes fills every language you sent last time that the store still offers. With Use these settings next time, the languages you sent in open again for the next build as empty fields. VibeView saves the languages, never the text.

After you send

On TestFlight, the build’s Store submissions card shows the What to Test step with the languages that were added. If App Store Connect refuses one language, the other notes are still sent and testers still get the build. The card, vibeview submissions status and --wait-distribution say which language wasn’t added.

On Google Play, the Store submissions card lists every language the release notes were sent in.

Example run, 24 October 2026

On 24 October 2026 we sent build 7 of Kitlist, a public Expo sample app, to an internal and an external TestFlight group. We sent it from the dashboard, with What to Test notes in English (en-US) and German (de-DE). Apple approved it in Beta App Review the same evening, and vibeview submissions status showed What to Test: Set for en-US, de-DE.

The same day, a Google Play submit with --notes-dir holding de-DE.txt and fr-FR.txt was refused before any upload. The message named the two missing languages and Play Console’s Manage translations path. Adding the languages to the Play listing, or sending without those files, is the fix.

That is one day’s run, not a promise about how long Apple’s review takes.

Next: add a notes/ folder next to your release notes and pass --notes-dir on your next vibeview submit. For the Google Play release choices, see Google Play staged rollout and release notes from the CLI.

Frequently asked questions

Do I have to send a note in every language?

No. Every language is optional. A note in another language is only sent together with a note in the default language.

Why was my Google Play upload refused for a language?

Google Play takes notes only in languages your Play listing has. Add the language in Play Console (Grow users → Store presence → Main store listing → Manage translations), or remove that file.

What happens if Apple refuses one language?

The other languages are still added and testers still get the build. The submission says which language wasn’t added.

Does the Amazon Appstore take notes by language?

No. Amazon writes one release note to every language of your listing, so --notes-dir doesn’t apply there.

Apple’s and Google’s pages referenced here were checked on 25 October 2026.

Try it yourself

Open a live iOS simulator, Android emulator, Apple TV, Android TV or Roku in your browser.

Start free