# Store metadata: title, description, and screenshots

All store texts and images of your app live version-controlled in the app repository, and the pipeline uploads them every time it publishes.

> Source: https://www.application-platform.com/en/docs/store-metadata/

You maintain titles, descriptions, keywords, links, and screenshots as files in the app repository in the Fastlane structure; the `publish-ios` and `publish-android` jobs upload them every time they publish. In the platform you edit the texts in an editor and manage the languages through the **language chips**.

## Texts per language

Every language has a folder such as `de-DE` or `en-US` with one text file per field, for iOS under `ios/fastlane/metadata/<language>/`:

| File | Content |
|---|---|
| `name.txt` | App name in the store |
| `subtitle.txt` | Subtitle |
| `description.txt` | Description |
| `keywords.txt` | Search keywords, separated by commas |
| `release_notes.txt` | What's new |
| `support_url.txt`, `marketing_url.txt`, `privacy_url.txt` | Links to support, marketing, and privacy policy |
| `apple_tv_privacy_policy.txt` | Privacy policy for Apple TV |
| `app_clip_default_experience_subtitle.txt` | Subtitle of the App Clip |

For Android they live under `android/fastlane/metadata/<language>/`:

| File | Content |
|---|---|
| `title.txt` | App name in the store |
| `short_description.txt` | Short description |
| `full_description.txt` | Description |
| `keywords.txt` | Search keywords, separated by commas |
| `recent_changes.txt` | Changes in this version |
| `support_url.txt`, `marketing_url.txt`, `privacy_url.txt` | Links to support, marketing, and privacy policy |
| `promotional_text.txt` | Promotional text |
| `changelogs/default.txt` | Default changelog |

## Details for the whole app

Language-independent details live directly in the metadata folder. For iOS, `ios/fastlane/metadata/` holds the categories (primary and secondary with subcategories), `copyright.txt`, `app_store_title.txt`, `app_default_language.txt`, and the app icon `app_icon.png` at 1024 × 1024 pixels. The age rating including gambling and loot boxes is in `app_rating_config.json`, the privacy details in `app_privacy.json`, and the contact details for review in `review_information/*.txt`. For Android, `android/fastlane/metadata/` holds the icon `app_icon.png` and the data safety details `google_data_safety.csv`.

Android store graphics live per language under `images/`: `icon.png` (512 × 512 pixels), `featureGraphic.png` (1024 × 500 pixels), `promoGraphic.png`, and `tvBanner.png`.

## Screenshots

You place screenshots in the metadata folders yourself (iOS: iPhone and iPad, assigned by filename; Android: phone plus 7-inch and 10-inch tablets) or let the pipeline generate them through UI tests:

1. Define the screens in `test/goldens/Framefile.json` and the marketing texts above them in `test/goldens/<language>/title.strings`.
2. Commit an empty file `.doppelt-digital-create-new-screenshots` to the repository root and push to `main`.
3. The pipeline renders the screens in all project languages in screenshot test mode (`SCREENSHOT_TEST_MODE`), frames them with Frameit, and stores them in the metadata folders.
4. On the next publish, the pipeline uploads the new screenshots and removes the marker file again.

