Indie iOS Game Launch Checklist (from Windows)
Launching on iOS as a solo developer is less about code than about paperwork. Here's the complete list, in the order you'll actually need each item.
Phase 1 — Accounts and identifiers
- Apple Developer Program membership — $99/year. Enrolment can take from minutes to a couple of days, so do it first.
- Bundle identifier — reverse-DNS, e.g.
com.yourstudio.yourgame. Set it in Unity's Player Settings and register it in your Apple account. Never ship Unity's default. - App record in App Store Connect — created under Apps → +. Uploads have nowhere to land without it.
- App Store Connect API key — a
.p8with the App Manager role, so tooling can upload for you. Download it immediately; Apple only offers it once.
Phase 2 — Signing
- iOS distribution certificate (plus its private key — keep the
.p12safe). - App Store provisioning profile matching your bundle ID.
- Confirm the profile is
ACTIVE, notINVALID— changing App ID capabilities silently invalidates profiles.
See Unity iOS code signing explained if any of that is unfamiliar.
Phase 3 — Build requirements Apple enforces
- App icon 1024×1024, fully opaque — transparency or an alpha channel triggers rejection
ITMS-91111. This one catches almost everyone once. - Current SDK — Apple periodically raises the minimum SDK; builds made with an older Xcode get rejected at upload.
- Unique, increasing build number — each upload needs a
CFBundleVersionhigher than the last for that version, or you get error90189. - Encryption compliance answer — most games answer "no" / standard encryption only, but the build stays unusable until you answer it.
Phase 4 — TestFlight beta testing
Never submit for review without testing on a real device first. Once your signed build is uploaded:
- Internal testers (up to 100 people on your team) can install almost immediately after processing.
- External groups (up to 10,000) need a brief Apple beta review before invites go out.
- Testers install via the free TestFlight app. Builds expire after 90 days.
Test on the oldest device you claim to support, not just the newest — performance and memory issues surface there first.
Phase 5 — Store listing
- Screenshots for the required device sizes (6.7" iPhone and 12.9" iPad at minimum).
- Name, subtitle, description, keywords — the keyword field is invisible to users but drives App Store search.
- Privacy policy URL — mandatory for every app, even offline ones.
- App Privacy answers — declare what data you and your SDKs collect. Ad SDKs collect identifiers; declare them honestly.
- Age rating and category.
Phase 6 — Submission
Attach the TestFlight build to your version and submit. Review typically takes 24–48 hours. Common rejection causes for indie games: broken links in the listing, missing privacy policy, placeholder content, crashes on the reviewer's device, and Guideline 4.3 (spam) if your game looks like a reskin of an existing title.
Doing all this from Windows
Every phase above except the build/sign/upload step happens in a browser and is OS-independent. That one step — compiling the Xcode project, code-signing, and uploading — is the only thing that needs macOS, and cloud build services or tools like MacFree run it for you. A Windows PC is enough to complete this entire checklist.
Get to TestFlight without a Mac
MacFree handles signing, the cloud build and the upload from inside Unity on Windows or Linux.
Get MacFree on the Unity Asset Store →Frequently asked questions
What do indie developers need to launch an iOS game?
A paid Apple Developer Program membership, a registered bundle identifier and app record, an iOS distribution certificate with matching provisioning profile, a compliant 1024×1024 opaque icon, screenshots, a privacy policy, App Privacy answers, and a signed build tested via TestFlight.
How do you launch an iOS game as an indie developer on Windows?
Build in Unity on Windows, then run the Mac-only compile, signing and upload steps on a cloud macOS machine using a build service or automation tool. Everything else is done in a browser and works on any OS.
How does TestFlight beta testing work for Unity games?
After a signed build is uploaded it appears in TestFlight. Internal testers can install almost immediately; external groups need a short Apple beta review. Testers install through the free TestFlight app, and builds expire after 90 days.