LimitedRound 2 is open. Get your first month free, no extra charge.Join the waitlist ›
iOS, defined

What is Info.plist?

TL;DR. Info.plist, the information property list, is a structured file bundled with every iOS app that stores configuration and metadata the system reads, such as the bundle identifier, version numbers, supported orientations, and the privacy usage strings shown in permission prompts. iOS and the App Store read it to understand how the app should behave.

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.

Sources

Build this app without opening Xcode.

AppFlight turns a plain-English prompt into a real native iOS app and ships it to the App Store. Round 2 is open: free for your first month.

Join the waitlist