Fixing ITMS-91061 and ITMS-91055

ITMS-91061: "Missing privacy manifest"

App Store Connect returns this when your app -- or an SDK it embeds -- calls one of Apple's five Required Reason API categories and no PrivacyInfo.xcprivacy file in the app bundle declares an approved reason for it. It doesn't matter whether the call is deliberate or came in through a dependency; Apple checks the compiled binary's symbol table, not your intent.

ITMS-91055: "Invalid API reason declaration"

You have a manifest, but one of its declared reason codes isn't on Apple's published list for that category. The most common cause is copy-pasting an entry from one category's example while changing only the NSPrivacyAccessedAPIType string -- the reason codes are not interchangeable between categories.

The five Required Reason API categories

CategoryTypical trigger
File timestampcreationDate, modificationDate, stat()/fstat()/lstat(), getattrlist()
System boot timeProcessInfo.processInfo.systemUptime, mach_absolute_time()
Disk spacevolumeAvailableCapacityKey, systemFreeSize, statfs()
Active keyboardUITextInputMode.activeInputModes
User defaultsUserDefaults, NSUserDefaults, SwiftUI's @AppStorage

Find the exact file and line

The checker on this site scans your source for these symbols, reads your manifest, and tells you exactly which category is used-but-undeclared or declared-with-an-invalid-code, with the file and line for every match. It runs as a browser tool (nothing uploaded) or a Node CLI you can add to your own pre-submission check.

This is evidence of what the code and the manifest say, not a determination that App Review will pass -- see the checker and its disclaimer for what it can and can't see, and verify against Apple's current documentation before you resubmit.

← Back to the checker