Skip to content
Back to guides

Guide

How to Publish Your First iOS App to the App Store in 2026: The Complete Guide

21 min
Table of Contents
How to Publish Your First iOS App to the App Store

Publishing your first iOS app to the App Store is one of the most rewarding moments in a developer’s journey — and one of the most confusing. Between provisioning profiles, signing certificates, App Store Connect metadata, and Apple’s famously strict review process, it can feel like navigating a maze blindfolded.

I remember submitting my first app and getting rejected twice before it finally went live. The documentation was scattered, outdated tutorials assumed I already knew things I didn’t, and every guide seemed to skip the exact step I was stuck on.

This guide exists so you don’t have to go through that. It covers every single step — from creating your Apple Developer account to seeing your app live on the App Store — with real screenshots, actual costs, timeline expectations, and all the gotchas I wish someone had warned me about.

Whether you’re building with SwiftUI, UIKit, React Native, Flutter, or any other framework, the App Store submission process is the same. Let’s get your app published.


Quick Overview: What You Need

Before we dive into the detailed steps, here’s everything you’ll need at a glance:

RequirementDetailsCost
Mac computerAny Mac running macOS 15 Sequoia or laterVaries
Xcode 17+Latest version from the Mac App StoreFree
Apple Developer ProgrammeIndividual or Organisation membershipUSD 99/year
Apple IDWith two-factor authentication enabledFree
App Store ConnectApple’s web portal for managing appsFree (included with membership)
App icon1024×1024px PNG, no transparency, no rounded corners—
ScreenshotsFor each supported device size—
Privacy policy URLHosted publicly on the web—
App binaryYour compiled .ipa file—

Total minimum cost to publish: USD 99 per year for the Apple Developer Programme. That’s it. There are no per-app fees, no submission fees, and no hosting fees for the binary itself.


Step 1: Enrol in the Apple Developer Programme

You cannot publish apps to the App Store without an active Apple Developer Programme membership. Here’s how to get one.

1.1 — Choose Your Membership Type

Apple offers two membership types:

TypeBest ForCostKey Differences
IndividualSolo developers, freelancersUSD 99/yearApps published under your personal name
OrganisationCompanies, teams, studiosUSD 99/yearApps published under company name; requires D-U-N-S number

If you’re publishing your first app as a personal project, Individual is the way to go. You can always convert to an Organisation account later.

Important: If you choose Organisation, you’ll need a D-U-N-S number from Dun & Bradstreet. Applying for one is free but can take up to 30 days, so plan ahead.

1.2 — Create or Sign In with Your Apple ID

  1. Go to developer.apple.com/programs
  2. Click Enrol
  3. Sign in with your Apple ID (or create a new one)
  4. Ensure two-factor authentication is enabled — Apple requires this for all developer accounts

1.3 — Complete Enrolment

  1. Fill in your personal details (legal name, address, phone number)
  2. Review and accept the Apple Developer Agreement
  3. Pay the USD 99 annual fee (accepted payment methods: credit/debit card)
  4. Wait for Apple to verify your identity — this typically takes 24–48 hours for individuals, but can take up to two weeks for organisations

Once approved, you’ll have access to:

  • App Store Connect — where you manage apps, metadata, pricing, and analytics
  • Developer portal — where you manage certificates, identifiers, and provisioning profiles
  • TestFlight — for beta testing before public release
  • Apple Developer Forums — for technical support

Step 2: Set Up Certificates and Provisioning Profiles

This is the step that trips up most first-time developers. Apple uses a system of certificates and provisioning profiles to verify that you are who you say you are and that your app is legitimately signed.

2.1 — Understanding the Signing System

Here’s a simplified breakdown:

ComponentWhat It Does
Signing CertificateProves your identity as a developer. Like a digital passport.
App IDA unique identifier for your app (e.g., com.yourname.appname)
Provisioning ProfileLinks your certificate, App ID, and device list together. Tells iOS “this app is legitimate.”

2.2 — The Easy Way: Automatic Signing in Xcode

For your first app, I strongly recommend using Xcode’s automatic signing feature. It handles certificates and provisioning profiles for you.

  1. Open your project in Xcode
  2. Select your project in the Navigator panel (left sidebar)
  3. Select your target under “Targets”
  4. Go to the Signing & Capabilities tab
  5. Tick “Automatically manage signing”
  6. Select your Team from the dropdown (this should show your Apple Developer account)
  7. Xcode will automatically create and manage your signing certificate and provisioning profile
