Skip to main content

Metadata

Update localized App Store version metadata from assets/app-store-connect/{workspace}/metadata/{platform}/{locale}.json.

Nova accepts description, keywords, marketingUrl, promotionalText, supportUrl, and whatsNew. A string updates that field. null is a local placeholder and is never sent to Apple. Files without any populated editable fields fail before authentication.

App Store Connect requests run through a small bounded queue instead of updating every target at once. Nova creates the request token, headers, and timeout only after a queue slot is available, and refreshes a token when less than 60 seconds remain. It honors Retry-After and pauses the whole client when a 429 or Apple's X-Rate-Limit header shows that the hourly budget is nearly exhausted. Without Retry-After, rate-limit retries back off for up to about 10 minutes in total before failing. A rate-limit exhaustion error says that the run is safe to resume after Apple's budget resets. When one bounded batch fails, its already in-flight operations finish, every failure from that batch is reported together, and later batches do not start.

Credentials

Nova discovers App Store Connect API keys only from Apple's conventional AuthKey_{KEY_ID}.p8 locations:

  • ./private_keys
  • ~/private_keys
  • ~/.private_keys
  • ~/.appstoreconnect/private_keys

Pass --key-id when more than one key exists and --issuer-id when the selected key requires an issuer. Nova never stores either value in nova.config.json.

Usage

Options

FlagDescription
--bundle-id <id>Override the bundle identifier derived from the Apple workspace.
-d, --dry-runValidate and print the complete plan without authenticating.
--issuer-id <id>App Store Connect API issuer ID when required by the selected key.
--key-id <id>Select one discovered App Store Connect API key.
--locales <locales>Comma-separated locales to include.
-n, --non-interactiveDisable prompts; mutations also require -y, --yes.
--platforms <platforms>Comma-separated ios, macos, or visionos platforms to include.
--version <version>Override the marketing version derived from project.yml.
--workspace <workspace>Select a configured Apple workspace by name or path.
-y, --yesConfirm the complete mutation plan.

Only local files and fields in the printed plan are changed. Missing platforms, locales, and fields remain untouched.