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_startedon app opensignup_completedafter account creationtrial_started/subscription_startedfor monetizationpurchase_completedwith a numericvalue
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.