// Your Bundle Identifier should follow reverse domain notation:
// com.yourname.yourappname
// Example: com.xahidex.myfirstapp

Tip: If you see a “No accounts with an Apple Developer Programme membership” error, ensure you’ve signed into Xcode with the same Apple ID used for your developer account. Go to Xcode → Settings → Accounts and add your Apple ID.

2.3 — The Manual Way (For Reference)

If you ever need manual signing (for CI/CD pipelines or complex setups), here’s the process:

  1. Create a Certificate Signing Request (CSR) via Keychain Access on your Mac
  2. Upload the CSR to the Apple Developer Portal to generate a Distribution Certificate
  3. Download and install the certificate
  4. Create an App ID in the developer portal with your Bundle Identifier
  5. Create a Distribution Provisioning Profile linking your certificate and App ID
  6. Download the profile and configure it in Xcode

For your first app, stick with automatic signing. You can learn manual signing later when you need it.


Step 3: Prepare Your App for Submission

Before uploading anything to Apple, your app needs to meet several technical and design requirements.

3.1 — App Icon

Your app icon is the first thing users see. Apple has strict requirements:

  • Size: 1024×1024 pixels
  • Format: PNG
  • No transparency — the icon must be fully opaque
  • No rounded corners — Apple applies the rounding automatically
  • No alpha channel

Xcode will automatically generate all required icon sizes from your single 1024×1024 source image.

To add your icon:

  1. In Xcode, open Assets.xcassets
  2. Select AppIcon
  3. Drag your 1024×1024 PNG into the “All Sizes” slot (Xcode 17 uses a single icon slot)

Design tip: Keep your icon simple. It needs to be recognisable at 29×29 pixels on a notification badge. Avoid text, tiny details, or overly complex illustrations. Look at the top-charting apps for inspiration — they almost all use bold, simple shapes with distinct colours.

3.2 — Launch Screen

Every iOS app must have a launch screen. In modern Xcode projects, this is typically a Launch Screen storyboard (LaunchScreen.storyboard) or configured via the Info.plist.

The launch screen should:

  • Match the initial state of your app (same background colour, basic layout)
  • Not contain logos, branding, or loading indicators (Apple’s guideline)
  • Load instantly without any dynamic content

3.3 — Set Your Build Number and Version

In your target’s General tab:

  • Version (CFBundleShortVersionString): The public-facing version number (e.g., 1.0.0). This is what users see on the App Store.
  • Build (CFBundleVersion): An internal number that must be unique for each upload (e.g., 1, 2, 3 or 1.0.1).
Version: 1.0.0
Build: 1

Rule: Each build you upload to App Store Connect must have a unique Build number. If you upload version 1.0.0 build 1 and need to upload a fix, increment to build 2 (still version 1.0.0).

3.4 — Deployment Target

Set your Minimum Deployment Target thoughtfully. As of 2026:

iOS VersionApproximate Market ShareRecommendation
iOS 19 (latest)~45%Target if using latest APIs
iOS 18~35%Good balance of modern APIs and reach
iOS 17~15%Broadest reasonable reach
iOS 16 and below~5%Only if you have a specific reason

For most new apps, targeting iOS 17 or iOS 18 gives you access to modern SwiftUI features whilst reaching the vast majority of active devices.

3.5 — Privacy and Permissions

If your app accesses sensitive data, you must declare usage descriptions in your Info.plist:

<!-- Camera access -->
<key>NSCameraUsageDescription</key>
<string>We need camera access to let you take profile photos.</string>
 
<!-- Photo library -->
<key>NSPhotoLibraryUsageDescription</key>
<string>We need access to your photos to let you choose a profile picture.</string>
 
<!-- Location -->
<key>NSLocationWhenInUseUsageDescription</key>
<string>We use your location to show nearby restaurants.</string>

Critical: Every permission must have a clear, user-friendly description explaining why you need it. Vague descriptions like “This app needs your location” will get your app rejected.


Step 4: Create Your App in App Store Connect

