A privacy manifest is the PrivacyInfo.xcprivacy file in an Xcode project where an app or SDK lists the data it collects and the reasons it uses five categories of system functions. Since May 1, 2024, App Store Connect won't accept an app whose code makes such a call without a reason in the manifest.
What's inside PrivacyInfo.xcprivacy
A privacy manifest is a property list with four top-level keys. Your app has one, and so can every third-party SDK it links, whether that SDK ships as an XCFramework, a Swift package or an Xcode project.
- NSPrivacyTracking. Yes or no, does this code track people in the sense Apple gives the word in App Tracking Transparency.
- NSPrivacyTrackingDomains. Domains that engage in tracking. Until the person grants permission, the system blocks requests to them and your app gets an error.
- NSPrivacyCollectedDataTypes. Which data types are collected, whether they're linked to the person, whether they're used for tracking and for what purpose. Required on every platform.
- NSPrivacyAccessedAPITypes. The categories of system functions that need a declared reason, with reason codes. Required on iOS, iPadOS, tvOS, visionOS and watchOS.
Apple asks for reasons because file timestamps, free disk space or system boot time can be combined into a device fingerprint. Apple doesn't allow fingerprinting at all, even when the person has agreed to tracking.
Where the manifest lives in Xcode
Create the file with File › New › File. In the Resource section pick the App Privacy File type, press Next, tick your app target and press Create. Xcode names it PrivacyInfo.xcprivacy, and that name is required.
The file has to be part of the target's resources or Xcode leaves it out of the report. In a finished iPhone app it sits at the root of the bundle next to Info.plist, in a Mac app under Contents/Resources. A Swift package doesn't treat the manifest as a resource by default, so declare it explicitly, for example with .process("PrivacyInfo.xcprivacy").
Apple's dates and numbers
| What | What Apple says |
|---|---|
| First shown | at WWDC23 in 2023, together with SDK signatures |
| Reasons for calls in your app's code | required since May 1, 2024, App Store Connect won't take the upload without them |
| SDKs on Apple's list | since May 1, 2024 a new app or update that adds one needs its manifest, plus a signature when it's linked as a binary |
| File validity check | since November 12, 2024, an invalid file triggers an ITMS-91056 email with its path |
| Valid manifest in commonly used SDKs | required since February 12, 2025 |
| SDKs on Apple's list | 86 names, from Abseil and Alamofire to Flutter and webview_flutter_wkwebview |
| Top-level keys | 4 |
| Categories of calls that need a declared reason | 5, file timestamps, system boot time, disk space, active keyboards and UserDefaults |
Per Apple's privacy manifest documentation, SDK list, TN3181 and news of December 7, 2023, checked October 16, 2026. We counted the SDKs on Apple's list ourselves.
How to add a privacy manifest
- Create PrivacyInfo.xcprivacy in your app target with File › New › File › App Privacy File.
- If the app doesn't track people, set NSPrivacyTracking to NO. If it does, set YES and list the domains in NSPrivacyTrackingDomains, with no path and no trailing slash.
- Describe every collected data type in NSPrivacyCollectedDataTypes. Use only the values from Apple's list, because custom type or purpose names break the Xcode report.
- Search your code for calls in the five categories. UserDefaults is the usual one, and @AppStorage in SwiftUI is built on it. If only your app reads and writes that data, reason CA92.1 fits.
- Update your SDKs to versions that ship their own manifest. SDK data doesn't go into your file, each SDK describes itself.
- Archive with Product › Archive, Control-click the archive in the Organizer and choose Generate Privacy Report. Xcode saves a PDF that makes the App Privacy questionnaire much easier.
Common mistakes
- The file isn't in the target's resources. Xcode then can't see the manifest while building the report, so your data is missing from the PDF.
- Custom values instead of Apple's. An unknown key, a wrong type or a domain with a path makes the manifest invalid, and App Store Connect emails you an ITMS-91056 notice with the file's name and path.
- Copying SDK data into your own manifest. Apple expects each third-party SDK to describe itself and your app to describe only your code. You're still responsible for all the SDK code inside your app.
- Editing an SDK's manifest in the archive and forgetting the signature. You can fix or delete an invalid SDK file inside the archive, but that breaks the archive's signature. Distribute such a build from the Organizer so Xcode signs it again.
The privacy report before App Privacy
The Xcode report merges the manifests of your app and every linked SDK into one PDF, laid out like the App Store privacy label. Apple suggests keeping it open while you answer the App Privacy questions.
Appto's agent builds the app in SwiftUI inside an Xcode project, and Appto fills in the App Privacy questionnaire in App Store Connect itself, waiting for your yes before it writes. More on the App Store Connect page.
Questions
Does every app need a privacy manifest?
It's needed when your app's code uses calls from the five categories that need a declared reason, UserDefaults being the common one. Since May 1, 2024 App Store Connect won't accept an upload without that reason in the manifest.
Which SDKs need their own privacy manifest?
Every SDK on Apple's list, 86 names as of October 16, 2026, including Firebase, Alamofire, Flutter and OneSignal. The rule covers any version of a listed SDK and SDKs that repackage one.
How do I generate a privacy report in Xcode?
Run Product › Archive, Control-click the archive in the Organizer and choose Generate Privacy Report. Xcode saves a PDF that opens in Preview.
What does ITMS-91056 mean?
Your build contains a manifest with unknown keys or values, and the email names the file and its path. If it came from an SDK, get a newer version of that SDK, if it's yours, remove what doesn't belong.
Privacy manifest vs privacy label, what's the difference?
The manifest is a file inside the build that Xcode and App Store Connect read. The label is a section of your App Store page, filled in through the App Privacy questionnaire without a new version.
Build your own app in Appto
Appto checks the niche on fresh App Store data, designs the screens, writes the code, builds the App Store page and submits to Apple from your account or shows you what to press in App Store Connect. Runs on your own Claude Code or Codex.
Download for Mac