Guideline 3.2.2: business practices Apple will not host
3.2.2 is where growth tactics that are normal on the web become a rejection.
The list covers manipulating ratings and reviews, artificially inflating your position, misleading users about purchase terms, and designs that push people into transactions they did not intend.
Four that catch app teams specifically:
- A countdown that resets. A timer representing a real expiring offer is fine. One that restarts on every launch is manufactured urgency, which is the pattern named.
- Engineered social proof. Invented user counts, fabricated testimonials, a five-star row in a screenshot. Also an FTC problem in the US, independently of Apple.
- Ambiguous trial mechanics. Length, price after, and renewal terms have to be clear before purchase. Presented ambiguously it is a 3.1.2 problem; designed to mislead, it is this one too.
- Interstitials built to be mis-tapped. Close buttons that are hard to hit, pre-checked upsells, a "continue" that is actually a purchase.
None of these is found by a scanner. They are read off your paywall by a person, which is why the useful check is to have someone who has never seen the app try to decline the purchase and watch how long it takes them.
The paywall test
The single most informative pre-submission exercise for this guideline, and it takes four minutes:
Hand your phone to someone who has never used the app, and ask them to not buy it.
Watch. If they hesitate, tap the wrong thing, or ask you which button means no, you have your finding. A decline path that requires thought is the finding, regardless of what anyone intended.
Then ask them three questions:
- How long is the trial and what happens at the end?
- How much is it, and how often?
- How would you cancel?
If they cannot answer all three from what they just saw, the disclosure is not doing its job. Guideline 3.1.2, subscription disclosure.
What is fine, and gets confused with this
- A hard paywall. Requiring payment for the whole app is a business model, not a dark pattern.
- An intro offer. Discounted first periods are a supported StoreKit feature.
- A real, genuinely expiring promotion, where the expiry is true.
- The system rating prompt, used within its limits.
- Highlighting the annual plan as better value, when it is.
The distinguishing question is always whether the user could describe what they agreed to. Persuasion is allowed. Confusion is the thing being prohibited.
The reviews half
Manipulating ratings and reviews sits inside this guideline, and it also sits inside consumer protection law in the US and elsewhere. Both apply, and the regulator's version does not care whether the app was approved.
Prohibited on both counts: buying reviews, incentivising them, review-swap schemes, fabricated testimonials, and review gating — routing users to a private feedback form and only sending the happy ones to the store prompt.
Ask everyone the same way, incentivise nobody. That single rule is compliant under both regimes and takes no engineering. Getting reviews without being annoying covers the same ground for a service business, and the rule is identical.
What a reviewer actually sees
They install the app, hit the paywall, and try to get past it. That is the sequence, and it means your paywall is one of the first three screens a reviewer forms an opinion from.
If they cannot dismiss it, if the terms are not visible without scrolling, if a link to Terms and Privacy is missing, or if the price is smaller than the marketing copy around it, that is what gets written up.
Frequently it is reported under 2.1 App Completeness or 3.1.2 rather than 3.2.2, which is why searching the guideline number does not find the answer.
The pre-submission pass
# scarcity and social-proof language in paywall and listing copy
grep -rniE 'limited time|expires in|only [0-9]+ left|hurry|last chance|[0-9,]+\+? (users|downloads|reviews)|rated #1' \
src app fastlane/metadata 2>/dev/null | head -20
# countdown state that resets rather than persisting
grep -rniE 'countdown|timer|expires|deadline' src app --include=*.ts --include=*.tsx 2>/dev/null | head
# required disclosure elements present on the purchase screen
grep -rniE 'auto.?renew|cancel any time|terms of (use|service)|privacy policy' src app 2>/dev/null | headThen do the four-minute human test above, which finds more than all three commands.
shipcheck reports unsubstantiated claim language in listing and in-app copy, and checks that the required subscription disclosure elements are present on the purchase screen. It cannot judge whether a design is manipulative, which is a human question, and it says so rather than implying otherwise. What it checks. · After a rejection.
More in this section
About shipcheck
shipcheck is a pre-submission checker from Baker Ventures LLC that runs inside Claude Code. It reads your React Native or Expo project, finds the things that get apps rejected or blocked at upload, cites the exact App Store Review Guideline or Google Play policy clause, and names the file and line to fix.
It exists because React Native and Expo apps fail for reasons that are invisible in the code you wrote: capability arriving through a dependency, purpose strings added by a config plugin, a privacy manifest missing from an SDK you never chose directly, and a generated ios/ directory that discards your edits on the next prebuild. shipcheck checks what the binary and the config actually declare, not what you intended. The rejection references on this site are free, need no account, and link to the primary Apple or Google document for every claim.
Questions and answers
What does App Store Guideline 3.2.2 cover?
Business practices Apple treats as unacceptable, including manipulating reviews or ratings, artificially inflating your position, misleading users about the terms of a purchase, and designs that trick people into transactions they did not intend.
Is a countdown timer on a paywall against the rules?
A countdown that represents a real, expiring offer is different from one that resets on every launch. Artificial urgency created to pressure a purchase is the pattern the guideline addresses, and a timer that never actually expires is exactly that.
Can I ask users to rate my app?
Yes, through the system rating prompt and within its limits. What is prohibited is manipulating outcomes: incentivising ratings, filtering who is asked based on expected sentiment, or offering anything in exchange for a review.
Is it a problem to make cancelling hard?
Subscriptions are cancelled through the system, so an app cannot technically prevent it, and designs that mislead users about how to cancel or about what they are subscribing to are what get flagged. Consumer protection rules in several jurisdictions address the same conduct separately.
What about a trial that converts without a clear disclosure?
The trial length, the price after it, and the renewal terms have to be clear before purchase. Trial mechanics presented ambiguously are both a 3.1.2 subscription disclosure problem and, where the presentation is designed to mislead, a 3.2.2 one.
Do growth tactics from web products transfer?
Several common ones do not. Fake scarcity, engineered social proof, pre-checked upsells and interstitials designed to be mis-tapped are ordinary in some web funnels and are rejection material here, as well as being regulated conduct in several markets.
shipcheck. “Guideline 3.2.2: business practices Apple will not host.” Baker Ventures LLC, September 7, 2026. https://shipcheck.bakerventuresstudio.com/rejections/guideline-3-2-2-unacceptable-business-model/