App Store Connect is the web portal where you manage everything about your app’s App Store presence — metadata, pricing, screenshots, TestFlight builds, analytics, and more.

4.1 — Log Into App Store Connect

  1. Go to appstoreconnect.apple.com
  2. Sign in with your Apple Developer account
  3. Click My Apps
  4. Click the + button → New App

4.2 — Fill In the New App Form

FieldWhat to Enter
PlatformsiOS (tick the checkbox)
NameYour app’s name as it will appear on the App Store (max 30 characters)
Primary LanguageEnglish (UK) or your preferred language
Bundle IDSelect the Bundle Identifier matching your Xcode project
SKUA unique internal reference (e.g., myfirstapp2026) — not shown to users
User AccessFull Access (default)

Naming tip: Your app name must be unique across the entire App Store. If someone else already has “Weather App”, you’ll need something different. Check availability before settling on a name. Apple also prohibits generic terms, trademarked names, or names that include “Apple” or iOS-specific terminology.

4.3 — App Information

After creating the app, you’ll need to fill in several tabs. Let’s go through the most important ones:

App Information tab:

  • Subtitle — a short tagline (max 30 characters). Use it to highlight your key feature.
  • Category — choose a primary and optional secondary category (e.g., Productivity, Utilities, Health & Fitness)
  • Content Rights — confirm you own or have licensed all content
  • Age Rating — fill in the questionnaire about your app’s content (violence, language, etc.)

Pricing and Availability tab:

  • Choose Free or set a price tier
  • Select which countries/regions to distribute in (or choose “All territories”)
  • Configure pre-orders if desired

Step 5: Prepare App Store Metadata

This is where many developers rush and cost themselves downloads. Your App Store listing is your storefront — treat it with the same care you’d give the app itself.

5.1 — App Name and Subtitle

ElementMax LengthSEO ImpactTips
App Name30 charsVery HighInclude your primary keyword naturally
Subtitle30 charsHighHighlight your unique value proposition

Examples:

  • ✅ Expense Tracker — Budget Smart (clear, keyword-rich)
  • ❌ My Amazing App!!! (wastes characters, no keywords)

5.2 — Description

Your description can be up to 4,000 characters. The first three lines are critical — they’re what users see before tapping “More.”

Structure your description like this:

  1. Hook (first 2–3 lines) — What does your app do? Why should someone care?
  2. Key features — bullet-pointed list of your best features
  3. Social proof — testimonials, press mentions, or awards (if any)
  4. Call to action — encourage the download

Important: The App Store description is not indexed by Apple’s search algorithm. It’s for convincing users to download once they’ve found you. Your keywords field (covered below) is what drives search.

5.3 — Keywords Field

You get 100 characters for keywords. This is the single most important field for App Store search visibility.

Best practices:

  • Separate keywords with commas, no spaces
  • Don’t repeat words already in your app name or subtitle
  • Don’t include “app”, “free”, or your company name
  • Use singular forms (Apple matches plurals automatically)
  • Include common misspellings and alternative terms
budget,expense,tracker,money,finance,spending,savings,wallet,receipt,income

5.4 — Screenshots

Screenshots are your biggest conversion lever. Apple requires screenshots for each device size you support:

DeviceScreenshot SizeRequired?
iPhone 6.9” (iPhone 16 Pro Max)1320 × 2868 pxYes (if supporting 6.9”)
iPhone 6.7” (iPhone 16 Plus / 15 Pro Max)1290 × 2796 pxYes
iPhone 6.5” (iPhone 11 Pro Max / XS Max)1242 × 2688 pxOptional (older size)
iPhone 5.5” (iPhone 8 Plus)1242 × 2208 pxOnly if supporting these devices
iPad Pro 13”2064 × 2752 pxOnly if your app runs on iPad

Rules:

  • Minimum 2 screenshots, maximum 10 per device size
  • PNG or JPEG format
  • Can include device frames, text overlays, and backgrounds — but the screenshots must accurately represent the app experience
  • No misleading imagery — screenshots must show actual app functionality

Pro tip: You can submit screenshots for the 6.7-inch size only, and App Store Connect will use them for all iPhone sizes. This saves enormous time if you’re a solo developer. Just tick the checkbox “Use 6.7-inch Display screenshots for all iPhone sizes.”

