Quick Start
Features
Phase 1 scope:- App-info localizations: name, subtitle, privacyPolicyUrl, privacyChoicesUrl, privacyPolicyText
- Version localizations: description, keywords, marketingUrl, promotionalText, supportUrl, whatsNew
- Categories, copyright, review information, age ratings, screenshots
Subcommands
pull- Pull metadata from App Store Connect into canonical filespush- Push metadata changes from canonical filesvalidate- Validate metadata files for errors
Commands
metadata pull
Pull metadata from App Store Connect into canonical files:--app- App Store Connect app ID (orASC_APP_ID)--version- App version string (e.g.,1.2.3) (required)--platform- Optional platform:IOS,MAC_OS,TV_OS, orVISION_OS--dir- Output root directory (required)--force- Overwrite existing metadata files in--dir--include- Included metadata scopes (default:localizations)--output- Output format:json,table,markdown--pretty- Pretty-print JSON output
metadata push
Push metadata changes from canonical files:--app- App Store Connect app ID (orASC_APP_ID)--app-info- App Info ID (optional override)--version- App version string (e.g.,1.2.3) (required)--platform- Optional platform:IOS,MAC_OS,TV_OS, orVISION_OS--dir- Metadata root directory (required)--include- Included metadata scopes (default:localizations)--dry-run- Preview changes without mutating App Store Connect--allow-deletes- Allow destructive delete operations (disables default locale fallback)--confirm- Confirm destructive operations (required with--allow-deletes)--output- Output format:json,table,markdown--pretty- Pretty-print JSON output
default.jsonfallback is applied only when--allow-deletesis not set- With
--allow-deletes, remote locales missing locally are planned as deletes - Omitted fields are treated as no-op; they do not imply deletion
metadata validate
Validate metadata files for errors:--dir- Metadata root directory (required)--output- Output format:json,table,markdown--pretty- Pretty-print JSON output
File Format
App Info Localization
metadata/app-info/en-US.json:name- App name (30 characters max)subtitle- App subtitle (30 characters max)privacyPolicyUrl- Privacy policy URLprivacyChoicesUrl- Privacy choices URLprivacyPolicyText- Privacy policy text
Version Localization
metadata/versions/1.2.3/en-US.json:description- App description (4000 characters max)keywords- Keywords (100 characters max)marketingUrl- Marketing URLpromotionalText- Promotional text (170 characters max)supportUrl- Support URLwhatsNew- What’s new / release notes (4000 characters max)
Default Locale
metadata/app-info/default.json:default.json file provides fallback values for locales not explicitly defined. It is only applied when --allow-deletes is not set.
Workflow
1. Pull Current Metadata
Pull metadata from App Store Connect:2. Edit Locally
Edit the JSON files in your preferred editor:3. Preview Changes
Preview changes with--dry-run:
4. Apply Changes
Apply changes to App Store Connect:Examples
Add New Locale
-
Create locale file:
-
Edit content:
-
Push changes:
Update What’s New
-
Edit release notes:
-
Update
whatsNewfield: -
Preview and apply:
Delete Locale
With--allow-deletes, remove a locale by deleting its file:
Version Control
Commit metadata files to version control:- Track changes over time
- Review metadata changes in pull requests
- Revert to previous versions
- Collaborate on metadata updates
