In-app bug reporting for Flutter apps

Testers shake the phone or tap a button, mark up the screen, and the report lands on the same board as your website bugs.

The Flawsnap Flutter SDK, the flawsnap package, adds bug reporting to iOS and Android apps built with Flutter. Testers shake the device or tap a floating button, mark up a screenshot, and send it with recent logs, HTTP requests, device and app version details. Install it from pub.dev with flutter pub add flawsnap.

Where it stands

The SDK is the flawsnap package on pub.dev, version 0.4.0 (published 8 November 2026), MIT licensed. The full reference is in the Flutter docs. It supports iOS and Android only; there is no Flutter web or desktop support. It needs Dart 3.13 and Flutter 3.47 or newer.

Setup

  1. 1

    Allow mobile reports

    In the project's Security settings, turn on Accept reports from mobile apps and copy the pk_ key. Apps send no browser origin, so this switch is what lets them in.

  2. 2

    Add the package

    Run flutter pub add flawsnap, or add flawsnap: ^0.4.0 to pubspec.yaml.

  3. 3

    Initialise and wrap your app

    Call Flawsnap.init before runApp, then wrap your root widget.

  4. 4

    Android release builds

    Add <uses-permission android:name="android.permission.INTERNET" /> to your manifest.

main.dart
import 'package:flawsnap/flawsnap.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Flawsnap.init(
    apiUrl: 'https://backend.flawsnap.com/api/v1',
    projectKey: 'pk_...',
    insights: true, // optional: user flow, API timing and errors (see Insights)
  );
  runApp(Flawsnap.wrap(const MyApp()));
}

How testers open the reporter

  • Shake the device (needs a physical device, not a simulator).
  • Tap the floating button. Admins can hide it or set its position and colour from the portal.
  • From your own code with Flawsnap.show(), for example from a "Report a problem" item in settings.
  • Limit the triggers with triggers: {FlawsnapTrigger.button}.

What a Flutter report contains

  • A screenshot marked up with box and draw in five colours
  • Title, description, priority and category
  • Device model, OS and version, app name, version and build, screen size, pixel ratio, locale, light or dark mode
  • The current screen
  • The last 100 log lines: Flutter errors, uncaught exceptions, debugPrint output and Flawsnap.log calls
  • The last 100 requests made through Flawsnap.httpClient(). Bodies are never recorded

Getting screens and requests into reports

GoRouter and auto_route are covered by the navigator observer. Requests made with Dio or other HTTP clients are not seen yet; only package:http through Flawsnap.httpClient() is.

Screens, HTTP and context
MaterialApp(navigatorObservers: [Flawsnap.navigatorObserver])

final client = Flawsnap.httpClient(); // a package:http client
Flawsnap.screen('Settings');
Flawsnap.identify(name: 'Sam Lee', email: '[email protected]');
Flawsnap.setMetadata({'build_channel': 'beta'});
Flawsnap.log('Payment sheet failed to open', level: 'error');

Team sign-in on a phone

Testers who are team members can call Flawsnap.signIn(), which shows a device-code approval page. Their reports then carry their name. The reporter token lasts 30 days; pass a ReporterTokenStore (for example one backed by flutter_secure_storage) to encrypt it at rest.

What it does not do

  • No screen recording in Flutter.
  • No arrow, text or blur annotation tools.
  • No native iOS or Android crash reports.
  • No Swift, Kotlin, React Native or Expo SDKs. Flutter is the only mobile SDK.

Questions

Can I use the SDK today?
Yes. It is on pub.dev: run flutter pub add flawsnap. It is included on both Starter and Pro; Insights from the app (journeys and API timing) needs Pro.
Do app reports and website reports go to the same place?
Yes, if they use the same project. Reports are tagged iOS, Android or Web, and you can filter by platform in the portal.
Will it work in my Flutter web build?
No. The SDK supports iOS and Android only. For the web version of your app, use the website widget.

Try it on your own site

7-day free trial, then $9 a month for Starter or $19 for Pro, per organization, with unlimited team members.

Updated