The iOS bundle ID is missing or not properly configured in Firebase. This error occurs when your iOS app's bundle identifier doesn't match what's registered in Firebase Console or when the GoogleService-Info.plist file is missing.
Firebase Authentication requires that your iOS app be properly registered in Firebase Console with the correct bundle identifier. The bundle ID is a unique identifier for your iOS application (e.g., com.example.myapp). When Firebase tries to authenticate your iOS app, it checks that the bundle ID matches what's configured in the Firebase project. If the bundle ID is missing, empty, or mismatched, Firebase rejects the authentication request with this error. This error typically occurs during app initialization or when attempting any authentication operation that requires Firebase to validate your app's identity.
Open your iOS project in Xcode and locate your bundle identifier:
1. Select your project in the Xcode project navigator
2. Select your app target
3. Go to the "General" tab
4. Look for "Bundle Identifier" field (example: com.example.myapp)
Note the exact value - bundle IDs are case-sensitive. You'll need this to match it in Firebase Console.
Go to your Firebase project and register your iOS app:
1. Open Firebase Console (https://console.firebase.google.com)
2. Select your project
3. Click the iOS+ icon in the project overview, or click "Add app" and select iOS
4. Enter your bundle identifier (from step 1) in the "iOS Bundle ID" field
5. Enter an App Nickname (for your reference, e.g., "My App iOS")
6. Click "Register app"
The bundle ID field is case-sensitive and cannot be changed after registration, so verify it matches your Xcode project exactly.
After registering your iOS app, download the configuration file and add it to Xcode:
1. In Firebase Console, after clicking "Register app", you'll see a "Download GoogleService-Info.plist" button
2. Click it to download the file
3. Open Finder and navigate to your project folder
4. Drag GoogleService-Info.plist into Xcode (into the root of your project)
5. In the dialog that appears, make sure "Copy items if needed" is checked
6. Select your app target in the "Add to targets" section
7. Click "Finish"
Verify the file appears in your Xcode project navigator and is included in your app target's "Build Phases > Copy Bundle Resources".
Confirm that the downloaded plist file has your bundle ID:
1. In Xcode, select GoogleService-Info.plist
2. Open it with Xcode's property list editor
3. Look for the "BUNDLE_ID" key
4. Verify its value matches your Xcode project's Bundle Identifier exactly
5. If it doesn't match or is empty, re-register your app in Firebase Console with the correct bundle ID
If the bundle ID is empty or wrong, delete the file and download a fresh copy from Firebase Console.
After adding or updating the configuration file, rebuild your app:
1. In Xcode, go to Product > Clean Build Folder (or press Shift+Cmd+K)
2. Delete Derived Data folder (optional but recommended):
- Press Cmd+Shift+G in Finder
- Paste: ~/Library/Developer/Xcode/DerivedData
- Delete the folder for your project
3. Go to Product > Build (or press Cmd+B)
4. Run your app on a simulator or device
The clean build ensures Xcode picks up the GoogleService-Info.plist changes.
For cross-platform frameworks, ensure the native iOS layer is properly configured:
React Native:
- Run npx react-native run-ios which rebuilds the iOS project
- Verify your bundle ID is set correctly in Xcode (RCTBundleURLProvider uses the bundle ID)
- Check that ios/YourApp/Info.plist has the correct CFBundleIdentifier
Flutter:
- Verify bundle ID in ios/Runner/Info.plist matches Firebase
- Run flutter clean then flutter pub get then flutter run
- Check ios/Runner.xcworkspace (not Runner.xcodeproj) in Xcode
For both frameworks, always work with the .xcworkspace file, not the .xcodeproj file directly.
Bundle IDs serve as your app's unique identifier in the Apple ecosystem. They're used by iOS, App Store Connect, and third-party SDKs like Firebase to identify your specific application.
Common mistakes when changing bundle IDs:
- Changing the bundle ID in Xcode but not updating it in Firebase Console
- Using different bundle IDs in development vs. production configurations
- Forgetting to re-download GoogleService-Info.plist after changing the bundle ID in Firebase
For development vs. production, you may want to create separate Firebase projects or use build schemes in Xcode to manage different bundle IDs. Each unique bundle ID should have its own entry in Firebase Console.
If you have multiple bundle IDs (e.g., for different build variants), add all of them as separate iOS apps in your Firebase project. Each will get its own GoogleService-Info.plist file with the correct bundle ID.
Callable Functions: INTERNAL - Unhandled exception
How to fix "Callable Functions: INTERNAL - Unhandled exception" in Firebase
auth/invalid-hash-algorithm: Hash algorithm doesn't match supported options
How to fix "auth/invalid-hash-algorithm: Hash algorithm doesn't match supported options" in Firebase
Hosting: CORS configuration not set up properly
How to fix CORS configuration in Firebase Hosting
auth/reserved-claims: Custom claims use reserved OIDC claim names
How to fix "reserved claims" error when setting custom claims in Firebase
Callable Functions: UNAUTHENTICATED - Invalid credentials
How to fix "UNAUTHENTICATED - Invalid credentials" in Firebase Callable Functions