Skip to Content
Working with the codebaseFirst release checklist

First release checklist

The one-time work before your very first submission: what needs a human’s identity, money or judgement, or has no API at all.

Everything the submit pipeline scripts is off this list. What remains is short, and most of it can be started before the app is finished.

Accounts and money

  • Apple Developer Program enrolment, $99 a year. Enrolment can take days and nothing else starts without it
  • Google Play Developer account, $25 once
  • Store banking and tax agreements. Required before any paid distribution or in-app purchase, and a version sits blocked without them. asc web agreements status reads Apple’s; accepting them is a website job on both stores
  • The Play app record. Not in Google’s API, and unlike Apple there is no web-session fallback either. Play Console → Create app, with the package name from config.js’s general.androidPackageName

Credentials

Covered in full on Store credentials.

  • The App Store Connect API key. Generate the .p8, note the Key ID and Issuer ID, and move the file to ~/.appstoreconnect/. Apple offers that download once, and it lands in ~/Downloads where a terminal cannot read it. Read the credentials page before you click Generate
  • The Google Play service account, saved to credentials/google-play-service-account.json, with Release and store-presence access granted to that address in Play Console
  • brew install asc, then asc auth doctor
  • An Apple ID web session for the two steps with no public API, the app record and App Privacy: asc web auth login --apple-id you@example.com

The App Store app record

  • Create the app record. Not in Apple’s public API either: asc web apps create --name … --bundle-id … --sku …, or My Apps → New App on the website. Put the numeric Apple ID it gives you into eas.json’s ascAppId
  • Pricing and availability. The first setup cannot go through the public API. Set a price tier and territories in App Store Connect; asc pricing handles later edits
  • In-app purchase products, if you sell anything. RevenueCat does not create them. They have to exist in App Store Connect and Play Console first, and asc iap setup and asc subscriptions setup cover the App Store side once pricing exists

The question only you can answer

Content rights. declarations.config.json ships it unanswered and the script refuses to guess, because both answers assert something. See Age rating and content rights.

Play Console work with no API

  • The IARC content-rating questionnaire, target audience, ads, and the news, government and financial-app flags. Record the answers in play.config.json’s playConsoleOnly block, then enter them at Play Console → Policy → App content
  • The closed-testing period, for new personal developer accounts. A continuous test with real testers is required before production opens, and the threshold changes, so check Play Console
  • Play pricing and in-app products. inappproducts and monetization.subscriptions are real endpoints, but nothing in the repo wires them up

Already scripted

Listed so nobody goes looking for these by hand.

Was manualNow
App Store text metadata, categories, review contactscripts/listing.mjs
Screenshot upload per display size, iPad includedscripts/listing.mjs
The App Privacy questionnairescripts/privacy.mjs
The Play Data safety formscripts/play-privacy.mjs, from the same source file
Play listing text, feature graphic, screenshotsscripts/play-listing.mjs
Promoting a build between Play tracksscripts/play-release.mjs
Age ratingscripts/declarations.mjs
Version records, attaching the buildasc versions create and attach-build
Submitting for reviewasc review submit, on an explicit go
The first Android uploadeas submit -p android creates the first internal-track release
App icon size and alpha checksscripts/preflight.mjs

Run node .claude/skills/submit/scripts/preflight.mjs before spending a build and submit cycle. It reports what on this list is still open.

Next

Once this list is done, every later release is the pipeline on Submit to the stores, and nothing here comes back.

Last updated on