When registering a new iOS application in the Apple Developer portal, developers must choose between an Explicit App ID and a Wildcard App ID.
The names may sound similar, but they serve different purposes. Selecting the wrong option can limit the Apple capabilities available to your application and create problems when you configure signing, provisioning profiles, push notifications, in-app purchases or App Store distribution.
This guide explains what an Apple Bundle ID is, how Explicit and Wildcard App IDs work, their important differences, and which option you should select for a real iPhone, iPad, macOS, tvOS, watchOS or Flutter application.
What Is a Bundle ID in Apple Development?
A Bundle ID, also known as a bundle identifier, is a unique string used to identify an application throughout Apple’s ecosystem.
Apple uses it to distinguish your app from every other application installed on a device or distributed through the App Store.
A typical Bundle ID looks like this:
Bundle IDs normally use reverse-domain-name notation:
For example:
com.codemicros.civilcom.codemicros.aroundmecom.codemicros.moneytrackercom.example.notesapp
According to Apple, a Bundle ID can contain letters, numbers, hyphens and periods. It should use reverse-DNS format and is treated as case-insensitive.
Important: Choose your production Bundle ID carefully. It becomes part of your app’s identity across Xcode, Apple Developer, provisioning profiles and App Store Connect.
Where Is the Bundle ID Used?
The Bundle ID connects several parts of the Apple development and distribution process.
It is used in:
- Your Xcode project or Flutter iOS project
- The Apple Developer portal
- App IDs and registered identifiers
- Development and distribution provisioning profiles
- Signing certificates and entitlements
- App Store Connect app records
- TestFlight builds
- Push notification configuration
- In-app purchases and subscriptions
- Sign in with Apple
- Associated domains and universal links
- Keychain and app-group configuration
- Third-party services such as Firebase and RevenueCat
The Bundle ID configured in Xcode must match the identifier registered in your Apple Developer account.
Bundle ID and App ID: Are They the Same?
The terms are closely related, but they are not exactly the same.
A Bundle ID is the identifier assigned to your application target, such as:
An App ID is an identifier registered with Apple and used during code signing and provisioning.
Apple describes an App ID as a two-part string that identifies one or more applications belonging to a development team. Depending on how it is registered, the App ID can be explicit or wildcard.
In normal development conversations, developers often use “App ID” and “Bundle ID” interchangeably. However, understanding the distinction is useful when troubleshooting signing or capability problems.
What Is an Explicit App ID?
An Explicit App ID identifies one specific application. It uses the complete Bundle ID without a wildcard symbol.
Example:
This identifier matches only the application using that exact Bundle ID.
It will not automatically match:
Each of those applications should have its own Explicit App ID.
When should you use an Explicit App ID?
You should use an Explicit App ID when:
- You plan to publish the application on the App Store
- You want to distribute the app through TestFlight
- Your app uses push notifications
- Your app includes in-app purchases or subscriptions
- You are integrating Sign in with Apple
- Your app uses associated domains or universal links
- You need app groups or shared data
- You use services that require a unique application identity
- You are building a production Flutter application
Apple states that In-App Purchase is enabled by default for an Explicit App ID.
Practical recommendation: For nearly every real application you plan to develop, test and publish, select an Explicit App ID.
What Is a Wildcard App ID?
A Wildcard App ID can match multiple applications that share the same identifier prefix.
It uses an asterisk as a wildcard at the end of the identifier.
Example:
This wildcard pattern could match Bundle IDs such as:
A wildcard identifier is useful when a development team wants one identifier to cover several simple applications that do not require app-specific capabilities.
When might a Wildcard App ID be useful?
A Wildcard App ID may be suitable for:
- Temporary test applications
- Simple internal prototypes
- Learning projects
- Small development-only applications
- Apps that do not require restricted Apple capabilities
However, many modern Apple capabilities require an Explicit App ID. When creating a Wildcard App ID, Apple disables capabilities that cannot be used with that identifier type.
For this reason, wildcard identifiers are rarely the best option for production applications.
Explicit vs Wildcard Bundle ID: Main Differences
| Feature | Explicit App ID | Wildcard App ID |
|---|---|---|
| Identifier format | Uses a complete Bundle ID | Uses an asterisk at the end |
| Example | com.company.app |
com.company.* |
| Number of apps | Identifies one specific app | Can match multiple apps |
| Production applications | Recommended | Generally not recommended |
| App-specific capabilities | Supports eligible capabilities | Limited capability support |
| In-App Purchase | Enabled by default according to Apple | Use an Explicit App ID for apps requiring app-specific services |
| Push notifications | Use an Explicit App ID | Not suitable |
| Third-party integrations | Easier to configure consistently | May not meet app-specific requirements |
| Best use | App Store, TestFlight and production apps | Basic testing and simple prototypes |
Explicit and Wildcard Examples
Example 1: A production iOS application
Suppose your company is Codemicros and your application is called AroundMe.
The correct Explicit Bundle ID could be:
This identifies only the AroundMe application and is appropriate for App Store distribution, Firebase, subscriptions and other app-specific services.
Example 2: Several temporary test apps
A development team creates multiple small prototypes:
A wildcard pattern could cover them:
This may be convenient for basic testing, provided the apps do not need capabilities that require an explicit identifier.
Example 3: Multiple production apps
If a company has three published applications, it should normally register three Explicit App IDs:
Do not use com.codemicros.* as a shortcut for production apps that require their own services, signing configuration and App Store records.
Why Explicit App IDs Support More Capabilities
Services such as push notifications and in-app purchases must be connected to one identifiable application.
If a single wildcard identifier represents many apps, Apple cannot reliably associate app-specific services, entitlements and credentials with one exact application.
An Explicit App ID provides that exact identity.
When you register an App ID, the Apple Developer portal shows the capabilities available for your membership and platform. Apple notes that a capability checkbox will be disabled when that technology requires an Explicit App ID and you are creating a Wildcard App ID.
How to Register an Explicit Bundle ID
- Sign in to your Apple Developer account.
- Open Certificates, Identifiers & Profiles.
- Select Identifiers.
- Click the plus button.
- Select App IDs and click Continue.
- Confirm that the App type is selected.
- Enter a clear description for the application.
- Select Explicit App ID.
- Enter the complete Bundle ID.
- Select the capabilities required by your app.
- Click Continue.
- Review the information and click Register.
The Explicit App ID should exactly match the Bundle Identifier configured for the application target in Xcode.
How to Register a Wildcard App ID
- Open Apple Developer’s Certificates, Identifiers & Profiles section.
- Select Identifiers and click the plus button.
- Select App IDs.
- Choose the appropriate App ID type.
- Enter a description.
- Select Wildcard App ID.
- Enter a wildcard Bundle ID suffix.
- Review the available capabilities.
- Click Continue and register the identifier.
A wildcard identifier normally ends with an asterisk:
Do not place the wildcard in the middle of a Bundle ID.
Avoid creating an overly broad identifier such as * unless you clearly understand its purpose. A reverse-domain prefix provides better organisation for your development team.
How to Check the Bundle ID in Xcode
To check an iOS project’s Bundle ID:
- Open the project in Xcode.
- Select the project from the navigator.
- Select the application target.
- Open Signing & Capabilities.
- Find the Bundle Identifier field.
It may look like this:
Confirm that the correct development team is selected and that the Bundle Identifier matches the Explicit App ID registered in Apple Developer.
How to Check the Bundle ID in Flutter
Flutter developers can check the iOS Bundle ID through Xcode:
- Open the Flutter project.
- Open the
iosfolder. - Launch
Runner.xcworkspacein Xcode. - Select the Runner project.
- Select the Runner target.
- Open Signing & Capabilities.
- Check the Bundle Identifier.
You can open the correct workspace using:
Always open Runner.xcworkspace instead of Runner.xcodeproj when your Flutter application uses CocoaPods.
Bundle ID Requirements for Firebase
When adding an iOS application to Firebase, Firebase asks for the Apple Bundle ID.
The value entered in Firebase must match the Bundle Identifier in your Xcode or Flutter project.
For example, if Xcode contains:
Use the exact same value while adding the iOS application to Firebase.
A mismatch can cause configuration problems with:
- Firebase Analytics
- Firebase Authentication
- Firebase Cloud Messaging
- Google Sign-In
- Crashlytics
- The
GoogleService-Info.plistfile
Bundle ID Requirements for RevenueCat
RevenueCat also needs the correct app identity when you configure iOS subscriptions.
Your setup typically connects:
- The Explicit Bundle ID in Apple Developer
- The application record in App Store Connect
- Subscription products in App Store Connect
- The iOS application configured in RevenueCat
- The Flutter application’s Xcode Bundle Identifier
These values must refer to the same application.
Using a clear Explicit Bundle ID reduces confusion when connecting subscriptions, entitlements, offerings and App Store credentials.
Can Two Apps Use the Same Explicit Bundle ID?
No. An Explicit Bundle ID uniquely identifies one application.
Two separate production apps should not use the same identifier. Even when two apps belong to the same company, each app needs its own unique Bundle ID.
For example:
Both apps use the same company prefix, but the final component makes each Bundle ID unique.
Can Android and iOS Use the Same Identifier?
Yes, you may use the same reverse-domain string for Android and iOS when it is available in both ecosystems.
For example:
Using the same value can make Firebase, deep links, analytics and project management easier. However, Android and Apple manage these identifiers independently.
Common Bundle ID Mistakes
1. Selecting Wildcard for a production app
A wildcard identifier may prevent you from enabling capabilities your application needs. Use an Explicit App ID for a real App Store application.
2. Using different values in Xcode and Apple Developer
If the values do not match, Xcode may fail to create or locate the correct provisioning profile.
3. Adding spaces or unsupported characters
Bundle IDs should not contain spaces. Use letters, numbers, periods and hyphens according to Apple’s rules.
4. Using an app name instead of reverse-DNS format
A value such as My Great App is not a suitable Bundle ID. Use something like:
5. Copying another company’s identifier
Your Bundle ID should use a domain-style prefix associated with your organisation or brand.
6. Registering the identifier under the wrong team
If you have access to multiple Apple Developer teams, confirm that the correct team is selected before registering the identifier.
7. Changing identifiers between services
Keep the value consistent across Xcode, App Store Connect, Firebase, RevenueCat and other integrations.
Which One Should You Choose?
Choose Explicit App ID if the application is intended for TestFlight, the App Store, client delivery or long-term development.
Choose a Wildcard App ID only when you are creating simple development apps or temporary prototypes that do not require app-specific capabilities.
For most modern iOS and Flutter projects, the safest decision is:
Frequently Asked Questions
What is an Explicit Bundle ID?
An Explicit Bundle ID identifies one specific application using its complete identifier, such as com.company.appname.
What is a Wildcard Bundle ID?
A Wildcard Bundle ID uses an asterisk at the end, such as com.company.*, and can match multiple apps sharing the same prefix.
Should I choose Explicit or Wildcard for an App Store app?
Choose an Explicit App ID. It provides a unique identity and supports app-specific capabilities needed by modern production applications.
Do push notifications require an Explicit App ID?
Use an Explicit App ID for an application that requires push notifications and app-specific notification configuration.
Do in-app purchases require an Explicit App ID?
Apple states that In-App Purchase is enabled by default for an Explicit App ID. Production apps selling digital products or subscriptions should use an explicit identifier.
Can I use one Wildcard App ID for all my apps?
A wildcard can match several simple apps, but it does not support every Apple capability. Separate Explicit App IDs are recommended for production apps.
Is the Bundle ID case-sensitive?
Apple’s Bundle ID glossary states that Bundle IDs are case-insensitive. Even so, developers should keep the format consistent across every platform and service.
Where can I find my Flutter iOS Bundle ID?
Open ios/Runner.xcworkspace in Xcode, select the Runner target, and check Signing & Capabilities.
Final Thoughts
The difference between Explicit and Wildcard App IDs becomes simple once you understand their purpose.
An Explicit App ID belongs to one specific application. It is the correct choice for most App Store, TestFlight, Flutter and production projects.
A Wildcard App ID can cover several basic apps, but it offers limited support for app-specific capabilities. It is more suitable for simple testing and temporary development projects.
If you are creating an application that you plan to publish, integrate with Firebase, connect to RevenueCat, add subscriptions or enable push notifications, register a unique Explicit App ID from the beginning.

