# App Store pre-submit checklist for indie developers > A checklist worth going through before you press Submit for Review in App Store Connect, in a practical order. Build, listing, media, in-app purchases, review notes and what to do after you submit, each with one line of why and a link to the guide or browser tool that checks it. - Canonical page: https://obelisk.club/blog/app-store-submission-checklist - Author: Peter Zhang - Published: 2026-10-30 - Tags: app-store, app-review, checklist, aso, indie Before you submit to the App Store, check four things in this order: the build (distribution signing, entitlements, privacy manifest, purpose strings, a cold start on iPhone and iPad), the listing and media (Apple's length limits, no price words or other people's brands, screenshots of the real app), every in-app purchase in the same submission, and review notes with a working demo account. In our experience most rejections are a small miss in one of these: a word in the subtitle, a purchase that was not attached, a screenshot with an alpha channel. It helps to go through a list like this by hand, in this order, on real devices, before you submit. Each item says why it matters and where to check it. ## Why this order - **Build first.** A new build means re-checking everything that reads the build: permissions, privacy manifest, screenshots of the UI. - **Listing and media next.** Once a version is waiting for review, App Store Connect locks its screenshots and previews, so fixing a wrong image means removing the version from review. - **Purchases and notes last.** They depend on the final build and the final listing, and they are the items most often forgotten in the last ten minutes. ## Build 1. **The build is signed for distribution.** A development-signed build can upload fine and then turn into Invalid Binary after you submit. Open the embedded profile in our [provisioning profile viewer](/tools/provisioning-profile-viewer) and check that it is an App Store profile and that `get-task-allow` is not in the entitlements. 2. **Every entitlement has a reason.** If you cannot explain an entitlement in one sentence, remove it. Over-broad entitlements are a Mac App Store rejection in their own right; see the [Mac App Store checklist](/blog/mac-app-store-submission-checklist). 3. **The privacy manifest is in the build.** Apple's docs say that since May 1, 2024, App Store Connect does not accept apps that use a "required reason" API without declaring the reason in `PrivacyInfo.xcprivacy`. Build or check one with the [privacy manifest generator](/tools/privacy-manifest-generator). 4. **Every permission has a purpose string, and it explains.** Apple requires a purpose string for every protected resource your code touches. Explain what the access is for; never pressure ("allow this or the app won't work"), which reads as coercion under Guideline 5.1.1. Read the strings out of the actual `.ipa` with the [IPA inspector](/tools/ipa-inspector). 5. **The export compliance key is set.** Without `ITSAppUsesNonExemptEncryption` in `Info.plist`, App Store Connect walks you through the export compliance questions every time you upload. Set it to `NO` only if your app really uses no encryption, or only exempt encryption. 6. **Debug switches are compiled out.** A switch that unlocks paid features while you test, or shows a stand-in price, must sit inside `#if DEBUG`. Guideline 2.5.19 forbids hidden or undocumented features, and a free-unlock switch in a release binary is exactly that. 7. **The icon comes from one opaque 1024 × 1024 source.** Make the whole set from one file with the [app icon generator](/tools/app-icon-generator), so no size is stale or transparent. 8. **Universal links resolve.** If you use associated domains, check the live `apple-app-site-association` file with the [AASA validator](/tools/apple-app-site-association-validator) before the reviewer taps a link. 9. **Every language you list is translated.** Open your string catalog in the [xcstrings translation progress](/tools/xcstrings-translation-progress) tool. A language at 70% shows English in the middle of the UI. 10. **A cold start works, on iPhone and on iPad.** Install on a clean device, deny every permission, and walk the first path with no data. In our submissions, review of iPhone-only apps ran on an iPad Air, and Guideline 2.4.1 says iPhone apps should run on iPad whenever possible. More in [2.1, App Completeness](/blog/app-review-guideline-2-1-app-completeness-rejection). ## Listing 11. **Every field is inside Apple's limits.** Name 30 characters, subtitle 30, promotional text 170, description 4000, What's New 4000, keywords 100. Paste each language into the [App Store metadata checker](/tools/app-store-metadata-checker). 12. **The keyword field has no wasted words.** Words already in the name or subtitle, and plurals of words you already have, are wasted. Full rules in [how to fill the keyword field](/blog/app-store-keyword-field-guide). 13. **No price words.** "Free", "50% off" or a price in the name, subtitle or screenshots draws Guideline 2.3.7. See [the price words guide](/blog/app-review-guideline-2-3-7-free-price-words). 14. **No one else's brand.** A competitor's name in the subtitle or keywords is a 4.1(c) or 5.2.5 problem. See [brand names in metadata](/blog/app-review-brand-names-in-metadata-4-1-5-2-5). 15. **The store name matches the name under the icon,** in every language. See [2.3.8, name mismatch](/blog/app-review-guideline-2-3-8-app-name-mismatch). 16. **Paid features are labelled.** If the description lists something that needs a purchase, say so. See [2.3.2, paid features](/blog/app-review-guideline-2-3-2-paid-features-description). 17. **What's New names real changes.** Guideline 2.3.12 allows a generic note only for bug fixes and small improvements. 18. **Promotional text is not a second keyword field.** Apple says promotional text doesn't affect search ranking; use it for what is new right now. 19. **The support and privacy policy links open.** Apple lists broken links among the most common review issues. ## Media 20. **Screenshots are accepted sizes, with no alpha channel.** App Store Connect requires at least one screenshot for the iPhone with Dynamic Island (medium display), plus iPad 13-inch if the app runs on iPad, and its help says images can't include alpha channels or transparencies. Check and fix files in the [screenshot sizes tool](/tools/app-store-screenshot-sizes). 21. **Screenshots show the real app, as a free user sees it.** Not a splash screen, not a feature the build does not have. See [2.3.3, screenshots](/blog/app-review-guideline-2-3-3-screenshots-rejection). 22. **Previews meet the spec.** 15 to 30 seconds, at most 30 frames per second, and only screen capture of the app itself (Guideline 2.3.4). Check the file in the [app preview video checker](/tools/app-preview-video-checker). ## In-app purchases 23. **Every product is in the same submission as the version.** Apple's help says the app version, the subscription group and every purchase you want reviewed together "must all be added to the same draft submission before you click Submit for Review", and the first purchase of each type must go with a new app version. They are not included unless you add them. A missing one came back to us as a 2.1(b) rejection. 24. **The paywall works on a device and on iPad.** Products load, the buy button responds, restore works. A paywall that freezes is a 2.1(a) rejection, and the reviewer may be holding an iPad. 25. **The price is one you chose on purpose.** Check what you keep after Apple's commission with the [commission calculator](/tools/app-store-commission-calculator). ## Review notes and demo account 26. **The notes explain what is hard to find.** Where the paid features are, why each background mode is used (see [2.5.4, background modes](/blog/app-review-guideline-2-5-4-background-modes-rejection)), and what the app does on the network if it might look like a VPN (see [the VPN question](/blog/app-review-vpn-questionnaire-before-submission)). The notes field holds up to 4000 bytes. 27. **The demo account works and does not expire.** If the app has no login, make sure "Sign-in required" is not ticked. Fill in the contact phone in international format; the field does not accept a number without the country code. ## After you submit 28. **Leave it alone.** Apple says it typically reviews at least 50% of submissions in under 24 hours and 90% in under 48. Pick the version release option (manual, on approval, or on a date) before you submit, not after approval. 29. **If it comes back rejected,** read the guideline number before you change anything, and paste your rejection message into the [App Review rejection decoder](/tools/app-review-rejection-decoder) to see each guideline cited and what it means. A step-by-step approach is in [what to do after a rejection](/blog/after-app-store-rejection-what-to-do). 30. **After release,** see where the app sits in the charts by country with our [App Store rank checker](/app-rankings), and if you sell subscriptions, track them with the [subscription metrics calculator](/tools/subscription-metrics-calculator). ## FAQ ### What should I check before submitting an app to the App Store? Check the build (signing, entitlements, privacy manifest, purpose strings, a cold start on iPhone and iPad), the listing and media against Apple's limits and rules, every in-app purchase in the same submission, and the review notes and demo account. ### What are the App Store character limits for the name, subtitle and keywords? Name 30 characters, subtitle 30, promotional text 170, description 4000, What's New 4000 and keywords 100. ### Do in-app purchases have to be submitted with the app version? Yes. The version, the subscription group and every purchase you want reviewed together must be added to the same draft submission before you submit, and the first purchase of each type must go with a new app version. ### How long does App Store review take? Apple says it typically reviews at least 50% of submissions in under 24 hours and 90% in under 48. ### Can App Store screenshots have transparency? No. App Store Connect Help says screenshots can't include alpha channels or transparencies. ## One-minute check If you only have a minute, do the three items that are easiest to miss: open the version page and confirm every in-app purchase is in the submission, paste each language's subtitle into the [metadata checker](/tools/app-store-metadata-checker), and launch the build once on an iPad simulator. More browser tools for releases are on the [toolkit page](/toolkit). *These notes draw on rejections Obelisk Club's own apps have received. Apple's wording and App Store Connect change; check the current App Review Guidelines and App Store Connect Help before you submit.*