Submitting to the App Store is a completely different game from Google Play. There is no single "publish" button — you create an app record in App Store Connect, archive a signed build in Xcode, upload it, run a TestFlight beta, answer export compliance questions, fill in privacy labels, and only then hand the app to a human review team. Skip one of those steps and your build sits in "Waiting for Review" for days, or gets rejected for a fixable mistake. In 2026 the pipeline is more automated than ever, but the fundamentals have not changed: a complete record, a stable build, and honest metadata get you approved fast. This tutorial walks through every step from an empty App Store Connect account to a live app.
Step 1: Prerequisites — Membership, Agreements, and Bundle ID
Before you can upload anything, three things must be in place:
- An active Apple Developer Program membership (99 USD/year for Individual or Organization). Your account must have accepted the latest Apple Developer Program License Agreement in App Store Connect — an expired agreement blocks every upload.
- A bundle identifier (Bundle ID) registered in your developer account. Use reverse-DNS format such as
com.yourcompany.yourapp. It must be globally unique and it can never be reused by another developer later. - App Store Connect access with a role that can manage apps — the Account Holder, Admin, App Manager, or Developer role all work for submission.
If you have not enrolled yet, yesterday's guide covers the Individual vs Organization vs Enterprise decision, including the D-U-N-S number requirement for organization accounts. The same 99 USD membership that lets you submit also covers TestFlight and App Store distribution.
Step 2: Create the App Record in App Store Connect
In App Store Connect, go to My Apps → "+" → New App and fill in:
- Platform: iOS (or iOS + iPadOS if universal).
- Name: the display name customers see — up to 30 characters, and it must match your app's actual functionality (App Review Guideline 2.3 rejects misleading names).
- Primary language and SKU — a unique internal identifier like
app20260806. - Bundle ID: select the one you registered in Step 1.
Creating the record does not submit anything — it just creates the shell you will fill over the next steps. You can leave the record in "Prepare for Submission" state for as long as you need.
Step 3: Archive and Upload the Build
In Xcode, with your signing team set in the project's Signing & Capabilities tab:
- Select Any iOS Device (arm64) as the destination — not a simulator.
- Choose Product → Archive. This produces a signed, distributable build.
- In the Organizer window, click Distribute App, choose App Store Connect as the destination, and follow the export flow.
- Xcode uploads the archive. Alternatively, you can export the
.ipaand upload it with the Transporter app.
During export, Xcode asks about export compliance — whether your app uses encryption. If it only uses standard HTTPS/SSL (the overwhelming majority of apps), you can answer that encryption is exempt (ITSAppUsesNonExemptEncryption = false) and upload without an export certificate. If you use custom cryptography, you need the appropriate ERN documentation. Many first-time submitters stall here; the standard HTTPS exemption covers most cases.
Step 4: TestFlight Beta Testing Before You Submit
TestFlight is Apple's official beta testing service and it is effectively mandatory for a smooth first release. You can upload up to 100 builds per app and test multiple at once. Key facts from Apple's TestFlight documentation:
- Internal testers: up to 100 members of your development team (Account Holder, Admin, App Manager, Developer, or Marketing roles). No beta review needed — builds become available almost immediately.
- External testers: up to 10,000 people. External testing requires a beta app description and beta app review information, and each new build must pass a quick Beta App Review first.
- Groups: organize testers into groups and attach different builds to each — useful for platform-specific or feature-specific testing rounds.
- Devices: each tester can install your beta on up to 30 devices, and no UDID provisioning is needed — testers install directly from the TestFlight app.
Testers report crashes and feedback through the TestFlight app, which surfaces in App Store Connect. Do not skip this step: crash logs from real devices catch the bugs that simulators miss, and a build that crashes on review is an automatic rejection (Guideline 2.1).
Step 5: Fill in the Store Listing and Privacy Labels
Back in the app record's Version section, complete every field before submitting:
- App Privacy (nutrition labels): declare which data types you collect — contact info, location, identifiers, usage data, and whether any data is linked to the user or used for tracking. Declarations must match what your code actually does; mismatches are flagged in review.
- Screenshots and previews: required for the largest supported device size; other sizes can be auto-generated if you enable the option.
- Description, keywords, and what's new: be accurate — Guideline 2.3 requires metadata to match the app's real features. Keyword-stuffing unrelated terms is a rejection risk.
- Age rating, category, and price: the age rating questionnaire drives app store age gates; set availability and pricing (or free) per territory.
- App Review information: your contact details, and — critically — a demo account if the app requires login, plus notes explaining non-obvious features and IAP products.
The App Review Guidelines are explicit: test for crashes and bugs, make metadata complete and accurate, keep your backend live and accessible during review, provide a demo account or demo mode, and scrub placeholder text and empty URLs before submitting.
Step 6: Submit for Review — and What Happens Next
When everything is filled in, click Add for Review. Your build enters the queue:
- Apple's automated checks run first — binary validity, crash-on-launch detection, and basic metadata validation.
- A human reviewer then tests your app on a real device, checks the metadata against the app's behavior, verifies demo credentials, and validates IAP items are purchasable.
- Typical review time in 2026 is a few days for new apps; updates can be faster. You can request an expedited review for critical time-sensitive fixes (e.g. a server outage or a security issue), but use it sparingly.
- If rejected, you receive a clear reason tied to a guideline. Fix the issue, bump the build version, upload a new build, and resubmit. Responding to the rejection message with questions only helps if the reason is unclear.
Once approved, the app does not go live automatically — you choose. Set release to Manual Release and hit the release button when you are ready, or schedule an automatic release on a specific date. For significant updates, consider a phased release (percentage-based rollout) to catch issues in the wild before full distribution.
The 2026 rejection traps, summarized: a build that crashes or shows obvious technical problems (2.1), betas or trial versions submitted to the store instead of TestFlight (2.2), metadata that does not match the app (2.3), missing or inaccurate privacy labels, placeholder content, and dead demo accounts or offline backends at review time. Fix these five before you click submit and most first-time rejections disappear.
From Account to Live App in One Pipeline
The full journey is: enroll in the Program (99 USD) → register a Bundle ID → create the App Store Connect record → archive in Xcode → answer export compliance → upload → TestFlight beta → complete the listing and privacy labels → submit for review → release. First-timers typically spend most of their time on the metadata and review-information sections, not the build itself. Get those right, keep the backend reachable during review, and the App Store pipeline is remarkably predictable.