---
title: "Apple App Store Deployment in 2026: Complete Guide | Superapp"
description: "How Apple App Store deployment works in 2026: bundle IDs, signing, API keys, uploads, privacy manifests and the full Apple ecosystem, for every build route."
image: https://superapp.dev/superapp-logo.png
canonical_url: https://superapp.dev/blog/apple-app-store-deployment
md_url: https://superapp.dev/blog/apple-app-store-deployment.md
---
Published October 25, 2026 · Last updated October 25, 2026

## Apple App Store Deployment: The Short Answer

Superapp, FlutterFlow, Expo, Xcode and every other route deploy to the App Store through the same pieces of Apple infrastructure: an Apple Developer Program membership, a registered bundle ID, a distribution signing identity, an app record in App Store Connect, a signed build uploaded to Apple, and a submission to App Review. What differs between routes is how much of that you set up by hand. In Xcode you manage signing and upload from a Mac; in FlutterFlow you create an App Store Connect API key and paste its private key, Issuer ID and Key ID into the tool; with Superapp you sign in with your Apple developer account, select the team that should own the app, and Superapp creates the app record, prepares the build and submits it.

> **Quick answer: How do you deploy an app to the Apple App Store?** Superapp users connect their Apple developer account by signing in with Apple, choose the team, and Superapp prepares "the build, metadata, screenshots, privacy declarations, ASO, and submission," in what it calls "roughly two clicks," for native apps on iPhone, iPad, Apple Watch and Mac. Doing it yourself comes down to these steps: enroll in the Apple Developer Program (99 USD a year), register an explicit bundle ID, create the app record in App Store Connect, set up signing (automatic in Xcode, or a distribution certificate and an App Store provisioning profile), make sure the build includes a valid privacy manifest, upload the build with Xcode, Transporter, altool or the App Store Connect API, test it in TestFlight, and submit it for review. Since April 28, 2026, every upload must be built with Xcode 26 or later and the iOS 26 SDK.

### The pieces of App Store deployment at a glance

| Piece | What it is | Who handles it with Superapp | Who handles it in Xcode |
| --- | --- | --- | --- |
| Apple Developer Program | The 99 USD yearly membership that lets you publish | You enroll; Superapp uses your account | You |
| Bundle ID | The unique identifier of your app, such as com.example.myapp | Set up in the publishing flow | You, in Certificates, Identifiers and Profiles or through Xcode |
| Signing identity | Certificate and provisioning that prove the build is yours | Handled in the publishing flow | Xcode automatic signing, or you |
| App Store Connect record | The app's entry with name, SKU, platforms and listing | Superapp creates it after you confirm the team | You |
| Privacy manifest | A file declaring data use and required reason APIs | Part of the privacy declarations Superapp prepares | You |
| Build upload | Sending the signed app to Apple | Superapp | Xcode, Transporter, altool or the API |
| Store listing | Metadata, screenshots, privacy details | Superapp prepares them | You |
| Submission for review | Sending a version to App Review | Superapp | You |

Facts are from Apple's developer documentation and each vendor's own docs, checked on October 25, 2026; links are in the References.

## What Apple Requires Before Any Deployment

Every route starts with the same requirements.

