A Bundle ID is the reverse-DNS string that uniquely identifies a single app (or extension, or watch companion app) on Apple's platforms. It lives in `CFBundleIdentifier` inside the .app bundle's Info.plist. Once a Bundle ID is taken on the App Store, it cannot be reused by anyone else.
How it relates to App ID and Team ID
- Your Bundle ID is `com.example.app`.
- Your registered App ID is `TEAMID.com.example.app`.
- Your provisioning profile binds the App ID to one or more signing certificates and (for Development and Ad Hoc) a device list.
- Your build is then signed against that profile, with the matching `CFBundleIdentifier` baked into the .app at compile time.
Subdomain conventions
App extensions, widgets, watch apps, and Notification Service Extensions use sub-bundles whose Bundle ID is the parent's plus a suffix:
- App: `com.example.app`
- Watch app: `com.example.app.watchkitapp`
- Today widget: `com.example.app.TodayExtension`
- Notification service: `com.example.app.NotificationService`