G2 32 x 32 White Circle

4.7 STARS ON G2

Try our product analytics for free. No card required.

UPDATED

7 MIN READ

SHARE THIS POST

React Native Crashlytics: Step-by-Step Setup Guide (2026)

BY Tope Longe
SHARE THIS POST
React Native Crashlytics

React Native Crashlytics is Firebase Crashlytics added to a React Native app through the React Native Firebase module @react-native-firebase/crashlytics. It turns every crash into a report automatically and records handled JavaScript errors you pass to recordError(), with stack traces, device data and custom keys. Setup takes the app and crashlytics packages, your Firebase config files and a rebuild.

StepWhat to doDetail
1. InstallAdd @react-native-firebase/app and @react-native-firebase/crashlyticsRun pod install for iOS
2. Configure FirebaseAdd google-services.json (Android) and GoogleService-Info.plist (iOS)Download both from your Firebase project
3. RebuildRebuild the native appsExpo needs the config plugin and a development build, not Expo Go
4. TestTrigger a test crash with crash()Reopen the app and check the Firebase console
5. Add contextUse setUserId(), setAttribute(), log() and recordError()Recorded JavaScript errors keep their stack traces
6. Link sessions (optional)Attach UXCam's RNUxcam.urlForCurrentSession() as a custom keyLet one tool own crash handling: set UXCam's enableCrashHandling to false

UXCam adds the other half of the picture. It records the session behind each crash, so you can watch what the user did right before it happened, next to the stack trace.

This guide shows how to add Firebase Crashlytics to your React Native app, which of its features matter most, and how to combine it with UXCam. By the end, you'll have a crash reporting setup that tells you both what failed and what the user was doing.

What is React Native Crashlytics?

It's the same Crashlytics that native iOS and Android apps use, so your React Native crash reports land in the Firebase console next to any native apps you run. It's a lightweight crash reporter that helps you track, prioritize and fix the stability issues that hurt app quality.

Key features of Crashlytics for React Native

  1. Real-time crash reporting: Crashlytics reports crashes and non-fatal errors within minutes, with details for each one.

  2. Issue prioritization: It groups similar crashes and ranks issues by how often they happen and how many users they affect.

  3. Stack trace analysis: Stack traces point to the line of code where the crash happened.

  4. Custom logging: You can add log messages and custom keys to give each crash more context.

  5. Cross-platform support: One setup covers both iOS and Android.

  6. Firebase integration: Crashlytics works alongside other Firebase products, such as Analytics and Performance Monitoring.

Benefits of Crashlytics for React Native apps

  1. A more stable app: Finding and fixing crashes quickly makes the app more reliable for everyone.

  2. Less time triaging: Automatic grouping and prioritization show you which crashes matter most.

  3. Better retention: Fewer crashes mean fewer frustrated users, better ratings and more people who stay.

  4. Insight across devices: Crash data shows how the app behaves on different devices and OS versions.

How to implement Firebase Crashlytics in a React Native app

Implementing Crashlytics in React Native comes down to installing two packages, adding your Firebase config files and rebuilding the app. The official React Native Firebase docs cover every step. This section highlights what matters most in a React Native project.

1. Setup and installation

Install @react-native-firebase/app and @react-native-firebase/crashlytics, then add your Firebase config files: google-services.json for Android and GoogleService-Info.plist for iOS. Each platform has a few native steps of its own, so follow the platform sections of the docs, run pod install and rebuild the app.

2. Automatic crash reporting

Once installed, Crashlytics captures crashes automatically. Each report includes the error details, the device type, the OS and the app version, which helps you understand what went wrong.

3. Manual error logging

Not every error crashes the app. When your code catches an error that still matters, call recordError() with the Error object. Crashlytics records it as a non-fatal issue, with its stack trace.

4. Custom keys and logs

Custom keys and log messages add context to each report. Use setAttribute() or setAttributes() for app state, such as the current screen or plan, and log() for the steps that led up to a crash.

5. User identification

Call setUserId() with an internal user ID to see whether specific users keep running into problems. That helps your support team, and it makes user-specific bugs easier to debug.

6. Opt-out mechanism

Give users a way to opt out of crash reporting. Calling setCrashlyticsCollectionEnabled(false) stops collection until they agree, which helps you comply with privacy regulations and respect their choice.

7. Testing crash reporting

Force a test crash with crash() to check that everything works. Reopen the app so the report uploads, then confirm it appears in the Firebase console.

8. Performance considerations

Crashlytics is designed to have minimal impact on performance. It does its work in the background, so it doesn't slow down your app.

9. Versioning

Keep the React Native Firebase packages up to date for new features and fixes. Check that the version you install supports your React Native version.

10. Dashboard usage

The Firebase console is where you analyze crash reports. Sort issues by how many users they affect, so you fix the biggest problems first.

11. Symbolication

Crash reports are only useful if you can read them. Upload dSYM files for iOS and ProGuard or R8 mapping files for Android, and set up automatic uploads so you don't have to remember.

