According to the Expo docs, you cannot run Firebase Analytics alongside Expo Go. I think this is misleading, because in my experience, you can get Analytics running, you just can’t call it from within Expo Go. You can call Analytics from apps built with eas
, which is likely what you are running in production anyway.
Here are the steps I took to set up Firebase Analytics for iOS. I am not sure if this will work for Android builds.
Installing packages
You will need to install several packages from your command line.
> npx expo install expo-dev-client
> npx expo install expo-build-properties
> npx expo install @react-native-firebase/app @react-native-firebase/analytics @react-native-firebase/perf @react-native-firebase/crashlytics
Create your Firebase project
Add a new project from the Firebase console: https://console.firebase.google.com/u/0/
Enter your project name

Make sure you select “Enable Google Analytics for this project”. You may have to go through additional setup if you haven’t previously used Google Analytics.

Select the Analytics account, and press Create Project
:

Configure your Firebase project
Once the project is created, select it from the dashboard if you aren’t already on the project page.
Now, select the iOS
option from “Get started by adding Firebase to your app” page.

There are several steps on the page, but you only need to do the first couple.
Register your app
You can find your Bundle ID in the bundleIdentifier
field of the app.json

Download the GoogleService-Info.plist
file
Put the file in the root directory of your project. This should probably not be checked into Git, but I don’t think it is too critical.

You can skip the rest of the steps on the page (SDK, initialization)
App Configuration
You need to add a couple of items to your app.json
file.
"ios": {
<...other setup if present>
"googleServicesFile": "./GoogleService-Info.plist"
},
"plugins": [
<...other setup if present>
"@react-native-firebase/app",
"@react-native-firebase/perf",
"@react-native-firebase/crashlytics",
[
"expo-build-properties",
{
"ios": {
"useFrameworks": "static"
}
}
]
],
Calling Firebase from React Native code
Expo Go cannot load @react-native-firebase/analytics
, so create a wrapper file that will conditionally load it if we aren’t running the app in Expo Go. The code below includes a function logLevelComplete
, that takes two parameters: level
and moves
, and logs a custom event called level_complete
.
import Constants, { ExecutionEnvironment } from 'expo-constants'
// `true` when running in Expo Go.
const isExpoGo = Constants.executionEnvironment === ExecutionEnvironment.StoreClient
let analytics
if (!isExpoGo) {
// eslint-disable-next-line @typescript-eslint/no-var-requires
analytics = require('@react-native-firebase/analytics').default
}
export async function logLevelComplete(level: number, moves: number) {
if (isExpoGo) {
console.log(
'levelComplete analytics event, level: ',
level,
'moves: ',
moves
)
} else {
await analytics().logEvent('level_complete', { level: level, moves: moves })
}
}
Now, you can log events by calling the functions you create in firebaseWrapper.ts
. If you are running in Expo Go, it will log the event to the console, if you are running the app through an eas
build, it will send the Firebase events to Firebase.
Running in Expo Go with the simulator
You can run Expo Go as you normally would, but you will see a warning in your logs that indicates the build is not installed in your simulator, you can ignore this warning.
The expo-dev-client package is installed, but a development build is not installed on iPhone 12 mini.
Launching in Expo Go. If you want to use a development build, you need to create and install one first.
Learn more
Running on your device
To test that the Firebase integration is working, create an eas preview build, with a command like: eas build --profile preview --platform ios --clear-cache
Once the build is done, install it on your device. Within your app, do whatever action will trigger the event call you set up.
If you go to the Firebase dashboard, you should see a count in the Users in last 30 minutes
section after a minute or two.

The events take up to 24 hours to show up in Firebase, so be patient.
References
Expo installation guide: https://docs.expo.dev/guides/using-firebase/#using-react-native-firebase
Firebase setup guide: https://rnfirebase.io/#managed-workflow
Firebase console: https://console.firebase.google.com/u/0/