Publishing an iOS App to the App Store
The first publication takes significantly longer than expected, not because of technical complexity, but because of a chain of steps, each of which can be done incorrectly and result in rejection within 24–48 hours. An app submitted for review on Friday with metadata errors will return on Monday with a formal rejection under Guideline 2.1 "Performance: App Completeness."
Preparation for Initial Submission
App Store Connect: Create an app record, specify the Bundle ID (must match the one in Xcode), Primary Language, and Category. Without creating the record, Transporter and Xcode Organizer cannot upload the build.
Screenshots: Minimum required sizes for publication — 6.5" (iPhone 14 Pro Max or equivalent) and 5.5" (iPhone 8 Plus). If you upload only one size, Apple scales it for others, but this degrades the visual quality of the listing. For iPad — a separate set if the app supports iPad.
Privacy: Since 2020, a Privacy Policy link is mandatory. Without it, rejection under Guideline 5.1.1. Also fill in Privacy Nutrition Labels in App Store Connect — which data is collected, for what purpose, and whether it's tied to identity.
Archiving and Upload
# Via Fastlane
fastlane pilot upload --ipa ./build/App.ipa
# Or via xcodebuild + Transporter
xcodebuild archive \
-scheme MyApp \
-archivePath ./build/MyApp.xcarchive \
-configuration Release
xcodebuild -exportArchive \
-archivePath ./build/MyApp.xcarchive \
-exportPath ./build/export \
-exportOptionsPlist ExportOptions.plist
ExportOptions.plist is critical. Wrong method (app-store vs ad-hoc vs development) — and the build will be created but won't work for upload.
<!-- ExportOptions.plist for App Store -->
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>method</key>
<string>app-store</string>
<key>teamID</key>
<string>YOURTEAMID</string>
<key>uploadBitcode</key>
<false/>
<key>compileBitcode</key>
<false/>
</dict>
</plist>
Bitcode is deprecated as of Xcode 14 — Apple removed it. If the project has old settings with ENABLE_BITCODE = YES, warnings will appear during archiving.
Review Process
Review takes from a few hours to 2–3 days. Main rejection reasons:
Guideline 2.1 — App Completeness: App crashes, demo account doesn't work, buttons lead nowhere. Before submission, test on a real device, not just the simulator. Provide a test account in Notes to App Review.
Guideline 4.3 — Spam / Copycat: If the app is too similar to another or has too little functionality. A new app from the same developer duplicating an already published one is also 4.3.
Guideline 5.1.2 — Data Use and Sharing: You request NSCameraUsageDescription but don't actually use the camera — rejection. The NSUsageDescription must correspond to real usage.
In-App Purchase: If the app has any paid content or subscriptions, they must use Apple's IAP, not third-party payment processors. Attempting to accept payment through Stripe for digital content — rejection under Guideline 3.1.1.
Appeal
If a rejection is unjustified, you can appeal through the Resolution Center in App Store Connect. Apple Developer Relations responds within 1–3 days. Appeals work: rejections on formal grounds with correct justification are often overturned.
Version Management and Phased Release
After approval, choose: immediate release or Phased Release. Phased Release rolls out updates gradually: 1% → 2% → 5% → 10% → 20% → 50% → 100% of users over 7 days. Allows catching critical bugs before mass rollout.
You must increment the version and build number with each new upload. CFBundleShortVersionString (visible, e.g. 2.1.0) and CFBundleVersion (build number, only increases). Same build number — Transporter will refuse upload.
Workflow
Prepare App Store Connect: create record, Privacy Policy, Nutrition Labels, screenshots.
Configure archiving: Signing Config, ExportOptions.plist, verify entitlements.
Upload build via Transporter or Fastlane, fill in metadata.
Support through review: answer reviewer questions, fix comments.
Timeline Estimates
Preparation and initial submission of a ready app — 1–2 days. Including Apple review (usually 1–3 days) — 3–5 working days to publication. With rejection and necessary revisions — add another 1–3 days.







