Write What's New in every language with Xcode
Xcode already knows what changed in this release. Ask it to turn that into What's New, translate it, and stage it for every language on your listing. MetaRun holds each one to Apple's limits and shows the before and after per language.
Setup checked October 2026 against Apple: extending and customizing agents, giving external agents access to Xcode
Connect Xcode once
01 · Add the MetaRun plug-in
In Xcode 27, open Settings, Intelligence, Plug-ins. Choose Add Plug-in, then Add from URL, and paste:
https://github.com/metarun/metarun-skills02 · Or with one click
Opens Xcode's plug-in sheet with the repository filled in.
xcode://agent-plugin-clone?repo=https%3A%2F%2Fgithub.com%2Fmetarun%2Fmetarun-skills03 · Sign in
Install MetaRun from the list, then click Sign in next to it. MetaRun opens in your browser; pick read-only or read and change.
04 · Ask the coding assistant
Claude Agent, Codex and Gemini in Xcode all get MetaRun's tools and its six workflow skills.
Attach build 312 to version 2.4 and tell me what blocks submission.What Xcode handles here
Release notes are the last thing anyone writes. By then the version is ready, the build is processed, and twelve languages still say last month's text. Copying translations into App Store Connect one locale at a time takes longer than writing them.
Through MetaRun, Xcode writes and translates, and MetaRun does the parts that must be exact: it reads the live version, checks What's New against Apple's 4,000-character limit, stages one change per language, and reports which languages are still missing it.
Before you start
- An update, not a first release: What's New only exists after the app has shipped once.
- The version still editable (being prepared, ready for review, or rejected).
- Something to work from: a changelog, the commit log, or your own notes.
How it runs
- 01
Gather what changed
Xcode works from what it can see: your changelog, merged pull requests, the commit log since the last tag, or what you tell it.
- 02
Read the version in every language
MetaRun returns the version's localizations so the agent knows which languages exist and what they say now.
- 03
Stage one change per language
Each language gets its own preview with the old and new text. Anything over 4,000 characters is refused at preview, not by Apple after submission.
- 04
Confirm coverage
Before calling the job done, Xcode reads listing coverage, which lists any language still missing What's New.
An example session in Xcode
Write What's New for 2.4 based on the commits in this project since the 2.3 tag.
- apple_list_version_localizationsVersion 2.4 has 12 languages. What's New is empty in each.
- apple_preview_set_version_localizationPreview: English (U.S.) What's New, 412 of 4,000 characters.
- Xcode asks before running apple_apply_set_version_localization. You read the preview above and approve.
- apple_apply_set_version_localizationApplied for English (U.S.).
- apple_get_listing_coverage11 languages still missing What's New. Xcode continues with those.
Illustrative: your apps, versions and numbers will differ. The tool names and their order are real.
The MetaRun tools Xcode calls
| Tool | What it does |
|---|---|
| apple_list_version_localizationsread | Every language on the version with its current What's New, description and keywords. |
| apple_preview_set_version_localizationpreview + apply | Stage What's New (or description, keywords, URLs) for one language. |
| apple_get_listing_coverageread | Which languages are still missing which fields, so the job isn't declared done early. |
| apple_get_listing_editabilityread | Whether the version's text is editable right now. |
| aso_lint_metadataread | Checks copy against App Store rules before it's staged. |
| apple_preview_set_promotional_textpreview + apply | The 170-character line above the description that changes live, without review. |
| aso_schedule_promo_textMetaRun | Schedule promotional text to switch at a set time, for example on launch day. |
Each preview has an apply twin (the same name with apply instead of preview) that only runs with the confirm token from a fresh preview, and refuses if App Store Connect changed in between. MetaRun tools save to your MetaRun workspace only (studio projects, tracked keywords), never to Apple.
What Apple enforces, and how MetaRun handles it
No What's New on a first version
Apple has no What's New field until the app has shipped once. The API rejects it and App Store Connect hides it, so MetaRun only asks for it on updates.
4,000 characters per language
What's New and the description each allow 4,000 characters. Promotional text allows 170 and is the only one of the three that changes without review.
Text locks once the version is in review
What's New is editable while the version is being prepared or after a rejection. apple_get_listing_editability tells the agent which fields are locked and why, instead of a write failing.
Adding a language creates rows Apple fills in
When a new language is added, Apple creates that language's other localization rows on its own. MetaRun's confirm token is keyed on the language, not Apple's row id, so your approved change doesn't fail as drift.
What to ask Xcode
- Ask Xcode: Write What's New for 2.4 based on the commits in this project since the 2.3 tag.
- Ask Xcode: Translate the English What's New into Japanese, Korean and Simplified Chinese and stage them.
- Ask Xcode: Schedule promotional text for launch day at 09:00 UTC.
How Xcode asks before a change
Xcode asks before an agent uses a tool it hasn't been allowed. Tools you've allowed are listed in Settings, Intelligence, under Permissions, where you can remove them. Leave MetaRun's apply tools off that list so every App Store change asks first; reads and previews are safe to allow.
Frequently asked questions
Who writes the translations, Xcode or MetaRun?
Xcode does. MetaRun reads the live listing, checks the limits, and stages one change per language for you to approve. Translations through your own agent don't use MetaRun's AI translation budget.
Can Xcode update release notes after the app is live?
Not What's New: it locks with the version. Promotional text is the exception and changes the live listing immediately, so that's what to use for a post-launch message.
How many languages can it handle at once?
Every language on your listing. Each one is its own preview, so you can approve some and skip others.
Will it overwrite my description by accident?
Only fields the agent names are touched, and each preview shows the field's old and new text before anything is applied.
How do I connect Xcode to App Store Connect?
In Xcode 27, add the plug-in from https://github.com/metarun/metarun-skills (Settings, Intelligence, Plug-ins, Add from URL) and click Sign in next to MetaRun. After that, ask for "release notes" in plain words and Xcode picks the MetaRun tools.
Does Xcode see my App Store Connect key?
No. Your App Store Connect API key stays envelope-encrypted on MetaRun's servers and is decrypted per request. Xcode holds a MetaRun token that you can revoke in Settings at any time.
More with Xcode
Xcode
Localize your listing
Name, subtitle, keywords and description in every App Store language, limits checked.
OpenXcode
Submit for review
Attach the build, clear export compliance, run the readiness sweep, submit.
OpenXcode
ASO keywords
Find keywords from App Store autocomplete, track ranks, and lint your metadata.
OpenXcode
Phased release
Choose how an approved version goes out, then pause, resume or finish a phased rollout.
OpenRelease notes with another agent
In depth: Listing translation
Agent access
14-day free trial with agent access. No credit card. Your Apple key stays encrypted on MetaRun.