shipcheck
APP STORE GUIDELINE 3.1.2

Guideline 3.1.2(c): what your paywall has to show before the buy button

"Add subscription terms" is the reviewer's note. Here's exactly what that means, quoted from the guideline itself.

3.1.2(c) Subscription Information — App Store Review Guidelines

3.1.2(c) Subscription Information: Before asking a customer to subscribe, you should clearly describe what the user will get for the price. How many issues per month? How much cloud storage? What kind of access to your service? Ensure you clearly communicate the requirements described in Schedule 2 of the Apple Developer Program License Agreement.

What has to be on screen, not behind a link

Price, billing period, and what auto-renewal means -- visible before the purchase button is tapped, not on a separate terms page the user has to navigate to. In practice, App Review wants to see something close to: the plan name, the price and period ("$4.99/month" or "$39.99/year"), a plain sentence that it renews automatically until cancelled, and working links to your Terms of Use and Privacy Policy on the same screen.

The most common way RN/Expo apps get this wrong

A paywall built from a design mock rather than from the guideline text: a price, a "Start Free Trial" button, and nothing else. RevenueCat's own prebuilt paywall templates include the disclosure by default; a hand-rolled paywall component usually doesn't, because nothing in the UI design process flags it as required. It's a compliance requirement, not a design preference, and reviewers check for it specifically.

The fix

Put this directly on the paywall screen, above or right below the CTA

Pro Monthly — $4.99/month. Renews automatically until cancelled. Cancel anytime in Settings. Then Terms of Use and Privacy Policy as tappable links on the same screen, and a visible Restore Purchases control (guideline 3.1.1, checked separately, but almost always missing alongside 3.1.2).

ShipCheck catches this before you submit

A Claude Code plugin for React Native and Expo. Reads your project and store listing, checks them against the live App Store Review Guidelines and Google Play policies -- the same corpus quoted on this page -- and tells you the clause, the reviewer's likely wording, and the fix.

/plugin marketplace add BakerVentures/shipcheck

Free scan on every app. See pricing →