Reference

Info.plist

Info.plist is the required property-list manifest in every iOS, iPadOS, and macOS app bundle. It declares core metadata — bundle identifier, version, supported devices — plus the usage-description strings that gate access to the photo library, camera, and other protected data.

Build & packagingiOSiPadOSmacOS

Info.plist

Also known as: info plist, app plist keys, info plist

Info.plist is the required property-list manifest in every iOS, iPadOS, and macOS app bundle. It declares core metadata — bundle identifier, version, supported devices — plus the usage-description strings that gate access to the photo library, camera, and other protected data.

  • Info.plist is a required property-list manifest at the root of every iOS/iPadOS/macOS app bundle.
  • It holds identity keys like CFBundleIdentifier, CFBundleShortVersionString, and CFBundleVersion.
  • Privacy usage strings such as NSPhotoLibraryUsageDescription are mandatory before iOS will prompt for that data.

What Info.plist declares

Info.plist ("information property list") is an XML or binary plist file at the root of an app's `.app` bundle. It carries identity and configuration keys the system reads before and while the app runs: `CFBundleIdentifier` (the bundle ID), `CFBundleShortVersionString` (the marketing version), `CFBundleVersion` (the build number), `UIDeviceFamily` (iPhone/iPad support), and supported interface orientations.

It also declares capabilities and limits like background modes, URL schemes the app handles, and minimum OS version. The OS, App Store, and tools like Xcode all parse this file, so an incorrect or missing required key can block a build or rejection at submission.

Privacy usage strings for file and photo access

The keys most relevant to a storage app are the usage-description strings. Before iOS can show a permission prompt, the app must include the matching key: `NSPhotoLibraryUsageDescription` for reading the photo library, `NSPhotoLibraryAddUsageDescription` for adding to it, and `NSCameraUsageDescription` for the camera. Each value is the human-readable reason shown in the system dialog. Omitting a required string causes the app to crash when it requests that data.

A cleaner such as Cleanor declares `NSPhotoLibraryUsageDescription` so it can request PhotoKit access and scan the camera roll for duplicate photos, similar photos, screenshots, and large videos. These declarations work alongside, but are separate from, code-signing entitlements.

Related terms

Keep reading the reference.

Act on it

Guides and tools for this topic.