Skip to content
This repository has been archived by the owner on May 26, 2022. It is now read-only.
/ bugsnag_flutter Public archive

**This community package has been deprecated in favor of Bugsnag's official SDK**

License

Notifications You must be signed in to change notification settings

GetDutchie/bugsnag_flutter

Repository files navigation

Use the Official Bugsnag Flutter SDK

This repo has been deprecated in favor of the official Bugsnag Flutter SDK (same package name). Please see the announcement or skip ahead to the new, official repo.

Bugsnag Flutter

Unofficial native bindings to the Bugsnag SDK. Android is still experimental.

Setup

void main() async {
  await Bugsnag.instance.configure(iosApiKey: 'YOUR_API_KEY', androidApiKey: 'YOUR_API_KEY', releaseStage: 'production');

  // Capture Flutter errors automatically:
  FlutterError.onError = Bugsnag.instance.recordFlutterError;

  runZonedGuarded(() {
    runApp(MyApp());
  }, (error, stackTrace) {
    Bugsnag.instance.recordError(error, stackTrace);
  });
}

⚠️ Because error reporting occurs in Flutter and not in the native code where Bugsnag expects to report the error from, the stack trace is recreated using Flutter's reports. The parsing can occaisionally drop full file paths, so a complete output of the errors thrown are reported to a custom "Flutter" tab on the Bugsnag report.

Breadcrumbs

To better debug a crash, breadcrumbs can be transmitted to Bugsnag. Some are captured by default, but Flutter interactions are not. To track screens, use the built-in observer:

import 'package:bugsnag_flutter/bugsnag_observer.dart';

MaterialApp(
  // ...your material config...
  home: HomeScreen(),
  navigatorObservers: [
    BugsnagObserver(),
  ],
);

Or log specific events:

FlatButton(
  onTap: () {
    Bugsnag.instance.leaveBreadcrumb('Button Tapped', type: BugsnagBreadcrumb.user);
  }
);