Design tips for high-converting screenshots:

  1. Put your strongest feature in screenshot #1 — most users never swipe
  2. Add short, bold text captions above each screenshot explaining the benefit
  3. Use your brand colours for backgrounds
  4. Show the app in action, not empty states
  5. Consider creating an App Preview video (15–30 seconds) — apps with videos have higher conversion rates

App Preview videos auto-play on the App Store listing and significantly boost conversion rates.

  • Duration: 15–30 seconds
  • Format: H.264, MP4
  • Resolution: Must match the device screenshot size
  • Record directly on a device or simulator using Xcode’s screen recording tools
  • Show real app usage — no cinematic trailers or rendered mockups

5.6 — What’s New (For Updates)

For your first submission, this field isn’t required. For future updates, write clear, user-friendly release notes:

What's New in Version 1.1:
- Added dark mode support
- Fixed a bug where notifications weren't appearing
- Improved loading speed by 40%

5.7 — Privacy Policy

Apple requires a privacy policy URL for all apps — even if your app collects zero data.

Your privacy policy must:

  • Be hosted on a publicly accessible URL
  • Clearly state what data you collect (or explicitly state you collect none)
  • Explain how data is used, stored, and shared
  • Be written in at least the same language(s) your app supports

Free option: If you need a simple privacy policy, tools like Termly or PrivacyPolicies.com can generate one for free. You can host it as a simple page on your website or even as a GitHub Pages site.

5.8 — App Privacy Details (Nutrition Labels)

Since iOS 14, Apple requires you to declare your app’s data collection practices. This appears as the “App Privacy” section on your App Store listing.

You’ll need to answer:

  1. Do you or your third-party partners collect data? (Yes/No)
  2. What types of data? (Contact info, location, browsing history, etc.)
  3. How is each data type used? (Analytics, advertising, personalisation, etc.)
  4. Is the data linked to the user’s identity?

Be honest and thorough. Apple and users both take this seriously, and inaccurate privacy labels can lead to rejection or removal.


Step 6: Build, Archive, and Upload Your App

This is the moment of truth — packaging your app and sending it to Apple.

6.1 — Final Pre-Upload Checklist

Before archiving, run through this checklist:

  • App icon is set (1024×1024, no transparency)
  • Launch screen is configured
  • Bundle Identifier matches App Store Connect
  • Version number is set correctly
  • Build number is unique
  • Signing is configured (automatic or manual)
  • All permission descriptions are clear and specific
  • App runs without crashes on a real device
  • No references to competing platforms (Android, Windows, etc.) in your UI
  • No placeholder content, test data, or lorem ipsum
  • Debug/development code is removed

6.2 — Select the Right Build Destination

In Xcode:

  1. In the toolbar, set the build destination to Any iOS Device (arm64) — not a simulator
  2. This ensures the build is compiled for real hardware

6.3 — Archive Your App

  1. Go to Product → Archive in the menu bar
  2. Xcode will compile your app in Release configuration
  3. When the archive is complete, the Organiser window will open automatically
  4. Your new archive appears in the list with a timestamp

Troubleshooting: If “Archive” is greyed out, make sure your build destination is set to a real device (not a simulator). Archiving is only available for physical device destinations.

6.4 — Upload to App Store Connect

From the Organiser window:

  1. Select your archive
  2. Click Distribute App
  3. Choose App Store Connect as the distribution method
  4. Select Upload (not Export)
  5. Leave the default options:
    • ✅ Upload your app’s symbols (for crash reporting)
    • ✅ Manage version and build number
  6. Click Upload

Xcode will validate your build, check for common issues, and upload to App Store Connect. This usually takes 2–10 minutes depending on your app size and internet speed.

6.5 — Alternative: Upload via Transporter

If you’re using a CI/CD pipeline or prefer a separate tool, Apple provides Transporter (free on the Mac App Store). You can export your archive as an .ipa file from Xcode and upload it via Transporter.

6.6 — Wait for Processing

After uploading, App Store Connect needs time to process your build:

  • Processing time: 5–30 minutes typically
  • You’ll receive an email when processing is complete
  • If there are issues (missing icons, invalid entitlements, etc.), you’ll receive an email detailing the errors
  • Once processed, the build appears in the TestFlight tab and can be selected for App Review

