brevwick

pub package license: MIT

Flutter SDK for Brevwick — send rich QA feedback from inside your app by wrapping it in a single widget. Bug reports arrive with a screenshot, the recent console / network / route history, and device context already attached, so you spend less time asking "what were you doing when it broke?".

Runs on all six Flutter platforms — Android, iOS, macOS, Linux, Windows, and web.

Install

flutter pub add brevwick

Quick start

Wrap your app once. Brevwick.runGuarded captures uncaught errors, BrevwickScreenshotScope enables screenshot capture, and BrevwickOverlay adds the feedback affordance on top of every route.

import 'package:brevwick/brevwick.dart';
import 'package:flutter/material.dart';

void main() {
  Brevwick.runGuarded<void>(() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Brevwick.install(
      const BrevwickConfig(
        projectKey: 'pk_live_...',
        environment: 'prod',
      ),
    );
    runApp(const MyApp());
  });
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      // Wrap at the builder level so the feedback overlay persists
      // across every named route.
      builder: (context, child) =>
          BrevwickOverlay(child: child ?? const SizedBox.shrink()),
      navigatorObservers: [Brevwick.instance.routeObserver()],
      home: const BrevwickScreenshotScope(child: HomePage()),
    );
  }
}

To capture failing HTTP calls in the network ring, add the interceptor to your Dio instance:

final dio = Dio()..interceptors.add(Brevwick.instance.dioInterceptor());

What gets attached

Every report carries, automatically:

  • Screenshot of the screen the user was on when they tapped the feedback button (captured before the composer opens, so the sheet itself isn't in the frame).
  • Breadcrumb rings — the recent console logs, network requests, and route transitions, each toggleable via RingFlags on BrevwickConfig.
  • Device context — platform, OS, locale, viewport, and SDK version.
  • User context — anything you supply via BrevwickConfig.user / userContext.

Users can add a title, expected/actual notes, and up to a handful of attachments (10 MB each), and optionally let AI format the report.

Privacy & redaction

Every payload runs through a redaction pass before it leaves the device — emails, tokens, and other sensitive values are scrubbed client-side. Set fingerprintOptOut: true on BrevwickConfig to suppress device-fingerprint signals.

Platform view caveat

The screenshot layer cannot capture AndroidView / UiKitView (maps, webviews, and other embedded platform views), which appear as gaps in the captured frame. Document this for any screen that embeds them.

Contract

The canonical SDK contract lives in brevwick-ops/docs/brevwick-sdd.md § 12. The wire format mirrors the brevwick-sdk-js SDK byte-for-byte.

License

MIT — see LICENSE.

Libraries

brevwick
Brevwick Flutter SDK.