Shipping
How to avoid getting rejected
Almost every rejection I’ve seen or read about falls into one of these. None of them require a rewrite.
-
It crashed on the reviewer’s device.
The single most common cause. A crash on launch, on a device or OS version you never tested, ends the review immediately. Test on the oldest OS you claim to support.
-
The login didn’t work.
Expired demo credentials, an SMS code the reviewer can’t receive, a region check, an account locked by your own rate limiting. Log in with the How to pass Apple’s review yourself the morning you submit.
-
A button did nothing.
Reviewers press everything, including the things you know are stubs. An unimplemented settings row or a dead “coming soon” screen reads as an incomplete app.
-
A link in the metadata was dead.
Support URL, marketing URL and How to handle privacy and data deletion URL are all fetched. A 404 on any of them is an easy, embarrassing rejection -- and these rot over years of resubmissions.
-
The How to rank in the app stores didn’t match the app.
Screenshots showing features that don’t exist, or a UI two redesigns out of date, is treated as misleading rather than lazy. They must show the app as it currently is.
-
There was placeholder content in it.
Lorem ipsum, test data, an obviously fake leaderboard, a debug menu. Anything that reads as unfinished invites a closer look at everything else.
-
The metadata called it a beta.
The words beta, trial, demo and test in the name, subtitle or description signal an incomplete product. Keep that language in TestFlight, where it belongs.
-
It asked for a permission it didn’t need.
Requesting location for something that plainly doesn’t need location gets challenged. Every permission has to be justified by visible functionality.
-
It handled user content without moderation.
If users can post, share or message, Apple’s Guideline 1.2 expects filtering, a report mechanism, the ability to block abusive users, and a way to contact you. Shipping a social feature without those four is a guaranteed rejection.
-
The rejection was a conversation, and nobody answered it.
A rejection is a message in Resolution Center, not a verdict. Reply, ask exactly which guideline and which screen, and push back politely when it’s wrong -- reviewers do change their minds.