Table of Contents
1. The Short Version: Three Things Actually Block You — a Mac, the Annual Fee, and the Xcode 26 Mandate
Updated October 23, 2026: Added the minimum deployment target (iOS 13 or later) in effect since September 9, 2026, the iOS 27 SDK requirement and iPhone Duo screenshots announced for April 2027, the new social media questions in the age rating questionnaire, the June and October 2026 App Review Guidelines revisions, and Japan’s new payment rules under the Mobile Software Competition Act.
Shipping a first iOS app requires a surprising amount of work beyond writing code. The places people get stuck, though, are predictable.
- You need a Mac. Xcode runs only on macOS. There is no supported path that stays entirely on Windows or Linux.
- You need to keep paying. The Apple Developer Program costs $99 USD per year (enrolling through the Apple Developer app on the Japanese App Store shows ¥12,800, as of October 2026) and recurs for as long as you want the app listed.[1][12] Google Play charges a one-time $25 registration fee instead — a structurally different deal.[11]
- Since April 28, 2026, builds must use Xcode 26 and the iOS 26 SDK. Binaries built with older Xcode versions are rejected at upload time.[2] Apple has also announced that from April 2027, builds must use the iOS 27 SDK or later.[13]
On the other hand, iOS has no pre-release testing quota comparable to Google Play's requirement that new personal accounts keep 12 testers opted in for 14 consecutive days. TestFlight beta distribution is strongly advisable but not mandatory. On that axis, iOS is clearly the lighter platform.
This article is the iOS counterpart to Publishing Your First Android App to Google Play, and walks the same ground at the same level of detail.
Figure 1: Six stages. Unlike Android there is no pre-release tester quota, but the SDK version and review guidelines bind much harder.
2. Prerequisites: Enrolling in the Developer Program, and the Mac Requirement
2-1. Individual vs. Organization
You choose one at enrollment. Both cost $99 per year, but the seller name shown on the App Store differs.[1]
| Type | Seller name shown publicly | What you need |
|---|---|---|
| Individual | Your own legal name | Identity documents, a payment card |
| Organization | Your company name | A legal entity, a D-U-N-S number, entity verification |
The detail indie developers most often miss: enrolling as an individual publishes your real name in the App Store's seller field. Using a handle elsewhere doesn't change this. To list under a business name, you need a legal entity and an Organization enrollment.
2-2. The Fee Is a Recurring Cost, Not a Setup Cost
Unlike Android's one-time $25, Apple's $99 recurs annually. If the membership lapses, your published apps are removed from the App Store. For a hobby app you'd like to leave running untouched for years, that difference matters more than it first appears.
Apple does waive the fee for qualifying nonprofits, educational institutions, and government entities, but individual developers are not eligible.[3]
2-3. Getting a Mac
Xcode is macOS-only, and the archive you submit to the App Store can only be produced by Xcode (or xcodebuild). If you don't own a Mac, a used Mac mini or a cloud Mac service are the usual routes. Since September 2026, App Store Connect also accepts apps built with Xcode 27.[13] Check the release notes of whichever Xcode you use for the macOS version it requires.
Figure 2: Apple charges $99 every year; Google charges $25 once. The gap widens the longer the app stays listed — and on Apple, lapsing delists it.
2-4. Rules for Charging Users in Japan (Mobile Software Competition Act)
Japan’s Mobile Software Competition Act came fully into force on December 18, 2025,[19] and starting with iOS 26.2 Apple opened the following options for Japan:[18]
- Offer an alternative payment method inside an App Store app, alongside Apple’s In-App Purchase
- Link out to your own website for purchases (not allowed in Kids category apps; links can’t be shown to users under 13, and users under 18 must pass a parental gate)
- Distribute through Apple-authorized alternative app marketplaces (subject to Notarization, a lighter review than App Review)
Fees depend on the route.
| Item | Fee |
|---|---|
| App Store commission | 21% (10% for Small Business Program members, subscriptions after their first year, and similar cases) |
| Additional fee when paying through Apple’s In-App Purchase | +5% |
| Store services commission on purchases via web links | 15% (10% under the same conditions as above) |
| Core Technology Commission for distribution outside the App Store | 5% |
A free app is unaffected for now, but if you plan to charge users in Japan, the route you choose changes what you keep.
3. Building: Xcode 26 and the iOS 26 SDK Are Now Mandatory
3-1. The April 28, 2026 SDK Requirement
Since April 28, 2026, apps uploaded to App Store Connect must be built with Xcode 26 or later against the iOS 26 / iPadOS 26 / tvOS 26 / visionOS 26 / watchOS 26 SDKs.[2] This does not mean your app must require iOS 26. It constrains the SDK you build against; your Minimum Deployments target is a separate setting you still control.
Conflating the two leads people to think adopting the iOS 26 SDK means dropping older devices. It doesn't — build against the iOS 26 SDK while setting Minimum Deployments to, say, iOS 17, and older devices still receive the app.
There is a floor, though. Since September 9, 2026, iOS and iPadOS apps uploaded to App Store Connect must target iOS 13 or later.[2] And Apple has announced that from April 2027, apps must be built with the iOS 27 / iPadOS 27 SDK or later (no exact date yet).[13]
3-2. Signing: "Automatic" Is Fine
Apple's certificates and provisioning profiles are the rough analogue of Play App Signing. For solo development, enable Automatically manage signing in Xcode and attach your Apple ID; certificates and profiles are generated for you. Manual management only becomes necessary for CI/CD signing or shared team keys.
The mappings worth memorizing:
| Concept | iOS | Android |
|---|---|---|
| Distribution package | .ipa (produced by Xcode from an archive) | .aab (Android App Bundle) |
| Key management | Certificate + provisioning profile (Apple-managed) | Play App Signing (Google-held) + upload key |
| Unique identifier | Bundle ID (e.g. com.example.myapp) | Package name (e.g. com.example.myapp) |
| Version fields | CFBundleShortVersionString + CFBundleVersion | versionName + versionCode |
The Bundle ID cannot be changed after publishing — same rule as Android's package name. Decide it deliberately.
3-3. Archiving and Uploading
- Set the build destination to Any iOS Device (you cannot archive a simulator build).
- Run Product → Archive.
- When Organizer opens, choose Distribute App → App Store Connect.
- Once validation passes, the build uploads and appears under App Store Connect's TestFlight tab within minutes to tens of minutes.
Freshly uploaded builds sit in a processing state and can't be submitted until processing finishes.
3-4. Declaring Export Compliance for Encryption
An easily missed one: ITSAppUsesNonExemptEncryption in Info.plist. Without it, you're asked whether your app uses encryption on every single upload. Ordinary apps that only speak HTTPS often fall under an exemption, but whether that applies is a judgment about your own implementation.
4. App Store Connect: Listing Metadata and Screenshots
4-1. Creating the App Record
In App Store Connect, go to My Apps → + → New App. Set the name, primary language, Bundle ID, and SKU (an internal identifier for your own bookkeeping).
4-2. Screenshots and Icon
The required sizes have been consolidated compared with earlier years.[4]
| Asset | Size | Notes |
|---|---|---|
| App Store icon | 1024×1024 px | No transparency, sRGB PNG/JPEG |
| iPhone screenshots | 6.9-inch, 1320×2868 px, etc. | At least one needed. Apple’s required slot is "iPhone with Dynamic Island (medium display)," but larger screenshots are scaled down to fill it |
| iPad screenshots | 13-inch, 2064×2752 px | Required only if you declare iPad support |
| iPhone Duo screenshots | Outer display 1398×2034 px / inner display 2007×2853 px | Optional for now (adds an "optimized for iPhone Duo" badge). From April 2027, required for apps using the iOS 27.1 SDK or later [14] |
iPhone Duo is a new iPhone that went on sale on October 23, 2026; developing for it requires Xcode 27.1.[14]
App Store Connect rejects files that are off by even a single pixel, so lock down your export settings up front.
Note that declining iPad support removes the iPad screenshot requirement entirely. To keep a first release light, shipping iPhone-only and expanding later is the easier operational path.
5. Privacy Declarations: Three Different Things That Must Agree
This is the single most rejection-prone area as of 2026, which is why it gets its own chapter.
5-1. Three Distinct "Privacy" Artifacts
| Name | What it is | Where it lives |
|---|---|---|
| Privacy policy URL | A link to a publicly reachable static page | App Store Connect, app information |
| App Privacy ("nutrition label") | Your declaration of what data you collect, shown on the store listing | App Store Connect, App Privacy [5] |
| Privacy manifest | PrivacyInfo.xcprivacy — declares required-reason APIs and data collection inside the bundle | A file in your Xcode project [6] |
These three must not contradict each other, and mismatches are exactly what gets flagged in 2026. The classic failure is a binary that collects an advertising identifier while App Privacy claims no collection.
5-2. Account Deletion Is Mandatory
Apps that let users create an account must provide an in-app path to delete that account. Directing users to a contact form alone can be judged insufficient.
5-3. App Tracking Transparency
If you track users across other companies' apps and websites, you must request permission through Apple's own ATT dialog. Substituting a custom-built dialog is grounds for rejection.
Figure 3: Privacy spans three layers. Any disagreement between them and the actual binary becomes the rejection reason.
5-4. The Age Rating Questionnaire
Apple overhauled age ratings in 2025, adding 13+, 16+, and 18+ while retiring 12+ and 17+. Developers were required to complete an updated questionnaire by January 31, 2026; apps that didn't are blocked from new submissions and updates.[7] New enrollments today simply answer the current questionnaire from the start.
In July 2026, Apple added questions about social media capabilities (letting users redistribute, amplify, or interact with user-generated content through a feed or similar). They tie into Time Allowances, the parental controls in iOS 27, and since September 2026 answers are required when submitting new apps or updates. Apps with these capabilities show a "Social Media" descriptor on their product page.[15]
6. TestFlight: 100 Internal Testers Instantly, 10,000 External After Review
TestFlight has two tracks with genuinely different behavior. Confusing them costs a lot of time wondering why testers aren't receiving builds.
| Track | Capacity | Beta App Review | Time to distribution |
|---|---|---|---|
| Internal | Up to 100 App Store Connect users | Not required | Minutes after processing completes |
| External | Up to 10,000 (link or email invite) | Required | Typically several days as of 2026 |
Internal testers must be users you've invited to App Store Connect itself — you can't simply add a friend's email address. To distribute broadly, use the external track and clear Beta App Review.[8]
Unlike Android, TestFlight testing is not a precondition for release. That said, submitting to review without ever running on a physical device is reckless, so in practice running the internal track at minimum is the sensible baseline.
Figure 4: The internal track ships same-day with no review; the external track adds Beta App Review. The capacity differs by two orders of magnitude.
7. Submitting for Review, and What Actually Gets Rejected
7-1. How Long Review Takes
Apple states that the majority of submissions are reviewed within 24 hours.[9] In practice, several days is unremarkable, and longer delays were reported through the first half of 2026. The realistic posture is not to promise a launch date that assumes a 24-hour turnaround.
Expedited Review exists for genuine emergencies, but the number granted per account is limited — save it for when it matters.
7-2. The Rejections That Actually Bite in 2026
Cross-referencing the published review guidelines with commonly reported patterns, the mines indie developers step on cluster here.[10]
| Guideline | Issue | Typical indie cause |
|---|---|---|
| 1.5 Support URL | The support URL doesn't work | The page 404s, or is still a placeholder |
| 5.1.1 Privacy | Missing policy, or declarations contradicting the binary | App Privacy answers don't match the implementation |
| 4.2 Minimum functionality | Too little functionality; effectively just a website | A WebView wrapper around an existing site |
| 2.1 App completeness | Reviewer can't exercise the app | No demo account supplied; reviewer blocked at login |
4.2 (Minimum Functionality) is the one indie developers wrapping an existing website hit most often. You need genuine native integration and an experience that justifies being an app.
Equally important: if your app requires login, always supply a demo account for the reviewer in the App Review Information section. Leaving it blank reliably earns a 2.1 rejection for being unverifiable.
The guidelines themselves were revised twice in 2026. On June 8, Apple clarified the basis for 4.3(a) and 4.3(b) (spam and copycat apps) and added examples.[16] On October 16, it added guideline 2.5.19, which prohibits "bait-and-switch" apps that add features after approval that weren’t in the reviewed version, as well as hidden or dormant features (content previously in 2.3.1), and stated that violators can be removed from the App Store and from the Developer Program.[17] Submitting a "review-only" version is simply not an option.
7-3. Choosing How to Release
Once approved, you control the timing.
- Manual release: publish when you choose. Safest for a first launch.
- Automatic release: goes live as soon as it's approved.
- Phased release: for updates, rolls out gradually over seven days — the analogue of Android's staged rollout.
Phased release is an update-only feature and isn't available for a first launch. Ship the initial version on manual release so you can inspect the live listing before it goes public.
8. iOS vs. Google Play, Side by Side
"Publishing as an individual" means quite different things on the two platforms.
| Dimension | iOS / App Store | Android / Google Play |
|---|---|---|
| Registration fee | $99/year, recurring | $25, one time |
| Development machine | Mac required | Windows / macOS / Linux |
| Distribution format | .ipa | .aab |
| Build requirement | Xcode 26 + iOS 26 SDK (from Apr 28, 2026); iOS 27 SDK announced for Apr 2027 | Target API 36 (from Aug 31, 2026) |
| Mandatory pre-release testing | None (TestFlight optional) | 12 testers × 14 days for new personal accounts |
| Review | Primarily human review; hours to days | Automated + human; several days |
| Staged rollout | Updates only, over 7 days | Available from the first release, by percentage |
A useful compression: iOS front-loads the cost (money and a Mac); Android back-loads it (the testing requirement). If you're shipping to both, the time-efficient play is to run Android's 14-day closed test while iOS review proceeds in parallel.
Figure 5: The weight sits in different places — iOS at the entrance (annual fee and a Mac), Android at the exit (12 testers × 14 days).
9. A Ready-to-Use Checklist
Enrollment and build
- [ ] Enrolled in the Apple Developer Program (Individual publishes your legal name)
- [ ] Able to build with Xcode 26+ against the iOS 26 SDK
- [ ] Bundle ID finalized (cannot be changed after publishing)
- [ ]
Minimum Deploymentsset to your intended oldest iOS version (iOS 13 or later required since September 9, 2026) - [ ] Certificates and profiles via Automatically manage signing
- [ ]
ITSAppUsesNonExemptEncryptionset inInfo.plist - [ ] Uploaded via Product → Archive → Distribute App
Store listing
- [ ] Icon 1024×1024 (no transparency, sRGB)
- [ ] iPhone 6.9-inch 1320×2868 screenshots
- [ ] iPad 13-inch 2064×2752 (only if declaring iPad support)
- [ ] iPhone Duo screenshots (optional now, planned to be required from April 2027)
- [ ] Description, keywords, and a support URL that actually resolves
- [ ] Privacy policy URL on a publicly reachable static page
Privacy and review readiness
- [ ] App Privacy answers match the implementation
- [ ]
PrivacyInfo.xcprivacybundled, declaring required-reason APIs - [ ] In-app account deletion, if the app has accounts
- [ ] Apple's ATT dialog, if you track across apps and sites
- [ ] Age rating questionnaire completed (including the social media questions)
- [ ] Demo account and notes filled into App Review Information
Testing and release
- [ ] Verified on a physical device via internal testers (up to 100)
- [ ] External track cleared through Beta App Review if needed (up to 10,000)
- [ ] First release set to manual so you can inspect the listing
- [ ] Phased release (7 days) used for subsequent updates
10. Conclusion
What trips people up on iOS isn't the code — it's the prerequisites and the consistency of your declarations. Absorb the entry cost of a Mac and the annual fee, build with Xcode 26 and the iOS 26 SDK, and make the three privacy layers (policy URL, App Privacy, privacy manifest) agree with what the binary actually does. Get that far and review becomes markedly smoother.
Because there's no pre-release tester quota, the shortest path to a first release is genuinely shorter on iOS. The trade is the recurring $99 — a real consideration for a hobby project you intend to leave running. Understand those two facts and you can decide which store to ship to first.
The Android side is covered in Publishing Your First Android App to Google Play; read both if you're targeting each.
References
- [1]Apple Developer, Apple Developer Program — What's included. ↩
- [2]Apple Developer, Upcoming requirements. ↩
- [3]Apple Developer, Fee waivers. ↩
- [4]Apple, Screenshot specifications — App Store Connect Help. ↩
- [5]Apple Developer, App privacy details on the App Store. ↩
- [6]Apple Developer, Privacy manifest files. ↩
- [7]Apple Developer, Updated age ratings in App Store Connect. ↩
- [8]Apple Developer, TestFlight. ↩
- [9]Apple Developer, App Review. ↩
- [10]Apple Developer, App Store Review Guidelines. ↩
- [11]Google Play Console Help, Open a Play Console developer account. ↩
- [12]App Store (Japan), Apple Developer, in-app purchase "Apple Developer Program ¥12,800" (checked October 2026). ↩
- [13]Apple Developer, App Store submissions now open for the latest OS releases (September 9, 2026). ↩
- [14]Apple Developer, Prepare and submit your apps for iPhone Duo (October 5, 2026), and Screenshot specifications (checked October 2026). ↩
- [16]Apple Developer, Updated DPLA and App Review Guidelines (June 8, 2026). ↩
- [17]Apple Developer, Updated App Review Guidelines and Strengthening guidelines against nonconsensual intimate imagery and bait-and-switch apps (both October 16, 2026). ↩
- [18]Apple Newsroom, Apple announces changes to iOS in Japan (December 17, 2025). ↩
- [19]Japan Fair Trade Commission, Mobile Software Competition Act (fully in force since December 18, 2025). ↩
NOVEL SERIES VOL.1
The World Became Slightly Farther Away
The world may not change, but distance can.
A story about a man who cannot treat promises lightly, and the people he meets.The sequel, Clouded Glass, is out too. Start here.
View on Amazon
Jijoden.com
Your life is worth writing.
There is a truer self you can tell only to AI.Gather fragments of memory into a single story.
Take a LookRelated Articles
Making Jev’s Speed and Cost Playable: Two Hours of Conversation, Zero Handwritten Lines
Trying Jev turned into a buzzword game through conversations with Claude Code. A real demo, roughly 400ms responses, about ¥5 in API usage, and the mistakes that moved decisions back into code.
Why ChatGPT Pro and Codex Are the Best Value for Indie Developers
A practical comparison of ChatGPT Pro, Codex, Cursor, Copilot, Claude Code, Devin, and Google AI Pro from the viewpoint of an indie developer who actually burns through AI tooling.
Two Axes Revealed by iOS 26.3 and iOS 26.4 Beta
A deep dive into iOS 26.3 interoperability changes and iOS 26.4 beta foundations, and what they mean for Siri’s redesign with Gemini.
Fable 5.1 or Opus 5.5 in Claude Code? A Decision Matrix Built on Evidence, User Reports, and Effort
Compare Fable 5.1 and Opus 5.5 in Claude Code using official and independent evaluations, user reports, pricing, effort, and Ultracode. Includes a task matrix and a practical routing skill design.
What Makes Gemini 4 Argon Different? — GPT-6, Claude Fable 5.1, and Opus 5.5 Compared
Compare Gemini 4 Argon with GPT-6.1 Sol, GPT-6 Astra, and Claude Fable 5.1, Opus/Sonnet 5.5: shared context, long output, video and audio input, introductory pricing, and practical choices for coding, analysis, and everyday work.
From the Pocho Lab
