Join the waitlistDownload

Privacy manifest (PrivacyInfo.xcprivacy). What goes in it and when it's required

The file Apple expects in your app and in every SDK, the reasons you record in it, and how Xcode turns the manifests into a report before you fill in App Privacy.

In short

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

WhatWhat Apple says
First shownat WWDC23 in 2023, together with SDK signatures
Reasons for calls in your app's coderequired since May 1, 2024, App Store Connect won't take the upload without them
SDKs on Apple's listsince 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 checksince November 12, 2024, an invalid file triggers an ITMS-91056 email with its path
Valid manifest in commonly used SDKsrequired since February 12, 2025
SDKs on Apple's list86 names, from Abseil and Alamofire to Flutter and webview_flutter_wkwebview
Top-level keys4
Categories of calls that need a declared reason5, 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 put together a privacy manifestSix steps of a privacy manifest per Apple's documentation as of October 16, 2026. 1. Create PrivacyInfo.xcprivacy with File, New, File, the App Privacy File type. 2. The NSPrivacyTracking key, YES only together with a list of tracking domains. 3. The NSPrivacyCollectedDataTypes key for collected data, values from Apple's list only. 4. The NSPrivacyAccessedAPITypes key with reasons for 5 categories of system calls, CA92.1 is a common reason for UserDefaults. 5. SDK manifests live inside each SDK, and Apple's list has 86 SDKs. 6. The privacy report from the Organizer with Generate Privacy Report, a PDF for the App Privacy questionnaire.How to put together a privacy manifestSix steps in Xcode, per Apple's documentation as of October 16, 20261Create the fileFile › New › Filethe App Privacy File type2TrackingNSPrivacyTrackingYES only with a list of domains3Collected dataNSPrivacyCollectedDataTypesvalues from Apple's list only4Reasons for callsNSPrivacyAccessedAPITypes5 categories, CA92.1 is common forUserDefaults5SDK manifestsinside each SDK86 SDKs on Apple's list6ReportOrganizer › Generate Privacy Reporta PDF for App Privacy
Reasons for the five call categories have been required since May 1, 2024, and the Xcode report merges the app's and the SDKs' manifests into one PDF. Per Apple's documentation, October 16, 2026.

How to add a privacy manifest

  1. Create PrivacyInfo.xcprivacy in your app target with File › New › File › App Privacy File.
  2. 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.
  3. 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.
  4. 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.
  5. Update your SDKs to versions that ship their own manifest. SDK data doesn't go into your file, each SDK describes itself.
  6. 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