If you're like 99.9999% of other developers, you're using UserDefaults in an app.

And because you do that, you'll see this message when you upload your next build to the App Store.

Here's what to do about it…

First, read the documentation:

https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api

The section for UserDefaults is the last one (saving the best for last, of course!)

Describing use of required reason API | Apple Developer Documentation

Ensure your use of covered API is consistent with policy.

Apple Developer Documentation

You'll need to add a new file to your Xcode project. Make sure the PrivacyInfo.xcprivacy file is included in the target (so that it can be extracted after you upload to the App Store).

The documentation here explains how to create the file:

https://developer.apple.com/documentation/bundleresources/privacy_manifest_files#4284009

Privacy manifest files | Apple Developer Documentation

Describe the data your app or third-party SDK collects and the reasons required APIs it uses.

Apple Developer Documentation

The format of the XML in the file isn't obvious. There's a lot of talk about keys for types and description, but the hierarchy wasn't clear to me.

Here's where I landed on the file: https://gist.github.com/chockenberry/2c1c829dba9c7f34c9a7e8e04335be42

NOTE: This file assumes that you only use UserDefaults in the app. If you're using an app group for an extension or whatever, the “CA92.1" won't fly. Read the docs I mentioned earlier!

PrivacyInfo.xcprivacy sample

PrivacyInfo.xcprivacy sample. GitHub Gist: instantly share code, notes, and snippets.

Gist
@chockenberry You’ll also need to include the privacy manifest file in all the relevant extensions, as I learned the hard way.
@adam Oh good one! It's becoming pretty clear that this file is as ubiquitous as Info.plist.