12. Integration with other Firebase services

Crashlytics gets more useful next to other Firebase products. Google Analytics adds the events that led up to a crash, and Performance Monitoring shows app performance alongside crash data.

13. Handling JavaScript errors

React Native Firebase installs its own JavaScript exception handler, so unhandled JavaScript errors also become Crashlytics reports. For errors your code catches, call recordError() so they keep their stack traces. Between the two, both native and JavaScript errors are covered.

How UXCam adds context to Crashlytics reports

UXCam adds the part a crash report can't show: what the user did before the crash. Combining the two gives you the stack trace and the session replay for the same problem.

Integrate UXCam into your mobile app

To get started with UXCam, follow these steps:

  • Create your UXCam account.

  • Install the react-native-ux-cam package with npm or yarn, then run pod install in your ios folder. Expo apps need a development build or EAS Build, because Expo Go can't load native modules.

  • In your root component, call RNUxcam.optIntoVideoRecording() and then RNUxcam.startWithConfiguration() with your app key. Turn off automatic screen tagging and tag screens yourself with RNUxcam.tagScreenName(), as UXCam recommends for React Native.

  • Decide which tool owns native crashes. The UXCam crash docs warn that two crash handlers can conflict, so turn one off at app start. If Crashlytics stays your crash reporter, set enableCrashHandling to false in UXCam. On iOS, that also turns off UXCam's ANR and UI-freeze capture, so weigh it before you choose.

Linking the two tools means every crash report points to the session it came from:

  • Log important user actions: Log the events that matter in your app with UXCam, such as key button taps, completed steps or failed actions.

  • Record sessions: UXCam records every session automatically. Custom events add context to the recording, which helps when you try to reproduce what led up to a crash.

  • Add the session URL to crash reports: RNUxcam.urlForCurrentSession() returns the URL of the current session as a Promise. Set it as a Crashlytics custom key when the session starts, because a native crash leaves no time to run code first. Add it to your logs before you report a JavaScript error, too.

  • Log JavaScript errors to UXCam too: UXCam captures native crashes on its own, but JavaScript exceptions only reach it if you log them. Call RNUxcam.logEvent('js_error') from your ErrorUtils global handler or an error boundary. The error then shows up on the session timeline, right next to the gestures that led to it.

Learn more about session recording and replay for React Native apps with UXCam.

Analyze crashes with enhanced data

Access and review enhanced crash reports

Once each report carries a UXCam session URL, you can go from a crash straight to the session behind it:

  • Open the crash in the Firebase console: Each report now includes the custom key with the UXCam session URL.

UXCam Crashlytics
  • Watch the UXCam session: Follow the URL to watch the recording of the session that ended in the crash. You'll see the user's taps, the screen transitions and the sequence of events that triggered it.

Session Replay new UI

Look at the user interactions

The recording shows what the user did right before the crash. That helps most with UI problems that logs don't explain, and with scenarios that are hard to reproduce.

  • Check UI elements and interactions: Look for elements that misbehave, such as a button users tap again and again with no response.

  • Watch for UI freezes: UXCam flags UI freezes that happen before a crash. A freeze right before a crash suggests the main thread was blocked or overloaded.

React Native crash reporting UI freezes

Use UXCam's analytics

UXCam also shows patterns across many sessions:

  • Heatmaps: See which areas of each screen get the most interaction. A heavily used area that keeps showing up in crash sessions is worth a closer look.

  • User journeys: See the paths users take through the app, and whether certain paths lead to crashes more often than others. That can reveal a design flaw or the point where performance starts to drop.

Screen Flow New UI

Compare UX insights with technical logs

Use the two tools together:

  • Cross-reference the data: If a crash keeps following a certain interaction in UXCam, check the Crashlytics logs from the moment of the crash for the cause.

  • Look at trends: Check both tools over time. If a crash became more common after a release, that tells you where to look and what to test next.

Examine User trends in UXCam

Act on the insights

Then turn what you've learned into changes:

  • Prioritize bug fixes: Fix the crashes that affect the most users or cause the biggest disruptions first.

Flutter performance monitoring stack traces
  • Improve the UX design: Change the screens and flows where users run into trouble, so the same crash is less likely to happen again.

  • Review stability regularly: Check Crashlytics and UXCam together after each release to keep track of your app's stability.

Issue Analytics New UI

Comparing UXCam and Crashlytics data

Crashlytics and UXCam answer different questions. Crashlytics tells you where the code failed, and UXCam shows what the user was doing when it happened. The table compares the two.

