Skip to content
Back to Blog
·2 min read

ITMS-91053 and ITMS-91055: privacy manifest upload errors explained

ITMS-91053 means an API that needs a declared reason has no entry in your privacy manifest. ITMS-91055 means an entry exists but the reason value is not a valid reason code. The exact messages and the fix for each, from the Apple Developer Forums thread they appear in.

Two upload errors come from the privacy manifest (PrivacyInfo.xcprivacy) and are easy to mix up. Both are quoted below as developers posted them in the Apple Developer Forums thread on missing and invalid API declarations. Apple does not publish a list of ITMS codes, so these messages are Apple's wording as quoted there, and the text you get today may differ.

ITMS-91053: Missing API declaration

ITMS-91053: Missing API declaration - Your app's code in the "<file>" file references
one or more APIs that require reasons, including the following API categories:
NSPrivacyAccessedAPICategoryUserDefaults. [...] you must include a
NSPrivacyAccessedAPITypes array in your app's privacy manifest to provide approved
reasons for these APIs used by your app's code.

What it means: code in the named file calls an API that requires a declared reason, and your privacy manifest does not declare one. The category is named in the message. The thread shows NSPrivacyAccessedAPICategoryUserDefaults and NSPrivacyAccessedAPICategoryFileTimestamp.

Fix: add a NSPrivacyAccessedAPITypes array to the app's privacy manifest, with one entry per category named in the error and the approved reason for how your app uses that API. The message links to Apple's page, Describing use of required reason API, which lists the required reason APIs and the approved reasons.

Note that the file named in the message may be inside a third-party SDK, not your own code. The same rule applies to it.

ITMS-91055: Invalid API reason declaration

ITMS-91055: Invalid API reason declaration - The PrivacyInfo.xcprivacy for the "<file>"
file contains "App Functionality" as the value for a NSPrivacyAccessedAPITypeReasons key
instead of a valid reason code for using an API in the
NSPrivacyAccessedAPICategoryFileTimestamp category. [...]

What it means: the manifest does have an entry, but a value under NSPrivacyAccessedAPITypeReasons is not a valid reason code for that API category. In the example, "App Functionality" is wording from the App Store privacy labels. It is not a reason code.

Fix: replace each value with a reason code that Apple lists for that exact category on the same Apple page. Reason codes are specific to each API category, so a code that is valid for one category may not be valid for another.

Build the file instead of writing XML by hand

The privacy manifest generator builds a PrivacyInfo.xcprivacy from your choices and shows the Apple page behind each rule. If you have the error email or Xcode output, paste it into the ITMS error lookup to see every code in it explained, and read ITMS-90870, the launch screen error if that one is in the same email.

Written by

Building local-first Mac & iOS productivity apps at Obelisk Club. About the author →