Common processing error: “Missing compliance” — if your app uses encryption (including HTTPS calls), you’ll need to answer an export compliance question. For most apps using standard HTTPS/TLS, select “No” to the question about non-standard encryption. You can also add the ITSAppUsesNonExemptEncryption key set to NO in your Info.plist to skip this prompt for future builds.

<key>ITSAppUsesNonExemptEncryption</key>
<false/>

Before submitting for App Review, test your app with real users through TestFlight — Apple’s built-in beta testing platform.

7.1 — Why Use TestFlight?

  • Test on real devices you don’t own
  • Get feedback from friends, family, or beta users
  • Identify crashes and bugs before public release
  • TestFlight builds don’t go through full App Review (internal testers are instant; external testers have a lighter review)

7.2 — Internal Testing

  1. In App Store Connect, go to your app → TestFlight tab
  2. Click Internal Testing → Create Group
  3. Add testers by Apple ID (up to 100 internal testers)
  4. Select the build you uploaded
  5. Testers receive an email invitation and install via the TestFlight app

Internal testers must be part of your App Store Connect team. There’s no review required — builds are available immediately.

7.3 — External Testing

  1. In the TestFlight tab, click External Testing → Create Group
  2. Add testers by email (up to 10,000 external testers)
  3. External builds go through a light beta review (usually approved within 24–48 hours)
  4. You can share a public TestFlight link for open betas

Pro tip: Even if you don’t have a big testing group, send it to at least 3–5 people. Fresh eyes catch things you’ll never spot yourself — awkward flows, confusing labels, crashes on device sizes you didn’t test.


Step 8: Submit for App Review

This is the final gate between your app and the App Store.

8.1 — Select Your Build

  1. In App Store Connect, go to your app → App Store tab
  2. Scroll to the Build section
  3. Click the + button and select the processed build you want to submit
  4. Ensure all metadata (description, screenshots, keywords, privacy policy, etc.) is complete

8.2 — App Review Information

Fill in the App Review Information section:

  • Contact Information — your name, phone number, and email. The review team may contact you if they have questions.
  • Sign-In Required — if your app requires a login, provide a demo account with username and password. This is absolutely critical. If the reviewer can’t access your app, it will be rejected immediately.
  • Notes for Reviewer — use this field to explain anything non-obvious. For example:
    • “This app requires Bluetooth to connect to a fitness tracker. The core features can be tested without a device by tapping ‘Demo Mode’ on the home screen.”
    • “Location features work best in the United States. Use the provided test account for full access.”

8.3 — Version Release Options

Choose how you want your app to go live after approval:

OptionBest For
Automatically releaseMost first-time apps — goes live as soon as it’s approved
Manually releaseWhen you want to coordinate launch timing (press, marketing)
Scheduled releaseSet a specific date and time

8.4 — Submit

Click Submit for Review. Your app’s status changes to Waiting for Review.

8.5 — The Review Timeline

As of 2026, here’s what to expect:

StageTypical Duration
Waiting for Review0–24 hours
In Review4–48 hours
Total (submission to decision)Usually 24–48 hours

Apple states that 90% of submissions receive a response within 24 hours. In my experience, most straightforward apps are reviewed within 12–24 hours.

Important: Review times can spike around major events — WWDC (June), new iPhone launches (September), and the holiday season (December). Plan accordingly.


Step 9: Handling Rejection (It Happens to Everyone)

Don’t panic if your app gets rejected. It’s incredibly common, especially for first submissions. Apple will provide a specific reason and guideline reference.

9.1 — Most Common Rejection Reasons in 2026

Based on Apple’s transparency reports and developer community data, here are the top rejection reasons:

#ReasonGuidelineHow to Fix
1Performance: App Completeness2.1Remove placeholder content, broken features, test data
2Performance: Accurate Metadata2.3Ensure screenshots and descriptions match actual app
3Design: Minimum Functionality4.2App must offer meaningful functionality beyond a simple website
4Legal: Privacy5.1.1Add required privacy policy; declare data collection accurately
5Business: Payments3.1.1Use In-App Purchase for digital goods/services (not external payment links)
6Safety: Objectionable Content1.1Remove inappropriate content or add content filters
7Performance: Software Requirements2.4.5Don’t use private APIs or undocumented frameworks
8Design: Copycat4.1App must be sufficiently unique; don’t clone existing apps
9Bugs and Crashes2.1Fix all crashes, especially on launch and core user flows
10Missing Demo Account—Provide working login credentials for apps requiring authentication

