What is Info.plist?
Info.plist, short for information property list, is a structured file bundled with every iOS app that stores configuration and metadata the system reads. It holds values like the app's bundle identifier, its version numbers, the device orientations it supports, and the privacy usage strings that appear when the app requests access to something protected. The operating system and the App Store both read it to understand how the app is set up.
What Info.plist contains
A few keys appear in almost every app. CFBundleIdentifier holds the bundle identifier that uniquely names the app. CFBundleShortVersionString is the version users see, and CFBundleVersion is the build number that must increase with each upload. Other keys declare supported interface orientations, the minimum iOS version, registered URL schemes for deep links, and background modes. The file is a property list, which is a key-value format that can be stored as XML and is readable as plain text.
Privacy usage descriptions
Some of the most important Info.plist keys are the privacy usage descriptions, sometimes called purpose strings. When an app wants the camera, microphone, location, photo library, or contacts, iOS shows a permission prompt that includes your explanation, drawn from keys such as NSCameraUsageDescription or NSLocationWhenInUseUsageDescription. If the app touches one of these resources without the matching string, it can crash at runtime, and App Store review may reject a build whose purpose strings are missing or unclear.
Info.plist versus entitlements and how AppFlight uses it
Info.plist and entitlements are often confused. Info.plist configures the app and supplies the text for permission prompts, while entitlements grant the right to use protected capabilities and are sealed into the code signature. AppFlight builds native Swift and SwiftUI projects and sets the relevant Info.plist values, including version numbers and the privacy usage strings a feature needs, as part of generating a build that is ready for the App Store.
FAQ
What is a privacy usage description?
A privacy usage description, also called a purpose string, is an Info.plist key like NSCameraUsageDescription that explains why the app needs access to a protected resource. iOS shows that text in the permission prompt, and an app that accesses the resource without the string can crash or be rejected.
What is the difference between CFBundleShortVersionString and CFBundleVersion?
CFBundleShortVersionString is the marketing version users see, such as 1.2.0. CFBundleVersion is the build number, which must increase with each upload to App Store Connect. Both live in Info.plist.
Do I have to edit Info.plist by hand?
Not usually. Xcode exposes many Info.plist values in the target settings and updates the file for you. You can still edit the raw keys when you need a setting Xcode does not surface in the interface.