Firebase Analytics in an Expo App: A Clean Setup

Firebase Analytics is the most pragmatic way to start measuring an Expo or React Native app. Here's a clean setup that won't fight you later.

1. Pick the right integration path

If you're on Expo, you'll need a development build (not Expo Go) to use the native Firebase SDK via @react-native-firebase/analytics, or use a config plugin. Bare React Native uses @react-native-firebase/app + analytics directly. Either way, you register an app in the Firebase console and drop in the platform config files (google-services.json for Android, GoogleService-Info.plist for iOS).

2. Log canonical lifecycle events

Firebase has some automatic events, but the ones that matter to your funnel you log yourself:

  • session_started on app open
  • signup_completed after account creation
  • trial_started / subscription_started for monetization
  • purchase_completed with a numeric value

Use consistent names and send only non-sensitive parameters — no emails, no payment details.

3. Mind the DebugView delay

Standard Firebase reports can take hours to populate, which makes people think tracking is broken when it's just slow. Enable DebugView (via the debug flag for your platform) to watch events arrive in near-real-time while you're wiring things up.

4. Confirm on a real device before shipping

Build to an actual phone, walk through signup → trial → purchase, and check each event lands in DebugView. Emulator behavior (especially around IDFA/advertising IDs and store flows) differs from real devices.

5. Decide what's next

Firebase covers product analytics. It does not do install attribution well on its own — that's a separate provider (e.g. AppsFlyer) you add when you start paying for installs. Don't block your launch on attribution; get the lifecycle events solid first.

A working Firebase setup is: native SDK installed, canonical lifecycle events logged, verified on-device via DebugView. That's enough to actually understand your app's funnel.