9.2 — How to Respond to a Rejection

  1. Read the rejection message carefully — it will reference a specific App Store Review Guideline number
  2. Go to the Resolution Centre in App Store Connect to see the full details
  3. You can reply directly to the reviewer to ask for clarification or provide additional context
  4. Fix the issue(s), increment your build number, upload a new build, and resubmit
  5. In your resubmission notes, explain what you changed

Tip: Be polite and specific in your Resolution Centre replies. Reviewers are human. A clear, respectful explanation of why you believe your app complies — or what changes you’ve made — goes a long way.

9.3 — Appealing a Rejection

If you believe the rejection is incorrect:

  1. Reply in the Resolution Centre with your reasoning
  2. If unresolved, file an appeal through the App Store Review Board
  3. Appeals are reviewed by a senior team and typically responded to within 3–5 business days

Step 10: Your App Is Live! Now What?

Congratulations — your app is on the App Store! But launching is just the beginning. Here’s what to do next.

10.1 — Monitor Crash Reports and Analytics

App Store Connect provides built-in analytics:

  • Impressions — how many times your app appeared in search or browse results
  • Product Page Views — how many users viewed your listing
  • Downloads — total installs (first-time + re-downloads)
  • Conversion Rate — the percentage of page viewers who downloaded
  • Crashes — monitored through Xcode Organiser or App Store Connect

Focus on your conversion rate first. If lots of people view your listing but few download, your screenshots or description need work.

10.2 — Respond to User Reviews

Replying to reviews shows that you care and can significantly improve your app’s reputation:

  • Thank users for positive reviews
  • Address negative reviews constructively — ask for details, explain fixes, show empathy
  • Never be defensive or dismissive

10.3 — Plan Your First Update

Ship an update within the first 2–4 weeks of launch. This signals to Apple’s algorithm that your app is actively maintained. Include:

  • Bug fixes reported by early users
  • Performance improvements
  • Small feature additions based on feedback

10.4 — App Store Optimisation (ASO) Basics

To improve your app’s visibility in App Store search:

  1. Iterate on your keywords — use App Radar, Sensor Tower, or AppTweak to research keyword rankings
  2. Update screenshots periodically — especially after adding major features
  3. Localise your listing in key languages — even just adding Arabic, Spanish, and German can significantly expand your reach
  4. Encourage ratings — use the native SKStoreReviewController API to prompt users at the right moment (after a positive interaction, not at launch)
import StoreKit
 
// Request a review at an appropriate moment
if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
    SKStoreReviewController.requestReview(in: windowScene)
}

Complete Timeline: From Zero to App Store

Here’s a realistic timeline for publishing your first app:

PhaseDurationDetails
Apple Developer enrolment1–2 daysAccount verification (up to 2 weeks for organisations)
DevelopmentVariesDepends on app complexity
Preparing App Store assets1–3 daysIcon, screenshots, descriptions, privacy policy
App Store Connect setup1–2 hoursCreating the app record and filling metadata
TestFlight testing3–7 daysInternal and external beta testing
App Review1–2 daysTypically within 24 hours
Handling rejection (if any)1–5 daysFix, resubmit, re-review
Total (after development)1–3 weeksFrom “ready to submit” to “live on App Store”

Cost Breakdown: What You’ll Actually Spend

ItemCostFrequency
Apple Developer ProgrammeUSD 99Annual
XcodeFree—
Mac computer (minimum: Mac mini)From USD 599One-time
App Store screenshot design tool (e.g., Previewed, AppMockUp)Free–USD 10/monthOptional
Privacy policy generatorFreeOne-time
ASO tool (App Radar, etc.)Free–USD 50/monthOptional
Total first-year minimumUSD 99(Assuming you already own a Mac)

No Mac? You have a few options: rent a Mac in the cloud through services like MacStadium or AWS EC2 Mac instances, use a Hackintosh (not officially supported), or borrow a friend’s Mac. For serious iOS development, investing in a Mac mini is the most cost-effective long-term solution.


