squawk 0.1.1 copy "squawk: ^0.1.1" to clipboard
squawk: ^0.1.1 copied to clipboard

Shake-to-report feedback for Flutter: an annotated screenshot, device and app info, and recent logs land in your inbox.

Squawk #

pub package

Your testers shake their phone — the annotated screenshot, logs, and device info land in your inbox. One widget. Zero native setup.

A tester finds a bug, shakes their phone, scribbles on the screenshot, and taps send. You get the whole picture without asking a single follow-up question:

  • Annotated screenshot — pen, arrows and text labels, drawn by the person who found the bug
  • Device and app context — model, OS, app version, build number, and whether it was a debug, profile or release build
  • Recent logs — a rolling buffer of console output, captured automatically
  • Who hit it — an optional reporter email, plus any user context you attach

Reports arrive in a web inbox at app.squawksdk.com, with email, Slack and webhook delivery. Free while in beta.

Install #

flutter pub add squawk

Quick start #

Create a project at app.squawksdk.com, copy the key it issues, and wrap your app:

void main() {
  runApp(
    Squawk(
      apiKey: 'sqk_your_project_key',
      child: const MyApp(),
    ),
  );
}

That's the integration. No native project edits, no Info.plist entries, no manifest changes. The key is publishable — shipping it in a test build is the intended use.

Triggers #

Shaking the device opens the report sheet. Three more ways in, all opening the same sheet:

// From anywhere in your code — a menu item, a debug button:
Squawk.show();

// A floating button, off by default because it covers your UI:
SquawkOptions(feedbackButton: true)

If your app is used in motion — running, cycling, on a ferry — raise the shake threshold, or turn the shake off and keep the button:

SquawkOptions(shakeSensitivity: ShakeSensitivity.firm)

Sensitivity is Android-only; iOS rides the system shake gesture, which Apple does not make tunable.

Who hit it #

Attach the user context you already have, and every report carries it:

Squawk.setUser(id: 'u_42', email: 'jo@client.com');
Squawk.setMetadata('plan', 'trial');

// On sign-out — forgets the user and all metadata:
Squawk.clearUser();

Offline #

Reports are spooled on disk and sent when the network is back. A tester on a plane can shake, annotate and send; the report arrives after landing.

Theming #

Squawk draws above your MaterialApp, so it cannot read your theme. Hand it one and the report sheet, the sent note and the floating button all match your app:

Squawk(
  apiKey: 'sqk_your_project_key',
  options: SquawkOptions(theme: myTheme, darkTheme: myDarkTheme),
  child: const MyApp(),
)

Pass only theme and it is used whatever the device is set to — which is what you want if your app pins one themeMode.

Options #

Every option has a default that suits most apps; passing no options at all is the expected case.

Option Default What it does
shakeToReport true Shaking opens the report sheet
shakeSensitivity medium How hard the shake must be (Android only)
feedbackButton false A floating button that opens the sheet
captureLogs true Attach recent log output to reports
askReporterEmail true The sheet asks the reporter for their email
theme/darkTheme unset Theme Squawk's own UI

Platforms #

Android and iOS. The positioning is literal — your testers shake their phone — and the shake trigger is native code for exactly those two platforms. On other platforms the package does not apply.

Known limit: platform views (Google Maps, WebView) render blank in screenshots.

Your obligations #

Reports can contain personal data: whatever is on the screen, whatever your app logs, the reporter's email, and any user context you attach. Squawk stores reports in the EU and deletes them for real — deleting a report removes the row and the screenshot the same day — but what goes into a report is under your control:

  • Set captureLogs: false if your logs can carry sensitive data.
  • Only attach user context you are allowed to share with a processor.
  • Cover feedback reports in your app's privacy policy if you ship Squawk to end users rather than testers.

License #

Apache-2.0. The SDK is open source; the hosted inbox that receives reports is a separate paid service, free while in beta.

0
likes
0
points
259
downloads

Publisher

verified publishersquawksdk.com

Weekly Downloads

Shake-to-report feedback for Flutter: an annotated screenshot, device and app info, and recent logs land in your inbox.

Homepage
Repository (GitHub)
View/report issues

Topics

#feedback #bug-report #screenshot #logging

License

unknown (license)

Dependencies

connectivity_plus, device_info_plus, flutter, http, package_info_plus, path_provider

More

Packages that depend on squawk

Packages that implement squawk