Identifiers
The App ID determines both the Bundle ID and the available capabilities. Decide your Bundle ID early and avoid changing it — once it is in use, it cannot be deleted or reused.
App ID vs Bundle ID
| Concept | Description |
|---|---|
| Bundle ID | The app’s unique identifier (e.g. com.example.myapp), configured in Xcode |
| App ID | The identifier record registered in the developer portal, matching the Bundle ID |
| Capabilities | Services enabled on the App ID: push, universal links, Sign in with Apple, etc. |
The App ID is like an app’s ID card; the Bundle ID is its ID number; capabilities are the “services” attached to that card. Profiles reference the App ID and inherit its capabilities.
Creating an App ID
- Go to Certificates, Identifiers & Profiles → Identifiers → ”+” → choose App IDs.
- Select App type (not App Clips or others).
- Enter a description and the Bundle ID (reverse DNS, e.g.
com.example.myapp). - Check the capabilities you need: Push Notifications, Associated Domains, Sign in with Apple, App Groups, Background Modes, etc.
- Save to create the App ID.
Wildcard vs Explicit
| Type | Example | Use case | Capability support |
|---|---|---|---|
| Explicit App ID | com.example.myapp | Most production apps | Full support |
| Wildcard App ID | com.example.* | Some utility/batch apps | Restricted (some capabilities unsupported) |
Always prefer an explicit App ID. Wildcard App IDs cannot enable push, Sign in with Apple, App Groups, etc., and may be confused across multiple apps. Don’t use wildcard for production products.
Capabilities Quick Reference
| Capability | Purpose | Notes |
|---|---|---|
| Push Notifications | Remote push | Also configure APNs key / certificate |
| Associated Domains | Universal links, web credentials | Requires hosted apple-app-site-association |
| Sign in with Apple | Apple login | App must show “Continue with Apple” button |
| App Groups | Share data with Extensions/Widgets | Shared containers across targets |
| Background Modes | Background tasks | Enable only what is needed to avoid review scrutiny |
| In-App Purchase | IAP | Modern versions configured via Xcode |
Changes & Maintenance
- After adding capabilities, you must regenerate the provisioning profile (profiles snapshot the App ID’s capabilities at creation time).
- Once a Bundle ID is used for release, it cannot be deleted or reused; confirm naming before creation.
- Changing capabilities can affect already-installed versions; be careful in production.
Self-Check List
- Explicit App ID created (reverse DNS, no typos)
- All required capabilities enabled
- Bundle ID matches the Xcode project exactly
- Profiles regenerated after adding capabilities
FAQ
- Typo in the Bundle ID? If unused, delete and recreate; if already in use (including on test devices), you must switch to a new ID.
- Capabilities enabled but signing fails? Regenerate the profile; also enable the same capability in the Xcode target.
- Cannot find the App ID? Check you are in the correct Team; confirm it wasn’t created as a wildcard by mistake.
PreviousCertificatesDevelopment vs distribution certificates — how to create, back up, and manage them, plus common signing error troubleshooting.
NextProvisioning ProfilesConfigure provisioning profiles for development and release, including types, creation steps, maintenance, and common error troubleshooting.
