How to Prevent Apple App Store & Google Play Rejections (The 2025/2026 Checklist)
Most mobile launch delays aren't caused by broken code. They're caused by failing strict platform compliance rules that automated bots and human reviewers test in the first 5 minutes.
Here is the exact checklist I use to ship production React Native apps to the App Store and Google Play on the first attempt.
1. Apple Guideline 5.1.1(v) — Missing In-App Account Deletion
If your app lets users create an account, you must allow them to permanently initiate account deletion directly within the app.
- ❌ Rejection: Directing users to a web link (
"Contact support to delete") or an email address. - ✅ Approval: A visible
Delete Accountbutton insideProfile -> Settingswith a confirmation modal and an automated server-side token revocation job.
2. Apple Guideline 3.1.1 — In-App Purchases vs. Stripe
The rule is straightforward:
| What you're selling | Allowed payment gateway |
|---|---|
| Digital Goods (AI tokens, SaaS unlock, extra lives, in-app badges) | Apple StoreKit / Google Play Billing (RevenueCat) |
| Real-World Goods & Services (Rides, physical merch, event tickets, food delivery) | Stripe / PayPal / Card |
If you try to unlock an AI chat feature or premium mobile tier using Stripe, Apple will reject the binary immediately.
Always include on the paywall:
- A visible
Restore Purchasesbutton. - Clear subscription duration and pricing terms.
- Direct links to your
Privacy PolicyandTerms of Use.
3. iOS Privacy Manifests (PrivacyInfo.xcprivacy)
Apple now enforces Privacy Manifests for all apps and third-party SDKs using Required Reason APIs:
- File timestamp access
-
UserDefaults/ System boot time - Disk space queries
Verify that every native package in your app declares its required reasons. If you use Expo EAS, modern SDKs (51+) generate this automatically, but any custom native module must have an explicit .xcprivacy declaration.
4. Google Play: Background Location & Foreground Services
Android 14+ will immediately reject your release if you request ACCESS_BACKGROUND_LOCATION or use generic foreground services without justification.
- ❌ Rejection: Vague permission prompt like
"App needs location to work." - ✅ Approval: Prominent user-facing disclosure dialog before the OS prompt appears, clearly explaining the user benefit:
"NSLocationWhenInUseUsageDescription": "Used to calculate live turn-by-turn route dispatch and locate nearby transit stops."
- Pro Tip: Google Play Console requires a 30-second in-app video recording showing how the background feature is triggered by the user.
5. App Store Reviewer Sandbox Credentials (Guideline 2.1)
Never give Apple reviewers an empty state or broken onboarding flow:
- Create a dedicated demo account with pre-populated dummy data (orders, messages, profile).
- Provide username + password directly in the App Review Information notes field.
- If your app requires SMS OTP verification, configure a static test phone number (
+1 555-0199) with a fixed OTP (123456) in your backend for the reviewer.
Summary Cheat Sheet
| Requirement | Apple Guideline | Google Play Equivalent |
|---|---|---|
| In-app account deletion | 5.1.1(v) | Data Safety Policy |
| In-App Purchases for digital unlocks | 3.1.1 | Play Billing Policy |
| Required Reason API manifest | Privacy Manifest | Data Safety Declarations |
| Clear permission justification | Human Interface Guidelines | Target API 34+ Foreground Types |
| Reviewer demo login with test data | 2.1 App Completeness | App Access Instructions |
Need help getting an enterprise build approved or resolving an active rejection notice? I document production architecture and submission playbooks at innunext.com and conduct direct App Store & Google Play compliance reviews.
Top comments (0)