Register every build variant
First set the base identifier inapps/mobile/app.config.js. Dynamic Expo config produces three native identifiers:
Register each variant you intend to build as separate iOS and Android apps in the Firebase Console. Use your own base identifier, not the example above.
Add native configuration files
app.config.js selects these exact paths relative to apps/mobile:
Download each file from its matching Firebase app and place it in
apps/mobile. The unsuffixed google-services.json and GoogleService-Info.plist paths in app.json are overridden by app.config.js.
Firebase client config files identify a Firebase project and are commonly shipped in client apps. Treat access control as a Firebase Security Rules, App Check, and API-key restriction concern. Follow your organization’s repository policy when deciding whether to commit them.
Verify selection before building:
Enable services
In Firebase Console:- Enable Authentication and the sign-in providers your app uses.
- Enable Google Analytics if you want the included analytics adapter.
- Open Crashlytics and complete project activation.
- Add Android signing-certificate SHA-1 and SHA-256 fingerprints for Google sign-in and other credential-based services.
Select Firebase auth
Set the runtime adapter inamisi.config.json:
amisi.config.json
apps/mobile/app/_layout.tsx initializes Firebase Analytics and Crashlytics when their feature flags are enabled. All current environment flag sets enable both.
Configure client environment values
Native builds normally initialize Firebase from the selected plist or JSON file. The root layout can also pass Firebase app options when these four public values are all present:EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN and EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET are optional additions. These are public client configuration, not server credentials.
For email-verification deep links, configure:
app.json. The app reads mode=verifyEmail and oobCode from the incoming URL.
Google sign-in additionally requires:
Rebuild and verify
- Email/password and configured social providers create users in Authentication.
- Analytics events appear in Analytics → DebugView.
- A controlled non-development test reaches Crashlytics.
- Each environment connects to the intended Firebase project.
Troubleshooting
Default Firebase app is missing
Confirm the evaluatedgoogleServicesFile, file name casing, and registered identifier. Then create a new native build.
Google sign-in fails
Confirm the web client ID, enabled Google provider, Android SHA fingerprints, iOS URL configuration generated by Firebase, and exact variant identifier.Email verification does not return to the app
Confirm the authorized continue URL, associated domain or intent-filter host, and Firebase link domain. Test both cold-start and already-running app flows.Official documentation
- React Native Firebase
- Firebase iOS setup
- Firebase Android setup
- Firebase Authentication
- Firebase Analytics
- Firebase Crashlytics