Framework-Specific Notes

Regardless of what framework you used to build your app, the submission process is identical. But here are some framework-specific tips:

SwiftUI / UIKit (Native)

  • Archive and upload directly from Xcode as described above
  • Ensure your @main app entry point is correct
  • SwiftUI Previews won’t affect your production build, but remove any #Preview macros that reference development-only code

React Native

  • After building your JavaScript bundle, open the ios/ directory in Xcode
  • Run npx react-native build-ios --mode=Release or archive from Xcode
  • Ensure Hermes engine is enabled for better performance
  • Common issue: missing Podfile.lock — run cd ios && pod install before archiving

Flutter

  • Run flutter build ipa to generate the archive
  • The .ipa file will be at build/ios/ipa/
  • Upload via Xcode Organiser or Transporter
  • Ensure your Info.plist and Runner.xcodeproj settings are correct

Expo (React Native)

  • Run eas build --platform ios to build in the cloud
  • Use eas submit --platform ios to upload directly to App Store Connect
  • Expo’s EAS Build handles signing certificates and provisioning profiles automatically
  • Requires an Apple Developer account linked to your Expo account

Apple’s App Review Guidelines: The Rules You Must Know

Apple’s App Store Review Guidelines are comprehensive. Here are the sections most relevant to first-time developers:

Safety (Section 1)

  • No objectionable content (hate speech, graphic violence, pornography)
  • User-generated content apps must have reporting and moderation features
  • Medical and health apps must not provide inaccurate diagnoses or treatment advice

Performance (Section 2)

  • Apps must be complete — no beta labels, placeholder content, or broken features
  • Must work on the current shipping iOS version
  • Must not contain hidden features or functionality
  • Accurate metadata — screenshots must show the real app

Business (Section 3)

  • Digital goods and subscriptions must use In-App Purchase (Apple’s 30% commission, or 15% for small businesses earning under USD 1 million)
  • Physical goods and services (food delivery, ride-hailing, etc.) can use external payment
  • Apps must not trick users into making purchases

Design (Section 4)

  • Must offer meaningful functionality — “apps that are simply a song, a movie, or a book” don’t qualify
  • Must feel native to iOS — avoid web-wrapper apps with no native functionality
  • Apps that duplicate existing Apple features without adding value may be rejected
  • Must have a privacy policy
  • Must comply with GDPR, CCPA, and local data protection laws
  • Must request only necessary permissions
  • Children’s apps have additional requirements under COPPA

Troubleshooting Common Issues

“No accounts with Apple Developer Programme membership”

Fix: Sign into Xcode → Settings → Accounts with the Apple ID linked to your developer programme membership.

“Archive” menu option is greyed out

Fix: Change the build destination from a simulator to “Any iOS Device (arm64).”

Build upload stuck at “Authenticating with the App Store”

Fix: Check your internet connection. Try signing out and back into your Apple account in Xcode. As a last resort, use Transporter instead.

“Missing Compliance” warning after upload

Fix: Add ITSAppUsesNonExemptEncryption key to Info.plist set to NO (if you only use standard HTTPS/TLS encryption).

“Invalid Binary” rejection

Fix: Usually means you’re using a deprecated API, missing required device capabilities, or have an issue with your provisioning profile. Read the specific error in the email from Apple.

App crashes only on the reviewer’s device

Fix: Test on as many real devices as possible. Use TestFlight with external testers. Check crash logs in Xcode Organiser. Common culprits: force-unwrapped optionals, memory issues on older devices, network timeout handling.

“Guideline 4.2 — Minimum Functionality”

Fix: Your app must do more than a website could. Add native features: push notifications, widgets, offline support, camera integration, haptic feedback. Show the reviewer what makes your app uniquely valuable as a native experience.


Publishing Checklist: Your Final Pre-Submission Audit

Use this checklist before every submission:

Technical:

  • App runs without crashes on multiple device sizes
  • All features work as described in the metadata
  • No placeholder content, test data, or lorem ipsum
  • Performance is acceptable (no major lag, memory leaks, or excessive battery drain)
  • App works offline (or gracefully handles no network)
  • All third-party SDKs are up to date and compliant

