App Store Rejection 5.1.1: How to Fix Privacy Rejections Before You Submit
21 Jun 2026 · 4 min read · Erik van Kammen
Quick answer: Guideline 5.1.1 (Data Collection and Storage) is one of the most common reasons apps get rejected. The usual triggers are a permission requested without a clear purpose string, asking for data the app does not actually use, or forcing account sign-in for features that do not need an account. Apps that allow account creation must also offer in-app account deletion. Most of these are visible in the binary before you submit. Here is what the rule covers and a pre-submission checklist.
A 5.1.1 rejection is frustrating because the app usually works fine. The problem is not a crash, it is how the app asks for and handles personal data. The good news is that most 5.1.1 triggers are mechanical, and you can catch them before you ever upload.
Guideline 5.1.1 is the "Data Collection and Storage" part of the App Store Review Guidelines. The sub-points that cause the most rejections are:
The rejections cluster around a short list of issues:
Info.plist usage description (for example NSCameraUsageDescription, NSLocationWhenInUseUsageDescription, NSContactsUsageDescription). A prompt with no explanation, or a generic "we need this," is a frequent reject.| Trigger | Sub-point | Signal in the build | Fix |
|---|---|---|---|
| Permission without a purpose string | 5.1.1(i) | Declared permission, missing Info.plist usage key |
Add a specific usage description |
| Unused permission | 5.1.1(iii) | Permission declared but never called | Remove it, or the SDK that adds it |
| Forced sign-in | 5.1.1(v) | Sign-in gate before any non-account feature | Allow use without registration |
| No account deletion | 5.1.1(v) | Account creation present, no delete path | Add in-app account deletion |
| Label does not match collection | 5.1.1(i) | App Privacy label differs from binary evidence | Reconcile the label with reality |
5.1.1 is largely a binary-and-metadata question, which is where a pre-submission scan earns its keep. A scan can read the declared permissions and their purpose strings, surface permissions added by SDKs that your own code never uses, and flag where your App Privacy label does not match the binary. For the related privacy-manifest mechanics, see privacy manifest validation and fixing NSPrivacyAccessedAPITypes violations. For the full pre-flight, see the iOS app submission checklist.
A privacy policy is necessary but not sufficient. 5.1.1 also covers how you request data in the app. The common cause is a permission requested without a clear purpose string, or a permission the app does not actually use, rather than the policy text itself.
Yes. Under 5.1.1(v), apps that let users create an account must also let them initiate account deletion from within the app. A link to email support is not enough on its own.
Only if the app's core features are account-based. If people can get value without an account, 5.1.1(v) says you must let them use those features without forcing registration.
A purpose string is the Info.plist usage description (such as NSCameraUsageDescription) shown in the system permission prompt. It must clearly explain why the app needs that data. A missing or vague string is a frequent 5.1.1 trigger.
Everything technical in this post is checkable from the build itself, and that is exactly what AppCompliance does: upload an iOS or Android build, and minutes later you have every issue that would get it rejected, with the exact fix next to it.
One email when we open the doors. No spam, just the launch.