Checklists /Ship to the App Store /Review traps
Critical
Put Restore Purchases on every paywall
Guideline 3.1.1 says you need a restore mechanism for restorable in-app purchases. People reinstall, or they buy on one device and open another. If the paywall has no Restore Purchases control, review often stops there. The control should call StoreKit restore, or the StoreKit 2 current entitlements path, and then unlock what that Apple ID already owns.
How to check
- Open every screen that asks for payment, including a subscription sheet.
- Each one should show a Restore Purchases action a reviewer can find without a secret gesture.
- On a sandbox account that already bought the product, tap Restore and confirm the app unlocks.
- Confirm a fresh sandbox account is not granted the product by mistake.
Prompt
Fix prompt
You are working in this iOS project. Do not add features. Goal: Every paywall includes a Restore Purchases action wired to StoreKit. The project may be Expo, React Native, Swift, a Capacitor wrapper, or a FlutterFlow export. Change only files that already exist. Steps: 1. Find each screen that sells a subscription or a non-consumable. 2. Add a Restore Purchases button that calls the existing store code. Do not invent a second billing system. 3. On success, unlock the same content a fresh purchase unlocks. On failure, show the StoreKit message. 4. Do not grant access when the restore returns no transactions. 5. Do not print certificates, private keys, API keys, or App Store Connect passwords. 6. Tell me which files you changed, and list anything I still have to do in Xcode or App Store Connect.