brevwick
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
consolelogs,networkrequests, androutetransitions, each toggleable viaRingFlagsonBrevwickConfig. - 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.