๐Ÿš€ ShipToStore

iOS publishing guide ยท 5 steps ยท ~3h 57m

โœ… Prerequisites

Everything you need on hand before spending money or time on enrollment.

Get a Mac with current Xcode (or plan to build in the cloud)

1h

Building and uploading iOS apps locally requires macOS + Xcode.

  • Install Xcode from the Mac App Store or developer.apple.com/download โ€” it's a ~12 GB download, so start it now.
  • Apple requires uploads built with a recent Xcode/SDK (new App Store submissions must use an SDK version Apple currently accepts โ€” staying on the latest stable Xcode keeps you safe).
  • After installing, launch Xcode once to accept the license and install additional components, then verify the command-line tools:

No Mac? If you're on Expo, EAS Build compiles and submits in the cloud โ€” you can ship without ever owning a Mac. Flutter/RN-bare users can use CI services with macOS runners (Codemagic, GitHub Actions macos runners), though debugging without a Mac is painful.

xcode-select --install
xcodebuild -version

Apple ID with two-factor authentication enabled

10 min

Developer Program enrollment requires an Apple ID with two-factor authentication (2FA).

  1. Go to account.apple.com โ†’ Sign-In and Security and confirm Two-Factor Authentication is on (on-device: Settings โ†’ [your name] โ†’ Sign-In & Security).
  2. Make sure the first and last name on the Apple ID exactly match your government ID โ€” mismatches are the top cause of enrollment getting stuck 'pending'.
  3. Consider a dedicated Apple ID for development (e.g. dev@yourdomain.com) if you want to separate personal and business โ€” but remember the legal name must still be your real name for an Individual account.

Finish the app: no placeholders, no crashes, graceful offline

2h

App Review tests your app like a hostile first-time user. Before going further, audit:

  • No placeholder content: no lorem ipsum, no 'coming soon' screens, no dead buttons. Hide unfinished features entirely (Guideline 2.1).
  • No crashes: test a clean install (delete + reinstall โ€” review always sees first-run), and test on a real device, not just the simulator.
  • Offline-graceful: airplane-mode the device and tap through the app. Show friendly empty/error states instead of spinners-forever or crashes. Reviewers test on flaky networks (and over IPv6 โ€” make sure your backend supports NAT64/IPv6 networks).
  • iPad: unless you restrict the device family, reviewers run iPhone apps on iPad too. Launch it once in an iPad simulator.
  • Test on the latest iOS version โ€” that's what review uses.

Budget the $99/year Apple Developer Program fee

2 min

Membership costs $99/year (USD; local-currency equivalents vary), charged at enrollment and auto-renewing annually.

  • The fee is the same for Individual and Organization accounts.
  • It is not refundable in most regions once apps are published, and if you let it lapse your apps are eventually removed from the App Store until you renew.
  • Fee waivers exist for eligible nonprofits, accredited educational institutions, and government entities (US and some other countries).
  • You do not need to pay to start coding โ€” the free Apple Developer account lets you run on your own device. The fee is required for TestFlight and App Store distribution.

Prepare app icon source art at 1024ร—1024

45 min

You need a 1024ร—1024 px marketing icon โ€” the master from which all sizes derive.

Rules:

  • No alpha channel / transparency โ€” the icon must be fully opaque (export PNG without alpha, or flatten onto a solid background).
  • No pre-rounded corners โ€” Apple applies the squircle mask itself; baked-in rounding shows dark corner artifacts.
  • No transparency-dependent design, and keep important detail away from the corners the mask will clip.
  • sRGB or P3 color, PNG or JPEG.

Modern Xcode (and Expo/Flutter tooling) can generate all smaller sizes from this single 1024 image, so invest the time here once.

โš ๏ธ Pitfall

A PNG exported with an alpha channel sails through local builds and then fails after upload with ITMS-90717 โ€” one of the classic 'build never appears in TestFlight' causes.

โ† Choose your account typeEnroll in the Apple Developer Program โ†’

Track this interactively

Check off steps, skip what doesn't apply, and pick up where you left off.

Open the checklist โ€” free