A bundle ID is the unique string that identifies your app to the operating system and the app stores, written in reverse-DNS notation — for example `com.company.appname`. iOS refers to it as the bundle ID; Android calls it the applicationId (historically the package name). It's the canonical identity of the app: two apps can share a display name, but never a bundle ID.
The critical property is immutability. Once an app is published under a bundle ID, that ID is locked — you cannot change it on the existing listing. Shipping a different bundle ID means creating a brand-new app in the store, which starts from zero: no [[keyword-ranking]], no reviews, no install history. This is why the bundle ID is a day-one decision, not something to revisit later.
Beyond identity, the bundle ID anchors a lot of plumbing: code-signing and provisioning, [[deep-linking]] and [[universal-link]] configuration, push credentials, and [[install-attribution]] (MMPs and ad networks key on it). Get it wrong or change it carelessly and deep links, attribution, and entitlements break together.