All writing
·7 min read

Submitting a Capacitor App to the App Store: What Actually Happens

CapacitoriOSApp Store

Wrapping a web app with Capacitor takes an afternoon. Getting it accepted by Apple takes considerably longer. This is the sequence I follow now, and the review notes that keep coming back for apps built this way.

1. Get the web build production-ready first

Capacitor ships whatever is in your build output. Anything broken offline, any absolute URL pointing at a preview domain, any auth redirect assuming a browser address bar — it all breaks inside the native shell. Fix it on the web before you add the iOS platform.

  • Every asset and API call uses relative paths or your production domain.
  • Auth redirects target a registered deep link, not a preview URL.
  • The app renders something meaningful with no network — a blank screen on first launch is an instant rejection.
  • Safe-area insets are handled, or your header sits under the notch.

2. Add the platform

npm i @capacitor/core @capacitor/cli
npx cap init
npm run build
npx cap add ios
npx cap sync ios
npx cap open ios

From here you are in Xcode, and everything is standard iOS: a bundle identifier, a signing team, a version and build number. The build number must increase on every upload, even for a rejected binary you are resubmitting.

3. The parts that actually cause rejections

Three notes come back over and over for apps that started life on the web.

  • Guideline 4.2 — Minimum Functionality. If the app is a wrapper around a website with no native capability, Apple says so. Adding push notifications, camera access, offline storage or share sheets is the difference between a wrapper and an app.
  • Guideline 5.1.1 — Account deletion. If users can create an account in-app, they must be able to delete it in-app. Not by emailing you. This one catches almost everyone.
  • Guideline 3.1.1 — In-app purchase. If you sell digital access, it goes through Apple's billing, not your Stripe checkout. Physical goods and services are fine on Stripe; digital subscriptions are not.

4. Privacy details and demo accounts

App Store Connect asks what data you collect and how it is linked to the user. Answer it accurately — it is compared against your actual network traffic. If your app is behind a login, provide working demo credentials in the review notes. Reviewers will not sign themselves up, and a login wall with no demo account is a guaranteed round trip.

5. Expect two rounds

First review typically comes back inside 24–48 hours. Plan for one rejection, read the note literally rather than defensively, and reply in Resolution Center with what you changed. Most notes are a specific missing thing rather than a judgement on the app.

The honest summary: Capacitor removes the build problem entirely, and leaves you with the compliance problem. Budget your time accordingly.

Building something and want a second pair of eyes on the deployment side?

Get in touch