A bundle ID uniquely identifies a single app throughout the system. The bundle ID string must contain only alphanumeric characters (A-Z, a-z, 0-9), hyphen (-), and period (.). The string should be in reverse-DNS format. Bundle IDs are case sensitive.
The operating system uses the bundle ID to identify the app for which a given preference applies. Similarly, Launch Services uses the bundle ID to locate an app capable of opening a particular file, using the first app it finds with the given identifier. The bundle ID is also used to validate an app’s signature.
In Xcode, the bundle ID is the value for the underlying CFBundleIdentifier key in the information property list resource file and the PRODUCT_BUNDLE_IDENTIFIER
build setting. You set the bundle ID on either the General pane or Signing & Capabilities pane in the project editor. The bundle ID is used to provision devices and configure capabilities. To code sign your app, the bundle ID must match an App ID in your developer account. iCloud container IDs must contain the bundle ID that matches an explicit App ID.
The App Store requires that every bundle in a project have a unique bundle ID, and every embedded executable bundle have a bundle ID that is prefixed with the parent bundle ID. For example, if an iOS app with bundle ID com.example.foo
has an embedded iOS Share Extension, the extension’s bundle ID must start with com.example.foo
.
Important: The bundle ID must match the bundle ID you enter in App Store Connect. After you upload a build to App Store Connect, you can’t change the bundle ID or delete the associated explicit App ID in your developer account.
iOS, macOS, and tvOS apps that are included in a universal purchase must use the same App Store Connect record and have the same bundle ID.
For watchOS apps that have a companion iOS app in the same project, the embedded WatchKit app and WatchKit extension targets must have the same bundle ID prefix as the iOS app. The WatchKit app must have the format [Bundle ID].watchkitapp
, and the WatchKit extension must have the format [Bundle ID].watchkitextension
.
If you change the iOS app's bundle ID, also change the WatchKit app's WKCompanionAppBundleIdentifier key and the WatchKit extension's WKAppBundleIdentifier key to match.