An App Store rejection can push a launch back by days or weeks. For enterprise clients with coordinated marketing campaigns, that delay is expensive. After submitting hundreds of builds across iOS and Android, we have seen nearly every rejection reason Apple and Google issue. Most are preventable.
Here are the most common rejection reasons and the processes we follow to avoid them.
Guideline 2.1: App Completeness
This is the most common Apple rejection. The app crashes during review, a feature does not work, or the reviewer cannot access a login-gated feature.
How we prevent it:
- We submit a dedicated demo account with the review notes. Username, password, and any two-factor codes the reviewer will need.
- The demo account has pre-populated data so the reviewer sees a realistic experience, not an empty state.
- We test the exact build binary on a clean device before submission. Not a debug build. The actual archive.
- If the app requires hardware (Bluetooth device, specific location), we include a video walkthrough in the review notes demonstrating the functionality.
Never submit a build you have not tested on a clean device with a fresh install. The reviewer's experience must match your test.
Guideline 5.1.1: Data Collection and Storage
Apple requires a privacy policy, accurate App Privacy labels (the "nutrition label"), and purpose strings for every permission. Miss one and you get rejected.
Our checklist:
- Every
NSUsageDescriptionkey has a clear, specific purpose string. "We need camera access" is not enough. "Camera access is used to scan cheque images for mobile deposit" passes review. - App Privacy labels are reviewed against actual data collection before every submission. If a new analytics event was added, the label is updated.
- The privacy policy URL in App Store Connect is live and accessible. A 404 is an automatic rejection.
For Canadian clients, this overlaps with PIPEDA requirements. We align the App Store privacy disclosures with the broader privacy compliance documentation.
Guideline 4.3: Spam and Minimum Functionality
Apple rejects apps that are "too simple" or appear to be web wrappers. We have seen this hit MVP launches where the initial feature set was intentionally lean.
How we handle it: We ensure the first release has enough native functionality to justify being an app. If the MVP is genuinely minimal, we include at least push notifications, offline capability, or a native feature that a website cannot replicate. The review notes explain the product roadmap and why the current scope is intentional.
Google Play: Policy Declarations
Google Play rejections are more formulaic. The most common issues:
- Foreground service declaration: Since Android 14, every foreground service type must be declared in the manifest and justified in the Play Console. Using
connectedDevicefor a BLE app? You need to explain why in the declaration form. - Background location: If your app accesses location in the background, you must submit a video demonstrating the feature and explain why foreground-only access is insufficient. We prepare this video before submission.
- Target API level: Google requires new apps to target the latest API level. Existing apps have a deadline to update. We track these deadlines per client and build them into the maintenance schedule.
The Pre-Submission Checklist
Before every App Store or Play Store submission, we run through a checklist:
- Build tested on a clean device with fresh install
- Demo account created with pre-populated data
- All permission purpose strings are specific and accurate
- Privacy policy URL is live and returns 200
- App Privacy labels match actual data collection
- Screenshots match the current build (not an older version)
- Review notes include any special instructions, demo credentials, or hardware requirements
- Version number and build number are incremented
- No references to competing platforms in metadata ("also available on Android" in an iOS listing)
When You Do Get Rejected
It happens. Even with a thorough process, Apple reviewers are human and interpretations vary. When it does:
- Read the rejection carefully. Apple cites specific guideline numbers. Address exactly what they cited, nothing more.
- Reply in the Resolution Center. If the rejection is a misunderstanding, explain clearly and include screenshots or video. We have overturned rejections by demonstrating that the feature works as intended.
- Do not resubmit without changes. Resubmitting the same binary with no response to the rejection flags your app for closer scrutiny.
- Escalate if needed. Apple's App Review Board handles appeals. We have used it twice in edge cases where the reviewer misapplied a guideline. Both were resolved in our favour.
If you are preparing for an App Store launch and want a team that knows how to navigate the review process, get in touch. We will make sure your first submission is your last.