Blog

The Most Common App Store Rejection Reasons — and How to Fix Them

The most common reasons apps get rejected by Apple, from crashes and subscriptions to privacy and sign-in, with the fix for each before you submit.

A lot of apps are being built quickly right now. AI has made it genuinely fast to go from idea to something that runs on a phone, and the volume of submissions reflects that.

Apple's review standards have not moved to match.

The result is a lot of rejections — and almost all of them are for the same handful of reasons. Here's the list I keep coming back to, grouped by category, with the fix for each.

Bugs

Apple's reviewers are testing your app on a real device, often on a poor connection, and often in ways you didn't anticipate. Stability failures are the fastest route to a rejection.

Your app crashes. Apple really hates this, and it's the single most common cause. A crash during review ends the review.
Fix: ship crash reporting before you submit, run the app through every flow on a release build, and treat any crash in your own testing as a blocker rather than a known issue.

You haven't tested on a real device. The simulator lies. It has more memory, no camera, no real permission prompts, perfect networking, and different performance characteristics.
Fix: test on physical hardware — including an older device, not just this year's model.

Things break with poor or no internet connection. Reviewers genuinely test this.
Fix: use Network Link Conditioner. Handle offline explicitly with a clear message and a retry, never an infinite spinner or a blank screen.

Screens become unresponsive while loading. An app that appears frozen gets treated as broken, whether or not it recovers.
Fix: every async operation needs a visible loading state and a timeout. Nothing should be able to hang forever.

Subscriptions

This is where the rules are strictest and least negotiable.

Using third-party payments instead of Apple's in-app purchases. If you're selling digital content or features used inside the app, it goes through StoreKit. Stripe is not an option here.
Fix: use in-app purchase for digital goods. Physical goods and services consumed outside the app are the exception, not the rule.

Subscription pricing isn't clearly visible. The price, the billing period, and what happens at renewal all need to be on screen before purchase — not in a footnote, not one tap away.
Fix: put price, duration, and auto-renewal terms directly on the paywall, alongside links to your terms and privacy policy.

No "Restore Purchases" option. This is a hard requirement and an easy one to forget.
Fix: add a visible restore button on the paywall and in settings.

App features

These rejections are about whether your app justifies existing as an app.

It's just a web view of a website. If it's a wrapper with no native functionality, it doesn't belong in the App Store.
Fix: build genuinely native features — notifications, offline support, device integrations, native navigation. Something the website can't do.

Very limited functionality. An app that does one trivial thing reads as a demo.
Fix: either deepen it into a real tool, or reconsider whether it should be a web app.

It's a clone of another app with no added value. Rebuilding something that already exists, without a difference, gets caught.
Fix: be clear about what you do differently, and make sure that difference is visible in the app itself and not just in the marketing.

Privacy

The rules here are enforced consistently and the fixes are all straightforward.

Users can't delete their account. If your app supports account creation, it must support account deletion — in-app, not via an email request.
Fix: add an in-app delete flow that actually deletes the data.

No privacy policy. Required, both in App Store Connect and reachable from inside the app.
Fix: publish one at a stable URL and link it from your settings screen and your paywall.

Tracking users without proper permission. Using the IDFA or tracking across apps requires the App Tracking Transparency prompt, and your privacy nutrition labels have to match what you actually collect.
Fix: implement ATT properly and audit your labels against your real data collection — including whatever your third-party SDKs are doing.

Authentication

You offer Google or Facebook login but not Sign in with Apple. If you use a third-party social login, Apple's is required alongside it.
Fix: add Sign in with Apple. It's a short job and a guaranteed rejection if missing.

Forcing login when it's not required for core functionality. If someone can use the main feature without an account, don't put a wall in front of it.
Fix: let users reach the core experience first. Gate only what genuinely needs an identity — sync, purchases, personal data.

No test account provided for Apple's review team. A reviewer who can't get past your login screen will reject the build.
Fix: put working credentials in App Review Information, check they still work on the day you submit, and include notes for anything non-obvious — plus a demo video if a flow needs hardware the reviewer won't have.

Before you submit

Run through it:

  • No crashes on a release build, on real hardware, including an older device

  • Offline and slow-network paths handled with visible states

  • IAP for anything digital, with clear pricing and a restore button

  • Native functionality beyond a web wrapper

  • Account deletion in-app, privacy policy linked, ATT implemented if you track

  • Sign in with Apple present if any social login is

  • A working test account in App Review Information

I've seen apps rejected for every one of these, and nearly all of them are avoidable in an afternoon. A rejection costs you a review cycle and a launch date — the checklist costs you a morning.

I help startups and businesses build and launch iOS and Android apps. If you'd like a hand getting a build through review, get in touch.

Got an app idea? Let’s build it.

Tell me where your product is today and what needs to happen next. You’ll leave the call with a clear plan, timeline and next steps.