appstore
Use when preparing an App Store or TestFlight step of a Polyforms app (listing, captures and panels, first subscription submission, release notes, signing secrets) or when App Store Connect refuses so
SKILL.mdskills/appstore/SKILL.md
GitHubApp Store Connect
The release, in order
bun run deprecations, remove what is removable, floor raised by the script's value.- Notes in
CHANGELOG.mdand eachCHANGELOG.<lang>.md(rule 06), French shown and approved in the conversation. - Push
main, watch Deploy. - Captures and panels only if the person asked.
git tag ios-v<version> && git push origin ios-v<version>; watch Release to the end.
Secrets the iOS workflows read
| Secret | What |
|---|---|
ASC_KEY_ID, ASC_ISSUER_ID, ASC_KEY_P8 |
The team's App Store Connect API key |
IOS_DIST_CERT_P12, IOS_DIST_CERT_PASSWORD |
The Apple Distribution certificate, base64 |
IOS_PROVISION_PROFILE |
The App Store profile named <App> App Store, base64 |
IOS_GOOGLE_SERVICE_INFO_PLIST |
The Firebase plist, base64 |
IOS_SENTRY_DSN, SENTRY_AUTH_TOKEN |
Reporting and dSYM upload |
What has no API
Done once, in the built-in browser, signed in as the person: the app record, the price schedule, the App Privacy answers, accepting a new agreement (account holder only).
First subscription
The API refuses every direct route (FIRST_SUBSCRIPTION_MUST_BE_SUBMITTED_ON_VERSION,
SUBSCRIPTION_GROUP_SUBMISSION_NOT_ALLOWED). The sequence that works:
- API: create a draft
reviewSubmission(platform IOS), add theappStoreVersionas an item. - Browser: the subscription group's page, "Add for review" is a dropdown, pick the draft; then each subscription's page, same dropdown, same draft.
- The draft's "Submit for review" becomes active; submit. Cancelling takes a minute; a draft without items cannot be cancelled, delete its items.
Listing traps
- A name held by another account in a locale answers 409: "Name: What it does".
- Keywords: 100 characters, checked by App Store Connect.
- A locale with release notes but no listing is created empty and the submission is refused:
add a locale's
infra/fastlane/metadata/<locale>/before its notes. - The product page header (16:9) is dragged in by hand: there is no API for it.
TestFlight
Adding a tester who belongs to another app's group answers 409: create the tester with
POST /v1/betaTesters carrying the group relationship.