Setting up App Store Connect for the first time
Four decisions on the creation screen are effectively permanent, and one of them is the most consequential field in the whole product.
The bundle identifier cannot be changed. Ever. Changing it means a new app record: no reviews, no ranking, no existing users. Decide it deliberately, in reverse-domain form, and make sure it matches what your project actually builds.
The primary language is effectively permanent in practice.
The app name must be unique and within 30 characters, and the subtitle within 30. Longer strings are rejected or truncated at save time, which is a five-minute problem if you catch it and a rework if the listing was written around them.
The primary category shapes how the app is browsed and compared, and changing it later is possible but disruptive.
Two things must exist before you can get through submission, and both are checkable by a reviewer in under a minute: a live privacy policy URL and an App Privacy declaration that matches what the app actually does.
And one distinction saves a whole cycle: name, subtitle, keywords, description, screenshots and previews all require a submission and review to change. Promotional text is the only field that changes freely. Attach every metadata change to a build you are already submitting.
The order
1. Bundle identifier. In the Developer portal, before the App Store Connect record. Reverse domain, lower case, no placeholder you plan to change. Confirm it matches app.json or app.config.js and what your build actually produces.
2. The app record. Name, primary language, bundle identifier, SKU. Count the characters in the name and subtitle before typing them, not after writing the listing.
3. Privacy policy URL. It must be live. A policy that 404s, or that describes a different product, is one of the cheapest findings a reviewer can make.
4. App Privacy. Fill it from your dependency tree, not from memory. Analytics, crash reporting, attribution and support SDKs collect on your behalf, and that is your declaration to make. App privacy labels, and how RN apps get them wrong.
5. Age rating. The questionnaire, answered honestly. Apps with unpredictable output need a rating that reflects that. Submitting an AI app.
6. Pricing and availability. Setting price and metadata on an app that has never been released is part of the submission rather than a separate decision.
7. In-app purchases, if you sell anything. Products created, prices set, and the disclosure requirements met on the purchase screen itself. Guideline 3.1.2, subscriptions.
8. Screenshots. Right devices, showing the app, no other platforms, nothing fabricated. Screenshots and app previews.
9. Review notes and a demo account that works today. Review notes that work.
The four fields worth thinking about
Name (30). It is the strongest single ASO signal and it is what people say when they recommend you. Do not spend all thirty characters on keywords.
Subtitle (30). What the app does, in a sentence fragment. Not a slogan.
Keywords (100). Comma separated, no spaces after commas because spaces consume characters. Do not repeat words already in the name, subtitle or category — they already index, and repeating them wastes the field.
Description. The first two lines are what most people read. Everything else is for the person already interested.
And check all four for other-platform references, which is one of the most common metadata rejections for cross-platform teams. Guideline 2.3.10.
Before the first upload
The four upload-time blockers are decided before any human sees the build, and an Expo or React Native project meets them through dependencies rather than through code you wrote:
ITMS-90683 · ITMS-91053 · ITMS-91054/5/6 · ITMS-91061
Push a build to TestFlight early, because those checks run there too and finding them in week one is free. What TestFlight review does and does not check.
The changeable and the not
| Field | After release |
|---|---|
| Bundle identifier | Never |
| Primary language | Effectively not |
| Name, subtitle, keywords | Change with a submission and review |
| Description, screenshots, previews | Change with a submission and review |
| Promotional text | Changes freely, no review |
| Price and availability | Change without review |
| App Privacy | Update as the app changes |
The middle rows are the ones that cost a cycle. If you are already queued for a build, attach every metadata change to it.
Then the pre-submission pass
The first-submission checklist covers the review-time items, and the EAS submission checklist covers the build-side ones. shipcheck runs both passes from inside Claude Code, citing the guideline and naming the file. What it checks.
More in this section
About shipcheck
shipcheck is a pre-submission checker from Baker Ventures LLC that runs inside Claude Code. It reads your React Native or Expo project, finds the things that get apps rejected or blocked at upload, cites the exact App Store Review Guideline or Google Play policy clause, and names the file and line to fix.
It exists because React Native and Expo apps fail for reasons that are invisible in the code you wrote: capability arriving through a dependency, purpose strings added by a config plugin, a privacy manifest missing from an SDK you never chose directly, and a generated ios/ directory that discards your edits on the next prebuild. shipcheck checks what the binary and the config actually declare, not what you intended. The rejection references on this site are free, need no account, and link to the primary Apple or Google document for every claim.
Questions and answers
What do I need before creating an app in App Store Connect?
A bundle identifier you are happy with permanently, a name that is available and within the character limit, a primary category, and a privacy policy URL that is live. The bundle identifier in particular cannot be changed once the app record exists.
Can I change my app's bundle identifier later?
No. It is fixed once the app record is created, and changing it means a new app record with no reviews, no ranking and no existing users. This is the single most consequential field on the creation screen.
How long can an App Store app name be?
Thirty characters for the name and thirty for the subtitle. Longer strings are rejected or truncated at save time, which is a five-minute problem if you notice and a rework if the whole listing was written around them.
Do I need a privacy policy before I can submit?
Yes, and the URL has to be live and reachable. A policy that 404s or that describes a different app is a finding a reviewer can make in under a minute without opening the build.
What is the App Privacy section and when should I fill it?
It declares what data your app collects, whether it is linked to identity, and whether it is used for tracking. Fill it from your actual dependency tree rather than from memory, because SDKs collect on your behalf and that is your declaration to make.
What can I change after release and what cannot I change?
Name, subtitle, keywords, description, screenshots and previews can change, but each requires a submission and review. Promotional text changes freely. The bundle identifier, the primary language and the app record itself effectively cannot change.
shipcheck. “Setting up App Store Connect for the first time.” Baker Ventures LLC, September 7, 2026. https://shipcheck.bakerventuresstudio.com/guides/app-store-connect-first-time-setup/