App Store Connect:

  • App name, subtitle, and description are complete and compelling
  • Keywords field is optimised (100 characters, no waste)
  • Screenshots are uploaded for all required device sizes
  • App icon is 1024×1024, no transparency, no rounded corners
  • Privacy policy URL is valid and accessible
  • App Privacy details (nutrition labels) are filled accurately
  • Contact information and demo account provided for reviewers
  • Age rating questionnaire completed
  • Pricing and availability configured
  • Version release method chosen (automatic, manual, or scheduled)

Legal & Compliance:

  • Privacy policy exists and is accurate
  • GDPR/CCPA compliance (if applicable)
  • Permissions usage descriptions are clear and specific
  • Export compliance declared (encryption question answered)
  • No third-party intellectual property used without licence

FAQs

How much does it cost to publish an app on the Apple App Store?

The only mandatory cost is the Apple Developer Programme at USD 99 per year. There are no per-app submission fees, no upload fees, and no download fees charged to you. Apple takes a 30% commission on paid app sales and in-app purchases (15% if you qualify for the Small Business Programme earning under USD 1 million per year).

How long does it take to get an app approved on the App Store?

Apple states that 90% of app submissions are reviewed within 24 hours. In practice, most straightforward apps are approved within 12–48 hours. Complex apps, apps with in-app purchases, or submissions during busy periods (WWDC, iPhone launch, holidays) may take 2–5 days.

Can I publish an iOS app without a Mac?

Not directly. You need Xcode to archive and sign your app, and Xcode only runs on macOS. Alternatives include renting a Mac in the cloud (MacStadium, AWS EC2 Mac), using Expo EAS Build for React Native apps (builds in the cloud), or Codemagic/Bitrise CI/CD services that provide Mac build machines. You’ll still need a Mac for initial setup and debugging.

What is the minimum iOS version I should target?

For new apps in 2026, targeting iOS 17 gives you the best balance of modern API access and device reach (~95% of active iPhones). If you’re using latest SwiftUI features, iOS 18 is a pragmatic minimum. Only target iOS 16 or below if you have a specific business requirement.

Can I publish an app for free on the App Store?

You can list your app as free for users, meaning no purchase price. However, you still need the USD 99/year Apple Developer Programme membership to publish. There’s no way to publish without this fee.

What happens if my app gets rejected?

You’ll receive a detailed message in the Resolution Centre (App Store Connect) explaining which guideline was violated. Fix the issue, increment your build number, upload a new build, and resubmit. You can also reply to the reviewer for clarification. Rejections are normal — even experienced developers get them.

Do I need a privacy policy for my iOS app?

Yes, always. Apple requires a privacy policy for every app submitted to the App Store, regardless of whether you collect user data. If your app collects no data, your privacy policy can simply state that. The policy must be hosted on a publicly accessible URL.

How do I update my app after it’s published?

Create a new version in App Store Connect, increment your version number (e.g., 1.0.0 → 1.1.0), archive and upload the new build, fill in the “What’s New” field, and submit for review. Updates go through the same review process but are typically approved faster than initial submissions.

Can I publish the same app on both the App Store and Google Play?

Absolutely. If you’re using a cross-platform framework like React Native, Flutter, or Kotlin Multiplatform, you can maintain a single codebase and publish to both stores. The submission processes are completely separate — you’ll need both an Apple Developer account (USD 99/year) and a Google Play Developer account (USD 25 one-time).

What percentage does Apple take from app sales?

Apple charges a 30% commission on paid app downloads and in-app purchases. Developers earning under USD 1 million per year qualify for the App Store Small Business Programme, which reduces the commission to 15%. Subscription apps also receive the reduced 15% rate after a subscriber has been active for more than 12 months.

How do I get more downloads after launching?

Focus on App Store Optimisation (ASO) — optimise your keywords, screenshots, and description. Encourage happy users to leave ratings using the native SKStoreReviewController. Share your app on social media, relevant forums, and communities. Consider running Apple Search Ads for targeted visibility. Most importantly, ship regular updates — active apps rank higher in search results.

Is TestFlight mandatory before submitting?

No, TestFlight is optional. You can submit directly to App Review without beta testing. However, I strongly recommend testing with at least a few real users. They’ll catch bugs, UX issues, and edge cases you’d never find yourself. It’s much better to fix these before your public launch than to get 1-star reviews.