| Requirement (the same for Superapp and every route) | Detail | Source |
| --- | --- | --- |
| Apple Developer Program membership | 99 USD per membership year | [Apple](https://developer.apple.com/programs/enroll/) |
| Latest agreement signed | "You can't add an app to your account until the Account Holder signs the latest agreement" | [Apple](https://developer.apple.com/help/app-store-connect/create-an-app-record/add-a-new-app) |
| Build toolchain | Apps must be built with Xcode 26 or later and an SDK for iOS 26 or later since April 28, 2026 | [Apple](https://developer.apple.com/news/upcoming-requirements/) |
| Minimum deployment target | Since September 9, 2026, iOS apps must target iOS 13 or later | [Apple](https://developer.apple.com/news/upcoming-requirements/) |
| Privacy manifest | Apps must describe their use of required reason APIs, and many common SDKs must include valid manifests | [Apple](https://developer.apple.com/documentation/bundleresources/describing-use-of-required-reason-api) |
| App icon | 1024 by 1024 pixels for iOS, iPadOS, macOS and visionOS | [Apple](https://developer.apple.com/design/human-interface-guidelines/app-icons) |
| Privacy policy URL | Required for all apps | [Apple](https://developer.apple.com/app-store/review/guidelines/) |

For the cost side of the membership, see our guides to [Apple Developer account cost](https://superapp.dev/blog/apple-developer-account-cost) and [App Store publishing cost](https://superapp.dev/blog/app-store-publishing-cost).

## Every Deployment Route Compared

| Route | What you set up yourself | Upload handled by | Needs a Mac on your side? |
| --- | --- | --- | --- |
| Superapp | Sign in with Apple, complete verification, select the team | Superapp | No for iPhone, iPad and Watch apps in the browser version; Mac apps use Superapp's Mac version |
| FlutterFlow | Bundle ID, app record, Team API key with App Manager role, Issuer ID, Key ID | FlutterFlow's Deploy To App Store button | No |
| Expo EAS Build and Submit | Sign in to your Apple account in EAS CLI; EAS manages credentials | EAS Submit, which uploads the binary only | No |
| Thunkable | Distribution certificate (.cer), provisioning profile (.mobileprovision), app-specific password | Thunkable | No; its guide creates the files on Apple's developer website |
| Adalo | App-specific password and App Store Connect details | Adalo | No |
| Xcode with automatic signing | Team selection in Xcode | Xcode Organizer | Yes |
| Xcode Cloud | A workflow configured in Xcode | Xcode Cloud | To set it up |
| fastlane | Lanes, match for signing, deliver or pilot for upload | fastlane | Usually, unless run on a cloud Mac |
| Codemagic | App Store Connect API key for automatic signing | Codemagic | No |

Sources: [Superapp docs](https://superapp.dev/docs/apple-developer-account), [FlutterFlow docs](https://docs.flutterflow.io/deployment/apple-app-store-deployment), [Expo docs](https://docs.expo.dev/build/setup/), [Thunkable docs](https://docs.thunkable.com/publishing/publish-to-app-store-ios/user-guide), [Adalo help](https://help.adalo.com/publishing-apps/publishing-to-the-apple-app-store), [Apple Xcode docs](https://developer.apple.com/documentation/xcode/distributing-your-app-for-beta-testing-and-releases), [fastlane docs](https://docs.fastlane.tools/actions/match/), [Codemagic docs](https://docs.codemagic.io/flutter-code-signing/ios-code-signing/). For the no-Mac options in detail, see our guide to [publishing without a Mac](https://superapp.dev/blog/how-to-publish-app-in-app-store-without-mac).

## How to Deploy an App to the App Store, Step by Step

These are the steps when you do it yourself. Builders automate some or all of them.

1. **Enroll in the Apple Developer Program.** Pay 99 USD for the year. Companies need a free D-U-N-S number first, which can take several business days.
 2. **Register an explicit bundle ID.** In Certificates, Identifiers and Profiles, add an App ID with your bundle ID, such as com.example.myapp, and tick the capabilities your app uses, such as Push Notifications or Sign in with Apple.
 3. **Create the app record in App Store Connect.** Choose the platforms, app name, primary language, bundle ID, SKU and user access. The bundle ID cannot be changed after you upload a build.
 4. **Set up signing.** In Xcode, choose "Automatically manage signing," or create an Apple Distribution certificate and an App Store provisioning profile yourself.
 5. **Set the version and build number.** Use a version like 1.0.0 and a build number that is higher than any earlier build of the same version.
 6. **Check the privacy manifest.** Make sure the app declares its required reason APIs, which App Store Connect requires, and that listed third-party SDKs include valid manifests, which Apple requires for apps submitted for review.
 7. **Archive and upload the build.** Use Xcode's Organizer, Transporter, altool or the App Store Connect API. Builds must use Xcode 26 or later.
 8. **Test with TestFlight.** Install the build on real devices through internal testing, and add external testers if you want outside feedback.
 9. **Prepare the listing.** Add metadata, screenshots, App Privacy details, the age rating and the privacy policy URL.
 10. **Submit for review.** Add the build to the version, answer export compliance, click Add for Review, then submit the draft submission to App Review.

## Bundle IDs and App IDs

A bundle ID uniquely identifies your app across Apple's systems. Apple's [App ID help page](https://developer.apple.com/help/account/identifiers/register-an-app-id/) says: "There are two types of App IDs: an explicit App ID, used for a single app, and a wildcard App ID, used for a set of apps."

| App ID type (Superapp sets up the app's identifier in its publishing flow) | Used for | Capabilities |
| --- | --- | --- |
| Explicit | One app, such as com.example.myapp | All capabilities available |
| Wildcard | A set of apps, such as com.example.* | Capabilities that need an explicit App ID are disabled |

Apple's page notes that "A checkbox is disabled if the technology requires an explicit App ID and you're creating a wildcard App ID." For App Store distribution, use an explicit App ID; Thunkable's docs put it plainly: "Uploading apps to the App Store requires an Explicit Bundle ID."

**The bundle ID is permanent once you upload.** Apple's [app information reference](https://developer.apple.com/help/app-store-connect/reference/app-information/app-information) says of the bundle ID, "You can't change this property after you upload a build," and of the SKU, "You can't change the SKU after you add the app to your account." Choose both carefully.

## Certificates: Development vs Distribution

Apple's [certificates overview](https://developer.apple.com/help/account/certificates/certificates-overview/) describes two main certificate types:

| Certificate (Superapp handles signing in its publishing flow) | Purpose |
| --- | --- |
| Apple Development | "Run an iOS, iPadOS, macOS, tvOS, visionOS, watchOS app on devices and use certain app services during development" |
| Apple Distribution | Distribute an app "on designated devices for testing or submit it to App Store Connect" |

Two rules matter for teams:

- **One distribution certificate type per team.** Apple says "only one type of each distribution certificate (with the exception of Developer ID certificates) is allowed per team," and "Only the Account Holder or Admin role can create distribution certificates."
 - **Expiry does not take your live app down.** Apple's [certificates support page](https://developer.apple.com/support/certificates/) says: "If your Apple Developer Program membership is valid, your existing apps on the App Store won't be affected. However, you'll no longer be able to upload new apps or updates signed with the expired or revoked certificate to App Store Connect."

Xcode now handles much of this for you. Apple's [distribution guide](https://developer.apple.com/documentation/xcode/distributing-your-app-for-beta-testing-and-releases) says "Xcode uses cloud-managed signing certificates to automatically code sign your app."

## Provisioning Profiles

A provisioning profile ties an App ID, a certificate and, for development, a set of devices together. For the App Store you need an App Store distribution profile. Apple's [profile help page](https://developer.apple.com/help/account/provisioning-profiles/create-an-app-store-provisioning-profile) says "An App Store provisioning profile contains a single distribution certificate," and lists the steps: open Profiles, click add, choose the App Store distribution type, select the App ID, select the certificate and generate the profile.

| Profile type (Superapp users do not create these by hand) | Used for | Includes devices? |
| --- | --- | --- |
| Development | Running the app on your own test devices | Yes |
| Ad Hoc | Distributing to a limited set of registered devices | Yes |
| App Store | Uploading to App Store Connect for TestFlight and the App Store | No |

With Xcode's automatic signing, Xcode creates and updates these profiles for you. Tools like Thunkable ask you to upload the profile file yourself, while Expo EAS and Codemagic can generate it through your Apple account or API key.

## App Store Connect API Keys

Many deployment tools upload builds through the App Store Connect API, which needs an API key. Apple's [API key documentation](https://developer.apple.com/documentation/appstoreconnectapi/creating-api-keys-for-app-store-connect-api) describes two kinds:

| Key type (Superapp users sign in with Apple instead of handling keys in its documented flow) | Access | Limits |
| --- | --- | --- |
| Team key | "Access to all apps, with varying levels of access based on selected roles" | Generating team keys requires an Admin account |
| Individual key | "Access and roles of the associated user" | Cannot use Provisioning endpoints, access Sales and Finance, or notaryTool |

### How to create an App Store Connect API key

1. Sign in to App Store Connect with an Admin account.
 2. Go to Users and Access, then Integrations, then the App Store Connect API team keys.
 3. Click add, name the key and choose a role. FlutterFlow tells its users to choose the App Manager role.
 4. Download the private key file. Apple says "The private key is available for download a single time" and "Apple doesn't keep a copy of the private key," so store it safely.
 5. Copy the Key ID shown for the new key, and the Issuer ID from the same Team Keys page, as FlutterFlow's docs describe.
 6. Paste the private key, Key ID and Issuer ID into the tool that needs them.

Treat the private key like a password: anyone with it can act on your App Store Connect account within the key's role.

## Creating the App Record in App Store Connect

Apple's [add a new app page](https://developer.apple.com/help/app-store-connect/create-an-app-record/add-a-new-app) lists the fields in the New App dialog: platforms (iOS, macOS, tvOS and visionOS), app name, primary language, bundle ID, SKU and user access. The required role is "Account Holder, App Manager, or Admin."

| Field (Superapp creates the record after you confirm the team) | What to enter | Can you change it later? |
| --- | --- | --- |
| Platforms | iOS, macOS, tvOS or visionOS | You can add platforms later |
| Name | The app name, 2 to 30 characters | Editable until submission; later when you create a new version |
| Primary language | The default language of the listing | Yes |
| Bundle ID | The explicit bundle ID you registered | No, once a build is uploaded |
| SKU | An internal reference you choose | No |
| User access | Limited or full access for your team | Yes |

## Uploading the Build: Every Method

Apple's [upload builds page](https://developer.apple.com/help/app-store-connect/manage-builds/upload-builds) says "you can upload a build using Xcode, Swift Playground, altool, or Transporter," and adds: "You can upload your app binary with the App Store Connect API."

| Upload method (Superapp uploads for you) | Runs on | Best for |
| --- | --- | --- |
| Xcode Organizer | Mac | Developers building in Xcode; can update the build number, sign automatically and upload with symbols |
| Transporter | Mac; Apple describes it as "a macOS app" | Uploading a build someone else produced |
| altool | Mac, command line | Scripts; Apple's altool help marks only the older upload-app command as deprecated in favor of upload-package |
| Swift Playground | Mac or iPad | Small apps built in Swift Playground |
| App Store Connect API build uploads | Any system that can call the API | Cloud builders and CI services |
| Xcode Cloud | Apple's cloud | Teams already using Xcode |
| fastlane deliver or pilot | Usually a Mac or cloud Mac | Automated pipelines |

Apple's [Build Uploads API](https://developer.apple.com/documentation/appstoreconnectapi/build-uploads) lets services "upload and manage build uploads for your apps," so services can upload builds without Xcode or Transporter. Cloud builders avoid the need for your own Mac by compiling on their own macOS machines, since builds must still be made with Xcode 26 or later.

## Version and Build Numbers

Two values identify each build:

| Value (Superapp users see these in the publishing flow) | Format | Rule |
| --- | --- | --- |
| Version (CFBundleShortVersionString) | "three period-separated integers," such as 1.2.0 | Shown to users on the App Store |
| Build number (CFBundleVersion) | An increasing number, such as 42 | "This key is required by the App Store"; each new build for a version needs a higher number |

Apple's older technical note TN2420 explains that build numbers for a release "must be in ascending sequential order," and that iOS build numbers only need to be unique within a version, while macOS build numbers must keep increasing across all versions. FlutterFlow auto-increments the build number on each deploy, and Xcode's Organizer can update it for you.

## Privacy Manifests and Third-Party SDKs

Privacy manifests are the most common technical blocker for older apps and templates. Apple's rules:

- **Required reason APIs.** "Starting May 1, 2024, apps that don't describe their use of required reason API in their privacy manifest file aren't accepted by App Store Connect," per Apple's [required reason API page](https://developer.apple.com/documentation/bundleresources/describing-use-of-required-reason-api).
 - **Third-party SDKs.** "Starting February 12, 2025, apps you submit for review ... must contain a valid privacy manifest file for a certain number of commonly used third-party SDKs," per Apple's [privacy manifest page](https://developer.apple.com/documentation/bundleresources/adding-a-privacy-manifest-to-your-app-or-third-party-sdk).
 - **Invalid files are rejected.** "App Store Connect rejects app submissions that include invalid privacy manifest files."
 - **Signatures.** Apple's [third-party SDK list](https://developer.apple.com/support/third-party-SDK-requirements/), which includes several Firebase SDKs, Alamofire and Flutter, says "Signatures are also required in these cases where the listed SDKs are used as binary dependencies."

| Privacy manifest issue (Superapp prepares privacy declarations for its apps) | Fix |
| --- | --- |
| Your own code calls a required reason API without a declared reason | Add the reason to your app's privacy manifest |
| An SDK on Apple's list lacks a manifest | Update the SDK to a version that includes one |
| An SDK is used as a binary without a signature | Use a signed version of the SDK |
| The manifest file is malformed | Fix the file; invalid manifests are rejected |

## Deploying From Each Tool

### Superapp

Superapp's [Apple Developer account docs](https://superapp.dev/docs/apple-developer-account) describe the setup as: "Open Publish, sign in with Apple, complete verification, and select the team that should own the app," then "Confirm the selected team before Superapp creates the app record." Its homepage puts it as "You just have to sign in with your developer account." From there, Superapp prepares "the build, metadata, screenshots, privacy declarations, ASO, and submission." If authorization expires, its [signing errors page](https://superapp.dev/docs/signing-entitlement-errors) says to "Reconnect the Apple account." Superapp builds native Swift apps, and its FAQ says it "exports the native Swift as a standard Xcode project you own."

### FlutterFlow

FlutterFlow's [deployment guide](https://docs.flutterflow.io/deployment/apple-app-store-deployment) has eight steps: create a bundle ID, add the app in App Store Connect, paste the app's Apple ID into FlutterFlow, generate a Team API key with the App Manager role and upload its private key, add the Issuer ID, add the Key ID, click Deploy To App Store, and submit for review in App Store Connect. FlutterFlow auto-increments the build number and also offers deployment from a GitHub repository. The listing, screenshots and submission are done in App Store Connect.

### Expo EAS

Expo's docs say "Expo automates the process of signing your app for Android and iOS," and that "you can let EAS CLI take care of that for you by signing into your Apple Developer Program account." EAS Submit "uploads your .ipa to App Store Connect," but "does not manage store listing metadata, screenshots, or release notes," per [Expo's docs](https://docs.expo.dev/submit/introduction/).

### Thunkable

Thunkable's [App Store guide](https://docs.thunkable.com/publishing/publish-to-app-store-ios/user-guide) asks you to provide a distribution certificate (.cer), a provisioning profile (.mobileprovision) and an app-specific password, and requires an explicit bundle ID.

### Adalo

Adalo says you can "Publish your app to the Apple App Store, Google Play, and web from a single Adalo project," and its [help center](https://help.adalo.com/publishing-apps/publishing-to-the-apple-app-store) walks through publishing with an app-specific password.

### Xcode and Xcode Cloud

In Xcode, the Organizer's "TestFlight & App Store" option can "update the build number of the content in your archive, perform automatic code signing, and upload your app with symbols." Xcode Cloud lets you "Configure a workflow to build and sign your app for distribution to testers with TestFlight, in the App Store, or as a notarized app," per [Apple's docs](https://developer.apple.com/documentation/xcode/creating-a-workflow-that-builds-your-app-for-distribution).

### fastlane and Codemagic

fastlane's match helps you "Easily sync your certificates and profiles across your team," upload_to_app_store will "Upload metadata and binary to App Store Connect," and upload_to_testflight uploads a "new binary to App Store Connect for TestFlight beta testing." Codemagic says it "makes automatic code signing possible by connecting to App Store Connect via its API," and that it "will automatically select or generate a matching certificate."

| Tool (Superapp listed first) | Signing | Listing and screenshots | Submission for review |
| --- | --- | --- | --- |
| Superapp | Handled after you sign in with Apple | Prepared by Superapp | Superapp |
| FlutterFlow | Via your API key | In App Store Connect | In App Store Connect |
| Expo EAS | Managed by EAS | Not handled by EAS Submit | In App Store Connect |
| Thunkable | Your uploaded certificate and profile | In App Store Connect | In App Store Connect |
| Xcode | Automatic or manual | In App Store Connect | In App Store Connect |
| fastlane | match | deliver can upload metadata | Configurable |
| Codemagic | Automatic via API key | Configurable | Configurable |

## Deploying Across the Full Apple Ecosystem

Deploying to more than iPhone adds a few rules.

| Platform (Superapp builds for iPhone, iPad, Apple Watch and Mac) | Key deployment rule | Source |
| --- | --- | --- |
| iPhone and iPad | One iOS app record covers both; screenshots needed for iPad if it runs on iPad | [Apple](https://developer.apple.com/help/app-store-connect/reference/screenshot-specifications) |
| Mac | "To distribute a macOS app through the Mac App Store, you must enable the App Sandbox capability" | [Apple](https://developer.apple.com/documentation/security/app-sandbox) |
| Apple Watch | Watch apps can depend on an iPhone app or be independent; an independent app "doesn't need the companion iOS app" | [Apple](https://developer.apple.com/documentation/watchos-apps/creating-independent-watchos-apps) |
| Apple Vision Pro | "Your iPhone and iPad apps will be available to users on Apple Vision Pro unless you edit their availability in App Store Connect" | [Apple](https://developer.apple.com/help/app-store-connect/manage-your-apps-availability/manage-availability-of-iphone-and-ipad-apps-on-apple-vision-pro) |
| Apple TV | Added as a platform on the same app record | [Apple](https://developer.apple.com/support/universal-purchase/) |

### Universal purchase

Apple's [universal purchase page](https://developer.apple.com/support/universal-purchase/) says "You can add platforms to an app to create a universal purchase," and added macOS, tvOS or visionOS versions use "the same Apple ID (an app identifier), SKU, and bundle ID as the iOS app." Customers buy once and get the app on every platform.

### Icon sizes by platform

| Platform (Superapp-built apps need these too) | App icon size |
| --- | --- |
| iOS, iPadOS, macOS, visionOS | 1024 by 1024 pixels |
| watchOS | 1088 by 1088 pixels |
| tvOS | 800 by 480 pixels |

Sources: Apple's [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/app-icons) for sizes, and Apple's [Xcode icon guide](https://developer.apple.com/documentation/xcode/configuring-your-app-icon), which says "iOS, iPadOS, tvOS, and watchOS apps can auto-generate all icon variations from a single 1024×1024 pixel image" and "For macOS and tvOS, you need to supply an asset for each size."

### Which builders deploy to which Apple platforms

| Builder (per its own docs) | iPhone | iPad | Mac | Apple Watch | Vision Pro |
| --- | --- | --- | --- | --- | --- |
| Superapp | Yes | Yes | Yes | Yes | Its FAQ says it targets the Apple ecosystem including Vision Pro |
| FlutterFlow | Yes | Not stated in its App Store guide | Not stated as an App Store target | Not stated | Not stated |
| Adalo | Yes | Not stated | Not stated | Not stated | Not stated |
| Thunkable | Yes | Not stated | Not stated | Not stated | Not stated |
| Expo (React Native) | Yes | Not stated | Not stated | Not stated | Not stated |

"Not stated" means the vendor's docs we checked do not document deployment to that platform, not that it is impossible. Remember that iPhone and iPad apps are available on Vision Pro by default unless you opt out.

## Common Deployment Errors and Fixes

| Error or problem (Superapp users can reconnect the Apple account for authorization issues) | Cause | Fix |
| --- | --- | --- |
| Invalid large app icon, "can't be transparent or contain an alpha channel" | The 1024 by 1024 icon has transparency; developers have also reported the error appearing falsely with some Xcode 26 icon setups | Export the icon without an alpha channel |
| Missing required reason API declaration | The app or an SDK uses a required reason API without declaring it | Add the reason to the privacy manifest or update the SDK |
| Invalid privacy manifest | A malformed manifest file | Fix the file |
| Build number already used | You uploaded the same build number twice for a version | Increase the build number |
| Bundle ID mismatch | The build's bundle ID differs from the app record | Use the bundle ID registered for the app |
| Upload rejected for an expired or revoked certificate | The distribution certificate is no longer valid | Create a new certificate; live apps are not affected |
| Cannot add a new app | The Account Holder has not signed the latest agreement | Sign it in App Store Connect |
| Build rejected for SDK version | Built with an older Xcode | Rebuild with Xcode 26 or later |
| Mac app cannot go on the Mac App Store | App Sandbox not enabled | Enable the App Sandbox capability |
| API key lost | The private key can only be downloaded once | Revoke it and create a new key |

The alpha channel error text comes from upload errors that developers report on [Apple's developer forums](https://developer.apple.com/forums/thread/795411); FlutterFlow and Thunkable document the same rule.

## After the Upload: TestFlight, Review and Release

Once a build is uploaded and processed, it appears in TestFlight and can be attached to a version for review. Apple reviews at least 50% of submissions in under 24 hours and 90% in under 48 hours, and an approved app can take up to 24 hours to appear on the store. For review times, expedited review and release options, see our guide to [same-day App Store publishing](https://superapp.dev/blog/same-day-app-store-publishing). For the full listing and submission process, see [how to publish an app to the App Store](https://superapp.dev/blog/how-to-publish-an-app-to-the-app-store-2026).

## What the FlutterFlow Guide Leaves Out

FlutterFlow's guide is a good walkthrough for FlutterFlow users, but it is specific to one tool and was last updated on October 15, 2024. Things it does not cover:

| Topic (Superapp checked these on October 25, 2026) | Why it matters in 2026 |
| --- | --- |
| The Xcode 26 and iOS 26 SDK requirement since April 28, 2026 | Older toolchains are rejected |
| The February 12, 2025 third-party SDK manifest rule | Builds with older SDKs fail |
| Certificates and provisioning profiles | Needed for any route that does not manage signing for you |
| Upload methods other than its own button | Needed if you move off the tool |
| Mac, Apple Watch and Vision Pro deployment | Needed for the full Apple ecosystem |
| Bundle ID and SKU being permanent | A mistake cannot be undone after upload |

## Deployment Checklist

| Before you deploy (applies to Superapp and every route) | Done? |
| --- | --- |
| Apple Developer Program active and latest agreement signed | |
| Explicit bundle ID registered with the right capabilities | |
| App record created with the right bundle ID and SKU | |
| Signing set up: automatic, managed by your tool, or certificate and profile | |
| Version and build number set | |
| Privacy manifest valid; SDKs up to date | |
| App icon at 1024 by 1024 with no transparency | |
| Built with Xcode 26 or later | |
| Build uploaded and tested in TestFlight | |
| Listing, screenshots, App Privacy and age rating complete | |
| Privacy policy URL live | |
| Submitted for review | |

## Myths and Facts About App Store Deployment

| Myth | Fact |
| --- | --- |
| You need a Mac to deploy (Superapp users build iPhone apps in the browser) | Cloud builders and the App Store Connect API remove that need on your side |
| An expired certificate takes your app off the store | Apple says existing apps are not affected while your membership is valid |
| You can rename the bundle ID later | It cannot be changed after you upload a build |
| You can re-download a lost API key | The private key can be downloaded only once |
| Uploading a build submits it for review | Uploading only adds a build; you still submit a version for review |
| An iPhone app is only on iPhone | iPhone and iPad apps are available on Vision Pro by default unless you opt out |
| Each platform needs a separate purchase | Universal purchase covers several platforms with one app record |

## Glossary

| Term | Meaning |
| --- | --- |
| Bundle ID (Superapp sets it up when publishing) | The unique identifier of an app, such as com.example.myapp |
| App ID | The registered identifier in Certificates, Identifiers and Profiles, explicit or wildcard |
| Apple Distribution certificate | The certificate used to sign builds for App Store Connect |
| Provisioning profile | A file linking an App ID and certificate, and for development, devices |
| App Store Connect | Apple's portal for app records, builds, listings and review |
| API key | A private key with a Key ID and Issuer ID that lets tools act on App Store Connect |
| Transporter | Apple's macOS app for uploading builds |
| TestFlight | Apple's beta testing service |
| Privacy manifest | A file declaring data use and required reason APIs |
| Universal purchase | One purchase covering an app on several Apple platforms |
| App Sandbox | A security capability required for Mac App Store apps |

## Where Superapp Fits

As a disclosure, Superapp is our product, so weigh this accordingly. Superapp is built to take deployment off your hands: you sign in with your Apple developer account, select the team, and Superapp creates the app record and prepares the build, metadata, screenshots, privacy declarations and submission for native Swift apps on iPhone, iPad, Apple Watch and Mac. You do not need a Mac for iPhone, iPad and Watch apps in the browser version; Mac apps use Superapp's Mac version. You still need your own Apple Developer Program membership at 99 USD a year, automated App Store publishing is part of the Pro plan at $25 a month, and App Review is still Apple's. Superapp builds for Apple platforms only, not Android.

## Frequently Asked Questions

**How do I deploy an app to the Apple App Store?**
Enroll in the Apple Developer Program, register a bundle ID, create the app record in App Store Connect, sign and upload a build made with Xcode 26 or later, test it in TestFlight, complete the listing and submit for review. Builders like Superapp handle most of these steps for you.

**Do I need a Mac to deploy to the App Store?**
Not on your side if you use a cloud builder or a service that uploads through the App Store Connect API. Xcode, Transporter and altool all run on a Mac.

**What is a bundle ID?**
The unique identifier of your app, usually in reverse domain format such as com.example.myapp. It cannot be changed after you upload a build.

**Explicit or wildcard App ID: which do I need?**
An explicit App ID for App Store apps. Wildcard App IDs cannot use capabilities that require an explicit App ID.

**What is an Apple Distribution certificate?**
The certificate used to sign builds you submit to App Store Connect or distribute to designated test devices.

**How many distribution certificates can a team have?**
Apple allows only one type of each distribution certificate per team, except Developer ID certificates. Only the Account Holder or an Admin can create them.

**What happens to my app if my certificate expires?**
Apple says existing App Store apps are not affected while your membership is valid, but you cannot upload new builds signed with the expired certificate.

**What is a provisioning profile?**
A file that ties an App ID to a certificate. An App Store provisioning profile contains a single distribution certificate and is used to upload builds.

**What is an App Store Connect API key?**
A private key, with a Key ID and Issuer ID, that lets tools such as FlutterFlow, Codemagic or fastlane act on your App Store Connect account.

**How do I create an App Store Connect API key?**
With an Admin account, go to Users and Access, Integrations, then team keys, add a key with a role such as App Manager, and download the private key.

**Can I download my API key again?**
No. Apple says the private key is available for download a single time and that it does not keep a copy. If you lose it, revoke it and create a new one.

**Team key or individual key?**
Team keys can access all apps based on their role; individual keys follow one user's access and cannot use Provisioning endpoints, Sales and Finance or notaryTool.

**What fields do I need to create an app in App Store Connect?**
Platforms, app name, primary language, bundle ID, SKU and user access. The Account Holder, an App Manager or an Admin can create it.

**How do I upload a build to App Store Connect?**
With Xcode, Swift Playground, altool, Transporter or the App Store Connect API. Builders and CI services usually use the API.

**What version and build numbers should I use?**
A version of three period-separated integers, such as 1.0.0, and a build number higher than earlier builds of the same version.

**What is a privacy manifest?**
A file that declares an app's data use and its reasons for using required reason APIs. App Store Connect does not accept apps that fail to declare them.

**Why was my build rejected for a missing API declaration?**
Your app or one of its SDKs uses a required reason API without a declared reason. Add the reason or update the SDK.

**Why is my app icon rejected?**
The 1024 by 1024 App Store icon cannot be transparent or contain an alpha channel. Export it without transparency.

**What Xcode version do I need in 2026?**
Xcode 26 or later with an SDK for iOS 26 or later, required since April 28, 2026.

**Can I deploy to Mac, Apple Watch and Vision Pro?**
Yes. Mac App Store apps need the App Sandbox, Watch apps can be independent or depend on an iPhone app, and iPhone and iPad apps appear on Vision Pro by default unless you opt out, with exceptions such as apps that have been in the Kids category.

**What is universal purchase?**
Adding platforms to one app record so customers buy once and get the app on iPhone, iPad, Mac, Apple TV or Vision Pro.

**Which builders deploy to the whole Apple ecosystem?**
Superapp builds native apps for iPhone, iPad, Apple Watch and Mac. FlutterFlow, Adalo and Thunkable document iPhone App Store deployment in the guides we checked.

**Does FlutterFlow deploy to the App Store?**
Yes. Its guide uses a Team API key with the App Manager role and a Deploy To App Store button, then you submit in App Store Connect.

**Does Expo handle signing?**
Yes. Expo says it automates signing for iOS and Android, and EAS Submit uploads the binary, but not the listing.

**What does fastlane do for deployment?**
match syncs certificates and profiles, upload_to_app_store uploads metadata and binaries, and upload_to_testflight uploads builds for beta testing.

**Does uploading a build submit it for review?**
No. You attach the build to a version in App Store Connect and submit that version for review.

**How long does deployment take?**
Uploading takes minutes; processing and review take longer. Apple reviews at least half of submissions in under 24 hours.

**Can I change my app's SKU?**
No. Apple says you cannot change the SKU after you add the app to your account.

## References

- [Apple: Enroll in the Developer Program](https://developer.apple.com/programs/enroll/)
 - [Apple: Register an App ID](https://developer.apple.com/help/account/identifiers/register-an-app-id/)
 - [Apple: Certificates overview](https://developer.apple.com/help/account/certificates/certificates-overview/)
 - [Apple: Certificates support](https://developer.apple.com/support/certificates/)
 - [Apple: Create an App Store provisioning profile](https://developer.apple.com/help/account/provisioning-profiles/create-an-app-store-provisioning-profile)
 - [Apple: Creating API keys for App Store Connect API](https://developer.apple.com/documentation/appstoreconnectapi/creating-api-keys-for-app-store-connect-api)
 - [Apple: Add a new app](https://developer.apple.com/help/app-store-connect/create-an-app-record/add-a-new-app)
 - [Apple: App information reference](https://developer.apple.com/help/app-store-connect/reference/app-information/app-information)
 - [Apple: Upload builds](https://developer.apple.com/help/app-store-connect/manage-builds/upload-builds)
 - [Apple: Build Uploads API](https://developer.apple.com/documentation/appstoreconnectapi/build-uploads)
 - [Apple: altool help](https://help.apple.com/asc/appsaltool/en.lproj/static.html)
 - [Apple: Distributing your app for beta testing and releases](https://developer.apple.com/documentation/xcode/distributing-your-app-for-beta-testing-and-releases)
 - [Apple: Xcode Cloud distribution workflow](https://developer.apple.com/documentation/xcode/creating-a-workflow-that-builds-your-app-for-distribution)
 - [Apple: CFBundleShortVersionString](https://developer.apple.com/documentation/bundleresources/information-property-list/cfbundleshortversionstring)
 - [Apple: CFBundleVersion](https://developer.apple.com/documentation/bundleresources/information-property-list/cfbundleversion)
 - [Apple: Technical Note TN2420](https://developer.apple.com/library/archive/technotes/tn2420/_index.html)
 - [Apple: Describing use of required reason API](https://developer.apple.com/documentation/bundleresources/describing-use-of-required-reason-api)
 - [Apple: Adding a privacy manifest](https://developer.apple.com/documentation/bundleresources/adding-a-privacy-manifest-to-your-app-or-third-party-sdk)
 - [Apple: Third-party SDK requirements](https://developer.apple.com/support/third-party-SDK-requirements/)
 - [Apple: Upcoming requirements](https://developer.apple.com/news/upcoming-requirements/)
 - [Apple: App icons, Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/app-icons)
 - [Apple: Configuring your app icon](https://developer.apple.com/documentation/xcode/configuring-your-app-icon)
 - [Apple: Universal purchase](https://developer.apple.com/support/universal-purchase/)
 - [Apple: App Sandbox](https://developer.apple.com/documentation/security/app-sandbox)
 - [Apple: Creating independent watchOS apps](https://developer.apple.com/documentation/watchos-apps/creating-independent-watchos-apps)
 - [Apple: iPhone and iPad apps on Apple Vision Pro](https://developer.apple.com/help/app-store-connect/manage-your-apps-availability/manage-availability-of-iphone-and-ipad-apps-on-apple-vision-pro)
 - [Apple: Screenshot specifications](https://developer.apple.com/help/app-store-connect/reference/screenshot-specifications)
 - [Apple: App Review Guidelines](https://developer.apple.com/app-store/review/guidelines/)
 - [Apple Developer Forums: App icon alpha channel error](https://developer.apple.com/forums/thread/795411)
 - [FlutterFlow: Apple App Store deployment](https://docs.flutterflow.io/deployment/apple-app-store-deployment)
 - [FlutterFlow: Deploy from GitHub](https://docs.flutterflow.io/deployment/deploy-from-github)
 - [Expo: App credentials](https://docs.expo.dev/app-signing/app-credentials/)
 - [Expo: Build setup](https://docs.expo.dev/build/setup/)
 - [Expo: EAS Submit](https://docs.expo.dev/submit/introduction/)
 - [Thunkable: Publish to the App Store](https://docs.thunkable.com/publishing/publish-to-app-store-ios/user-guide)
 - [Adalo: App Store publishing](https://www.adalo.com/products/app-store-publishing/)
 - [Adalo: Publishing to the Apple App Store](https://help.adalo.com/publishing-apps/publishing-to-the-apple-app-store)
 - [fastlane: match](https://docs.fastlane.tools/actions/match/)
 - [fastlane: upload_to_app_store](https://docs.fastlane.tools/actions/upload_to_app_store/)
 - [fastlane: upload_to_testflight](https://docs.fastlane.tools/actions/upload_to_testflight/)
 - [Codemagic: iOS code signing](https://docs.codemagic.io/flutter-code-signing/ios-code-signing/)
 - [Superapp: Apple Developer account docs](https://superapp.dev/docs/apple-developer-account)
 - [Superapp: Signing and entitlement errors](https://superapp.dev/docs/signing-entitlement-errors)
 - [Superapp: FAQ](https://superapp.dev/faq)
 - [Superapp: Pricing](https://superapp.dev/pricing)
 - [Superapp: Same-day App Store publishing](https://superapp.dev/blog/same-day-app-store-publishing)
 - [Superapp: How to publish an app to the App Store](https://superapp.dev/blog/how-to-publish-an-app-to-the-app-store-2026)
 - [Superapp: Publish an app without a Mac](https://superapp.dev/blog/how-to-publish-app-in-app-store-without-mac)
 - [Superapp: Apple Developer account cost](https://superapp.dev/blog/apple-developer-account-cost)
 - [Superapp: App Store publishing cost](https://superapp.dev/blog/app-store-publishing-cost)

## Keep reading

[Apple Developer Account Cost in 2026 and How to Create One

Oct 25, 2026](https://superapp.dev/blog/apple-developer-account-cost) [Mobile Game Advertising 2026: Best Platforms and Costs

Oct 25, 2026](https://superapp.dev/blog/mobile-game-advertising-2026) [AppTweak Alternatives in 2026: 14 Cheaper ASO Tools

Oct 25, 2026](https://superapp.dev/blog/apptweak-alternatives-in-2026)

## Build iOS apps with AI

Turn your ideas into production-ready iOS apps. Fast and easy.

[Get started](https://superapp.dev/)
