Overview

Firebase Crashlytics is a component of the Google Firebase platform, specializing in realtime crash reporting for mobile applications. It was originally developed by Crashlytics, Inc. and acquired by Twitter in 2013, before Google acquired Crashlytics from Twitter in 2017 to integrate it into Firebase Google Cloud blog post. The service is designed to help developers identify, prioritize, and resolve stability issues that affect application performance and user experience. Crashlytics automatically collects and processes crash reports, providing detailed stack traces, device information, and custom logs that aid in debugging.

The platform is particularly well-suited for mobile app development teams, from startups to small-to-medium enterprises, who require a streamlined approach to error monitoring without extensive configuration. Its integration with other Firebase services, such as Google Analytics for user behavior insights and Cloud Messaging for notifications, allows for a cohesive development and operational workflow Firebase Crashlytics documentation. This synergy enables developers to not only detect crashes but also understand their impact on user engagement and retention.

Crashlytics provides a dashboard where developers can view crash reports, grouped by root cause, helping to identify the most impactful issues. Features include customizable alerts for new or recurring crashes, breadcrumbs to trace user actions before a crash, and the ability to log custom key-value pairs and user identifiers to enrich crash data. This level of detail helps in reproducing issues and understanding the context in which they occur. The service supports a wide array of mobile platforms and development frameworks, including native iOS and Android, Flutter, React Native, and Unity, making it versatile for cross-platform and game development Firebase Crashlytics setup guide.

While Crashlytics provides a robust solution for mobile crash reporting, alternatives like Sentry offer broader support across various application types, including web frontends and backend services Sentry Mobile Error Monitoring page. However, for teams already invested in the Firebase ecosystem, Crashlytics offers a low-friction integration and a consistent developer experience. Its generous free tier makes it accessible for early-stage projects and applications with moderate usage, with pay-as-you-go pricing for scaling needs.

Key features

  • Realtime Crash Reporting: Provides immediate notifications and detailed reports on application crashes as they occur, enabling prompt incident response.
  • Intelligent Crash Grouping: Automatically groups similar crashes based on stack traces, helping developers identify and prioritize the most prevalent bugs.
  • Detailed Stack Traces: Offers comprehensive stack traces for each crash, pinpointing the exact line of code where the error occurred, facilitating debugging.
  • Device and OS Information: Collects context about the device, operating system, and application version at the time of the crash, aiding in reproduction and diagnosis.
  • Custom Keys and Logging: Allows developers to log custom key-value pairs and user identifiers to provide additional context to crash reports and track user journeys leading to a crash.
  • Breadcrumbs: Records a sequence of user actions or application states prior to a crash, offering insights into potential triggers.
  • Crash-Free User Tracking: Monitors the percentage of users experiencing a crash, providing a key performance indicator for application stability.
  • Integration with Firebase Analytics: Seamlessly integrates with Google Analytics for Firebase to correlate crash data with user behavior and engagement metrics.
  • Customizable Alerts: Configurable alerts for new crashes, sudden spikes in crash rates, or regressions in critical issues.
  • Support for Multiple Platforms: Offers SDKs for iOS, Android, Unity, Flutter, React Native, and NDK, catering to diverse mobile development needs.

Pricing

Firebase Crashlytics operates under the general Firebase pricing model, which includes a generous free tier and a pay-as-you-go structure for usage exceeding the free limits. The free tier, known as the "Spark Plan," provides sufficient resources for many small to medium-sized applications. For larger applications or those with extensive usage, the "Blaze Plan" offers pay-as-you-go pricing based on resource consumption Firebase Pricing Plans.

Firebase Crashlytics Pricing (as of 2026-06-19)
Plan Name Description Crashlytics Specifics
Spark Plan (Free) Free tier for development and small applications. Includes a generous amount of crash reporting data and processing. No specific limits for Crashlytics are published, but it operates within the overall Spark Plan resource quotas for Firebase services.
Blaze Plan (Pay-as-you-go) Scalable plan for production applications with higher usage. Usage billed based on data processing and storage beyond Spark Plan limits. Refer to the Firebase pricing page for detailed cost breakdowns on data transfer and storage, which apply across Firebase services including Crashlytics data.

Common integrations

  • Firebase Analytics: Connects crash data with user behavior to understand the impact of crashes on engagement Firebase Analytics documentation.
  • Cloud Logging (formerly Stackdriver Logging): Crashlytics data can be exported to Google Cloud Logging for advanced querying and analysis Google Cloud Logging documentation.
  • Google Issue Tracker: Direct integration allows for creating and linking issues in Google's internal issue tracking system.
  • Jira: Although not a direct Firebase integration, many teams use webhooks or third-party connectors to push Crashlytics alerts into Jira for workflow management.
  • Slack/Email: Customizable alerts can be configured to send notifications to communication channels like Slack or email for immediate team awareness.

Alternatives

  • Sentry: An open-source error tracking platform supporting a wide range of languages and frameworks, including mobile, web, and backend services Sentry homepage.
  • Bugsnag: A full-stack error monitoring solution offering detailed error reports, stability scores, and workflow integrations Bugsnag homepage.
  • AppCenter Crash Reporting (Microsoft): Part of Microsoft App Center, providing crash reporting for iOS, Android, macOS, and Windows apps, with integration into other App Center services AppCenter Crash Reporting features.

Getting started

Integrating Firebase Crashlytics into a Flutter application involves adding the necessary dependencies and initializing the service. The following example demonstrates a basic setup for a Flutter project Firebase Crashlytics Flutter setup.

import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  // Pass all uncaught errors from the framework to Crashlytics.
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;

  // To capture errors outside of Flutter, add a custom error handler.
  PlatformDispatcher.instance.onError = (error, stack) {
    FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
    return true;
  };

  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State createState() => _MyAppState();
}

class _MyAppState extends State {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Crashlytics Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(title: const Text('Crashlytics Demo')),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: () {
                  // Simulate a Dart error
                  throw Exception('Test Flutter error!');
                },
                child: const Text('Cause Flutter Error'),
              ),
              ElevatedButton(
                onPressed: () {
                  // Simulate a fatal error outside Flutter (e.g. platform channel error)
                  // Note: This won't actually crash pure Dart code, but demonstrates the handler.
                  // For actual platform errors, you would invoke a method channel that throws.
                  // For example, on Android you might call a Java method that throws an exception.
                  debugPrint('Simulating platform error detection...');
                  // Example of manually recording an error
                  FirebaseCrashlytics.instance.recordError(
                    'Simulated platform error object',
                    StackTrace.current,
                    reason: 'A platform specific issue',
                    fatal: true,
                  );
                },
                child: const Text('Cause Platform Error'),
              ),
              ElevatedButton(
                onPressed: () {
                  // Simulate a non-fatal error (handled exception)
                  try {
                    int result = 10 ~/ 0; // Division by zero
                    print(result);
                  } catch (e, s) {
                    FirebaseCrashlytics.instance.recordError(e, s, fatal: false);
                    debugPrint('Caught and recorded non-fatal error: $e');
                  }
                },
                child: const Text('Cause Non-Fatal Error'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

This code snippet initializes Firebase, configures Flutter's error handler to send fatal Flutter errors to Crashlytics, and sets up a platform dispatcher to capture errors outside the Flutter framework. It also includes buttons to demonstrate causing and recording different types of errors (fatal Flutter error, simulated fatal platform error, and non-fatal handled exception) to see how Crashlytics processes them.