FeatureUXCamCrashlytics
Primary FunctionUser experience analytics, including session recordings, heatmaps, and user behavior insightsReal-time crash reporting, including crash logs, stack traces, and crash analytics.
Crash ReportingNative crashes, ANRs and UI freezes with stack traces, each linked to the session replay. JavaScript errors can be logged as custom events.Direct, with detailed stack traces, error logs, and crash analytics
Session RecordingsYes, records user sessions to visualize app usage patterns and issues.No, focuses on crash data rather than user session visuals.
User Interaction InsightsAdvanced, includes heatmaps, gesture analysis, and user journey tracking.Basic, primarily focused on user interaction data related to crashes.
IntegrationCan be integrated with other analytics tools and services for a holistic view.Part of Firebase, and works with other Firebase products such as Analytics and Performance Monitoring.
Data GranularityHigh, with detailed session and behavior data, including screen recordings.High for crash data: stack traces, device and OS details, custom keys and logs for each crash.
ComplexityModerate, requires additional effort to integrate UXCam SDK and configure settings.Moderate, involves adding Firebase dependencies and configuring Crashlytics.

Should you use Crashlytics, UXCam or both?

Use Crashlytics when you need free, reliable crash reporting with readable stack traces. It catches native crashes and unhandled JavaScript errors and groups them by impact, all inside the Firebase console.

Add UXCam when you also need to see what users did before a crash. Link each Crashlytics report to its session replay, and you can fix issues faster while learning how people actually use your app. If you run both, let one tool own native crash handling.

Want to see the sessions behind your crashes? Get started with UXCam and link your first Crashlytics report to a replay.

FAQ

How do I add Crashlytics to a React Native app?

Install @react-native-firebase/app and @react-native-firebase/crashlytics, add your Firebase config files for Android and iOS, run pod install and rebuild the app. Crashlytics then reports crashes automatically. Test the setup by triggering a crash with the crash() method and checking the Firebase console.

Does Crashlytics catch JavaScript errors in React Native?

Yes. React Native Firebase installs its own JavaScript exception handler and turns crashes into reports automatically. For errors your code catches, call recordError() with the Error object to keep its stack trace. Add log() messages and attributes so each report shows what the app was doing.

Does React Native Crashlytics work with Expo?

Yes, with a development build or EAS Build. React Native Firebase uses native code that isn't compiled into Expo Go, so it won't run there. Add the @react-native-firebase/crashlytics config plugin to your app config, then build the app with EAS.

Can I use Crashlytics and UXCam together?

Yes. Let one tool own native crash handling, because two crash handlers can conflict. If Crashlytics owns crashes, set enableCrashHandling to false in UXCam. Then attach the URL from RNUxcam.urlForCurrentSession() to your Crashlytics reports, so each crash links to the session replay.

How do I test Crashlytics in a React Native app?

Trigger a test crash with the crash() method in a debug or release build, then reopen the app so the report uploads. The crash should appear in the Crashlytics section of the Firebase console within a few minutes. Test handled errors by calling recordError() with a JavaScript Error.

You might also be interested in these;

Crashlytics React Native Integration Guide + Best Alternative

Sentry vs Crashlytics - Features, Pricing Comparison & Best Alternative

How to Setup React Native SDK - A Comprehensive Guide

Session Recording & Replay for React Native apps: UXCam

React Native IAP - Using Analytics To Boost In-App Purchase

AUTHOR

Tope Longe

Product Analytics Expert

Ardent technophile exploring the world of mobile app product management at UXCam.

Tope Longe
UPDATED

Related articles

App Analytics

Contentsquare Pricing 2026: Plans, Costs & Best Alternative

Discover Contentsquare pricing with a comparison of plans, features, and the best alternatives to help you choose the right digital experience analytics...

Tope Longe

Tope Longe

Product Analytics Expert

App Analytics

React Error Handling: Best Practices for 2026

Discover essential best practices for handling errors in React applications to enhance user experience, improve debugging, and ensure robust...

Tope Longe

Tope Longe

Product Analytics Expert

App Analytics

The Hotjar for mobile apps: UXCam

Hotjar doesn't support mobile apps. Learn why mobile and web analytics are fundamentally different, what changed after the Contentsquare acquisition, and the best Hotjar alternative for mobile...

Jonas Kurzweg

Jonas Kurzweg

Product Analytics Expert

What’s UXCam?

Autocapture Analytics icon
Autocapture Analytics
With autocapture and instant reports, you focus on insights instead of wasting time on setup.
Customizable Dashboards
Customizable Dashboards
Create easy-to-understand dashboards to track all your KPIs. Make decisions with confidence.
icon new revenue streams (16)
Session Replay & Heatmaps
Replay videos of users using your app and analyze their behavior with heatmaps.
icon new revenue streams (17)
Funnel Analytics
Optimize conversions across the entire customer journey.
icon new revenue streams (18)
Retention Analytics
Learn from users who love your app and detect churn patterns early on.
icon new revenue streams (19)
User Journey Analytics
Boost conversion and engagement with user journey flows.

Start Analyzing Smarter

Discover why teams across 50+ countries rely on UXCam. Try it free for 14 days, no credit card required.

Trusted by the largest brands worldwide

naviclassplushousingjulobigbasket