What to do if your app is rejected repeatedly
When the same guideline comes back a second and third time, the cause is almost never that Apple missed your fix. It is that you fixed what you thought the citation meant rather than what it said.
The loop breaks in this order: read the citation as three separate things, ask one precise question, then escalate to a channel above the reviewer. On Google Play the order matters more, because repeated rejections there are recorded against your developer account rather than your release.
Why the same rejection returns
Four causes, most common first.
You fixed an interpretation, not the finding. The message said the permission prompt does not explain itself. You rewrote the description. Nothing about the prompt changed, so the same citation applies.
The reviewer never got in. Broken demo credentials, a sign-up wall, a feature behind a server flag, an SMS code to a number they do not have. Apple's published figure on this class of problem: "On average, over 40% of unresolved issues are related to guideline 2.1: App Completeness". When a rejection repeats and you cannot see why, assume they never reached the screen you fixed.
You changed more than they asked. Three unrequested improvements give the next reviewer three new things to have an opinion about.
The finding is correct and the fix is architectural. Payment flows outside in-app purchase, an app whose entire value is a website. These do not clear with better wording.
Read the citation as three things
A rejection in Resolution Center has three parts and most people read one.
The guideline number tells you which rule was applied. Read the full text, not the heading. The sub-clause is usually where your answer is.
The body text is what the reviewer actually saw, often specific: a screen name, a tap sequence, a device, an OS version. If it names a screen, that is where they were.
The attachment is a screenshot or recording of the exact moment. The most useful item in the message and the most ignored. Open it before you write a line of code.
If those three do not agree, that gap is the thing to ask about.
Ask one precise question
You are allowed to ask what they mean. Do it in one message, and make it answerable.
Good:
"Guideline 5.1.1. The message says account deletion is not available. Deletion is at Settings > Account > Delete account, which asks for a typed confirmation then deletes server side. Could you confirm whether you reached that screen, and if so what was missing? Demo account: review@example.com / Test-1234. Screen recording attached."
Bad, and the version most people send: "We believe this rejection is a mistake. Our app fully complies with the guidelines. Please review again."
The first can be answered in one line. The second cannot be answered at all, so it produces the same rejection.
The offer message people miss
There is one reply that can end a round without a resubmission. From Apple's App Review page: if you are shipping a bug fix "and we find additional issues during review, you have the option to resolve the additional issues with your next submission, as long as there are no legal or safety concerns. To accept, simply reply to the offer message in App Store Connect and indicate you would like the current submission to be approved."
So if your bug-fix update picked up an unrelated finding, check whether the message is an offer rather than a plain rejection. Accepting ships your fix now.
The channels above the reviewer, in order
1. One more properly written reply. Cheapest, and it clears more rounds than anything below.
2. An App Review appointment. Underused and free. Apple offers a "30-minute video appointment" over Webex where "you can ask for advice on what to expect during review, how your app can best align with guidelines, reasons for common rejections". You book it from Apple's events schedule.
For a citation you genuinely do not understand after three rounds, half an hour with someone who reads these all day beats another submission.
3. The App Review Board. The appeal channel, at developer.apple.com/contact/app-store/?topic=appeal. Apple allows one appeal per submission that did not pass review, so a repeat rejection is the moment to spend it, not round one.
4. Support for an unresolved rejection, at developer.apple.com/contact/request/app-review/support/. Lower stakes than an appeal, and it does not consume your one shot.
Apple publishes no turnaround for any of these, and no acknowledgement that an appeal arrived. Keep fixing in parallel.
On Google Play, repeats are the actual risk
This is the asymmetry that catches developers who learned their habits on the App Store. Apple rejects constantly and it means very little. Google rejects less often, escalates faster, and scores it against your account.
A single rejection is cheap: rejections "Don't impact the standing of your Google Play Developer account." The escalation path is one sentence:
"Egregious or multiple policy violations can result in suspension, as can repeated app rejections or removals."
A suspension is not another rejection. "Once your app is suspended, you forfeit the users, statistics, and ratings of the removed application." Years of ratings are not recoverable, suspensions "Count as strikes against the good standing of your Google Play Developer account", and enough strikes reaches account termination, which takes every app with it.
So on Play, resubmit-and-hope is not neutral. Three things follow.
Do not republish without a real fix. Google says it plainly: "Until a policy violation has been fixed, don't republish a rejected app."
Do not use review as a diagnostic. Google is unusually direct: "Google evaluates production apps for policy adherence, but review is not a troubleshooting step. Submitting non-compliant apps expecting reviewers to identify issues leads to rejections, review delays, and lengthier appeal processes."
Check for other violations before resubmitting. From the resubmission instructions: "Additional enforcement could occur if there are further policy violations."
Appeals on Play are one shot per action: "You may submit one appeal per app removal, suspension, or other enforcement action."
How to make the next round count
- Change one thing. The thing they cited. Nothing else.
- Write down what you changed and where, in the reply and in the review notes.
- Attach evidence, a screen recording of the specific flow, not a feature tour.
- Re-verify the demo account on the day you submit. App Review information is editable at any time, so there is no excuse for stale credentials.
- Stop guessing after two rounds. Two failed guesses means you do not have the information. Ask, or book the appointment.
When the honest answer is that it cannot ship as designed
Some rejections are a verdict on the concept: a wrapper around a website, a model that routes payment around in-app purchase, a category Apple has closed. No amount of rewording moves those.
Apple's guidelines are explicit about the far end. Several of them state that "Egregious or repeated behavior is grounds for immediate removal of your app from the App Store, and from the Apple Developer Program."
Repeatedly resubmitting an app you have been told is not acceptable is not persistence. Deciding the app needs to change, or that the store is the wrong channel for it, is a legitimate outcome of three rejections and much cheaper than the fourth.
FAQ
How many times can an app be rejected? Neither store publishes a limit. Google states that repeated rejections can contribute to a suspension, so the practical limit is lower on Play.
Does the same reviewer see my resubmission? Apple does not document how submissions are assigned, so assume not. Include working credentials and context every round, even when you supplied them last time.
Should I appeal on the second rejection or the third? Appeal when the disagreement is about interpretation and the thread has stopped producing new information. With one appeal per submission, round one is usually premature.
My Play app has been rejected three times. Am I at risk? Possibly. Google names repeated rejections as a route to suspension. Stop resubmitting, get the compliance question answered properly, and fix everything at once.
AppSubmit keeps every rejection, reply and guideline citation attached to the version it belongs to, so round three is a document rather than an archaeology exercise in someone's inbox. Resolution Center and Play Console Notifications hold the same history if you keep them tidy yourself.