Error Appstore connect Missing Purpose String in Info.plist File
Interview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.
Introduction
This App Store Connect error means your app, or one of its embedded SDKs, uses a protected capability without the required privacy usage description in Info.plist. Apple requires a human-readable reason string for each sensitive permission your app may request.
What a Purpose String Is
A purpose string is the text iOS shows to the user when permission is requested. Without it, the app is missing required privacy metadata and App Store validation can reject the build.
Typical keys include:
- '
NSCameraUsageDescription' - '
NSMicrophoneUsageDescription' - '
NSPhotoLibraryUsageDescription' - '
NSLocationWhenInUseUsageDescription' - '
NSContactsUsageDescription'
The value should explain why the app needs access in user language, not in engineering language.
Why the Error Happens
The most common reason is obvious: your code now uses camera, microphone, location, photos, or another protected API and the plist key is missing.
The second common reason is less obvious: a third-party SDK references that capability, even if your own app does not call the API directly in an obvious place.
That means the debugging job is:
- figure out which permission class is involved
- add the matching plist key
- make sure the string is meaningful
A Correct Info.plist Example
If your app uses the camera and photo library, the relevant section can look like this:
The key point is that the strings should describe the actual feature, not a generic statement such as "This app needs access."
Match the Key to the API
You do not add random purpose strings "just in case." The key must match the capability your app or SDK uses.
Examples:
- camera capture needs
NSCameraUsageDescription - microphone recording needs
NSMicrophoneUsageDescription - selecting existing photos often needs a photo library description
- foreground location needs
NSLocationWhenInUseUsageDescription
If the wrong key is present, App Store Connect can still reject the app.
Finding the Real Source
If you are not sure what is triggering the requirement, check:
- newly added frameworks
- analytics or ad SDKs
- media pickers
- barcode or document scanning code
- location or Bluetooth features
A useful workflow is to search the project and dependencies for permission-related frameworks or symbols before guessing.
Swift Example That Requires a Purpose String
This simple camera permission request requires the camera description key.
If NSCameraUsageDescription is missing, this kind of code will trigger the privacy requirement problem.
Make the Text Review-Friendly
The purpose string is not only for the system dialog. It also helps during review because it shows that the app's requested permission matches a user-visible feature.
Good:
- "We use your location to show nearby pickup points."
- "We use the microphone so you can send voice notes."
Bad:
- "Permission required."
- "Needed for app functionality."
Specific text reduces review friction and improves user trust.
Test on Device, Not Only by Reading the File
After updating Info.plist, run the app on a real device or simulator and trigger the permission flow. Confirm that:
- the dialog appears
- the text is correct
- the feature behaves correctly if access is denied
A valid purpose string alone is not enough if the app crashes or behaves badly after denial.
Libraries Can Surprise You
One tricky case is SDK drift. You add a package for media, ads, or analytics, and the submission suddenly fails with a missing purpose string for a permission your app never explicitly requested before.
In those cases, either:
- add the required string if the SDK truly needs it
- reconfigure the SDK
- remove the dependency if the permission is unnecessary
Do not add unused privacy keys casually, because they imply capabilities your app may not actually need.
Common Pitfalls
- Adding a protected API and forgetting the corresponding
Info.plistkey. - Adding a generic message that does not explain the real feature.
- Assuming only your own code matters and ignoring embedded SDKs.
- Using the wrong privacy key for the API being called.
- Fixing the App Store error but not testing the runtime permission flow afterward.
Summary
- A missing purpose string means a protected capability lacks the required
Info.plistprivacy description. - The fix is to identify the exact permission class and add the matching key.
- Use clear, user-facing explanation text rather than vague placeholders.
- Third-party SDKs can trigger these requirements too.
- Always test the permission request flow after updating the plist.
Related reading
- Error Could not find included file 'Generated.xcconfig' in search paths in target 'Runner
- Error CUICatalog Invalid asset name supplied null, or invalid scale factor 2.000000
- ERROR Error installing cocoapods ERROR Failed to build gem native extension
- Error File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it
- Error calculating pi using the Chudnovsky algorithm - Java
- Error Cannot find module 'async_hooks' in NodeJs
- error 'Flutter/Flutter.h' file not found when flutter run on iOS
- Error in launching AVD with AMD processor
.png&w=3840&q=75)
Tackling System Design Interview Problems
A short course that equips you with the skills to approach system design interviews methodically.
Start the free courseNo course covers this one yet
Basis Lab writes one for you from a sentence about what you want to be able to do, then teaches it and checks you understood. Your first course is free.
Build my courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
Interview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.