DEV Community

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 Account button inside Profile -> Settings with 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 Purchases button.
  • Clear subscription duration and pricing terms.
  • Direct links to your Privacy Policy and Terms 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.

Read on DEV Community ↗ ← Back to News

Comments

No comments yet. Start the discussion.