sentry 3.0.1
sentry: ^3.0.1
sentry: ^4.0.0-beta.1

Dart native js
Flutter Android iOS web

A crash reporting library for for Dart that sends crash reports to Sentry.io. This library supports Dart VM, and Flutter for mobile, web, and desktop.

Sentry.io client for Dart #

Build Status

Use this library in your Dart programs (Flutter for mobile, Flutter for web, command-line, and AngularDart) to report errors thrown by your program to https://sentry.io error tracking service.

Versions #

Versions 3.0.0 and higher support Flutter for mobile, Flutter for web, command-line, desktop, and AngularDart.

>=2.0.0 <3.0.0 is the range of versions that support Flutter for mobile and Dart VM only.

Versions <2.0.0 are deprecated.

Usage #

Sign up for a Sentry.io account and get a DSN at http://sentry.io.

Add sentry dependency to your pubspec.yaml:

dependencies:
  sentry: ">=3.0.0 <4.0.0"

In your Dart code, import package:sentry/sentry.dart and create a SentryClient using the DSN issued by Sentry.io:

import 'package:sentry/sentry.dart';

final SentryClient sentry = new SentryClient(dsn: YOUR_DSN);

In an exception handler, call captureException():

main() async {
  try {
    doSomethingThatMightThrowAnError();
  } catch(error, stackTrace) {
    await sentry.captureException(
      exception: error,
      stackTrace: stackTrace,
    );
  }
}

Tips for catching errors #

  • Use a try/catch block, like in the example above.

  • Create a Zone with an error handler, e.g. using runZoned.

    var sentry = SentryClient(dsn: "https://...");
    // Run the whole app in a zone to capture all uncaught errors.
    runZoned(
      () => runApp(MyApp()),
      onError: (Object error, StackTrace stackTrace) {
        try {
          sentry.captureException(
            exception: error,
            stackTrace: stackTrace,
          );
          print('Error sent to sentry.io: $error');
        } catch (e) {
          print('Sending report to sentry.io failed: $e');
          print('Original error: $error');
        }
      },
    );
    
  • For Flutter-specific errors (such as layout failures), use FlutterError.onError. For example:

    var sentry = SentryClient(dsn: "https://...");
    FlutterError.onError = (details, {bool forceReport = false}) {
      try {
        sentry.captureException(
          exception: details.exception,
          stackTrace: details.stack,
        );
      } catch (e) {
        print('Sending report to sentry.io failed: $e');
      } finally {
        // Also use Flutter's pretty error logging to the device's console.
        FlutterError.dumpErrorToConsole(details, forceReport: forceReport);
      }
    };
    
  • Use Isolate.current.addErrorListener to capture uncaught errors in the root zone.

Found a bug? #

Please file it at https://github.com/flutter/flutter/issues/new

108
likes
110
pub points
97%
popularity

Publisher

sentry.io

A crash reporting library for for Dart that sends crash reports to Sentry.io. This library supports Dart VM, and Flutter for mobile, web, and desktop.

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD (LICENSE)

Dependencies

http, meta, pedantic, stack_trace, usage

More

Packages that depend on sentry