Ship Desk

Guideline 5.1.2 / ITMS-91053 › Generator

PrivacyInfo.xcprivacy generator

Got an "ITMS-91053: Missing API declaration" email after uploading a Capacitor, Flutter or React Native build? Paste it here. You pick a reason for each API category the email names, and get a privacy manifest file to add to your Xcode project.

Free. It runs entirely in your browser; the email text and your choices are not uploaded or stored.

1. API categories and reasons

For each category, tick the reason that describes what the code actually does. Codes and their wording come from Apple's "Describing use of required reason API" documentation (checked 2026-09-29). Where a common plugin is involved we say which code usually fits and why; confirm it against what your app does.

2. Tracking

3. Collected data (optional)

Declares what your own app code collects and sends off the device. It should match your App Privacy answers in App Store Connect. SDKs declare their own collection in their own manifests. Leave everything unticked to output an empty list.

4. Your file


    

Where to put it

  1. Check for an existing file first. Search the ios folder for PrivacyInfo.xcprivacy. Newer project templates (recent React Native versions, for example) already include one. If yours exists, merge these entries into it instead of adding a second file to the same target.
  2. Save it next to the app's Info.plist:
    • Capacitor: ios/App/App/PrivacyInfo.xcprivacy
    • Flutter: ios/Runner/PrivacyInfo.xcprivacy
    • React Native: ios/<YourProjectName>/PrivacyInfo.xcprivacy
  3. Add it to the target in Xcode. Copying the file into the folder is not enough. Open the workspace (ios/App/App.xcworkspace for Capacitor, ios/Runner.xcworkspace for Flutter), drag the file into the App or Runner group in the project navigator, and in the dialog tick your app target under "Add to targets".
  4. Confirm it is bundled: select the target, open Build Phases > Copy Bundle Resources, and check PrivacyInfo.xcprivacy is listed.
  5. Update the plugins the email named (see the notes above), raise the build number, archive and upload. If the email does not come back for that build, the declaration was accepted.

Honest notes

Apple decides. This tool writes the file in the format Apple documents; it cannot know what your code does. Declared reasons must match real behaviour, and choosing a reason that does not fit is itself a review problem. Following this does not guarantee acceptance.

Source: Apple Developer Documentation, "Describing use of required reason API" and the NSPrivacyAccessedAPIType reference (developer.apple.com, read 2026-09-29). Capacitor "Privacy Manifest" docs (capacitorjs.com, read 2026-09-29). Apple updates these lists; the current text at developer.apple.com is the authority.

Want someone to handle it?

Rejection fix, $99: we read the full message, find which code and plugins trigger it, fix the project, upload a new build and draft any reply for your approval. Target turnaround 72 hours from access. Apple still makes the final decision, and its review time is separate.