Build.
Why Apple rejected your app, and what to do about it
The rejections we see most on wrapped web apps, what each one actually means, and how to answer review.
A rejection is not a verdict. Most apps that get rejected ship within a week or two, once someone reads the note properly. The problem is that the notes are short, the guideline numbers mean nothing without context, and guessing wastes review cycles.
These are the ones we see most on web apps wrapped for iOS, roughly in order.
Guideline 4.2: minimum functionality
What it means: your app looks like a website in a frame. Apple will not accept a wrapper with nothing native about it.
What it does not mean: that wrapping a web app is banned. It is not, and plenty of large apps do it. What is required is that the app does something a browser could not.
How to answer it: add genuine native capability and say what it is. Push notifications, offline behaviour, camera or file handling, background audio, home screen widgets, sharing into the app, biometric login. One properly implemented native feature that serves your users beats five token ones.
Guideline 3.1.1: purchases outside their system
What it means: you are selling digital content, access or subscriptions and not using in-app purchase.
The nuance: physical goods and services are fine through your own payments. Digital content generally is not. There is an exemption for some business-facing apps where accounts are bought outside the app, but relying on it needs care.
How to answer it: either add in-app purchase for the digital items, or remove every purchase path and link from the iOS app, including links that lead to a purchase page.
Guideline 5.1.1(v): no account deletion
What it means: if people can create an account in your app, they must be able to delete it in your app. Not email support. In the app.
How to answer it: add the flow, and make sure it actually deletes rather than just signing out.
Privacy answers that do not match the app
What it means: your App Privacy answers say one thing and the app does another. Analytics and advertising libraries are the usual cause.
How to answer it: list every third-party library and what it collects, then make your answers match. If anything tracks across apps, App Tracking Transparency applies.
Sign in with Apple missing
What it means: if you offer Google, Facebook or similar third-party login, you generally have to offer Sign in with Apple too.
How to answer it: add it, or remove the other third-party logins and use email.
A login wall with nothing behind it
What it means: reviewers cannot see your app. If an account is not strictly necessary, some of it should be usable without one.
How to answer it: open up what you can, and always provide working demo credentials in the review notes. A reviewer who cannot get in rejects.
Bugs, placeholders and broken links
The unglamorous half of rejections. A crash on launch, lorem ipsum in a screenshot, a support URL that 404s, a privacy policy link that goes nowhere.
How to reply to review
- Read the guideline number. It tells you which rule you tripped, which is more useful than the sentence next to it.
- Answer in Resolution Center rather than resubmitting blind. If you disagree, explain why with specifics. Reviewers do reverse decisions.
- Say what you changed. “Added background audio playback and push notifications for live show alerts” gets a different reading than a silent resubmission.
- Give demo credentials and a short note on where to find the native features you added.
- Expect one round. Budget for it in your timeline instead of promising a client a date that assumes first-time approval.
Google Play is a different shape
Play is easier on review and stricter on paperwork: the data safety form, current target API level, a reachable privacy policy and correct content ratings. Getting through Apple does not mean you are through Play.
The thing that costs the most
Your Apple Developer account, your Play account and your signing keys should all be in your own name. If a developer holds your Android signing key and disappears, you cannot update your existing app. Not with effort, not with money. It costs nothing to get right at the start.