squawk.

Shake-to-report for mobile apps

Shake the phone. Get the whole bug.

Squawk turns a tester's shake into a bug report you can act on: the annotated screenshot, the log tail and the device details, in your inbox or Slack within seconds. Open source, one wrapper, no native setup.

Free while in beta. Sign in with GitHub or a magic link, name a project, and your key is on screen.

Works with

  • FlutterAvailable now
  • React NativeComing soon
  • iOSComing soon
  • AndroidComing soon

No native project edits, no Info.plist, no manifest changes.

Works offline. Reports wait and send when the network is back.

Pen, arrows and text labels, drawn on a still of the screen.

Apache-2.0 SDK. Reports stored in the EU.

How it works

Three steps, and none of them are yours to maintain.

  1. const key = String.fromEnvironment(
      'SQUAWK_API_KEY',
    );
    
    void main() {
      runApp(
        Squawk(
          apiKey: key,
          child: const MyApp(),
        ),
      );
    }
    Step 1

    Install and wrap your app.

    Add the package, wrap your app, and pass your project key at build time. No native project edits, no manifest changes, no Info.plist.

  2. Checkout
    Subtotal38.00
    Shipping4.00
    Total62.00 wrong total
    Pay 62.00
    Report sent to your inbox
    Step 2

    Testers shake to report.

    The screen is captured first, then annotated as a still image, so drawings stay where they were drawn. Pen, arrows and text labels. Works offline; reports wait and send when the network is back.

  3. Inbox 2 open3 open
    Total is wrong on checkout 12:30
    new Pixel 8Android 162.1.0 (87)debug
    Keyboard covers the note field 11:58
    iPhone 15iOS 18.42.1.0 (87)release
    Avatar never loads offline 09:41
    Galaxy S23Android 152.0.9 (84)profile
    Step 3

    Read it in your inbox.

    Every report opens with the screenshot and everything you need to reproduce. Get notified by email, Slack or a webhook. Resolve it in one keystroke, or from the Slack message itself, and the two stay in step.

Every report

What arrives with every report.

01

The annotated screenshot

What the tester saw, with the broken part circled by the person who found it.

02

The log tail

The last stretch of console output and errors leading up to the shake, captured on its own. Opt out with one flag for sensitive apps.

03

Device and app info

Model, OS version, app version and build number, on every report.

04

The build mode

Every report is stamped debug, profile or release, so reports from testers and from the public are easy to tell apart.

The deal

Open where it should be, paid where it costs us.

Apache-2.0, open source

The capture SDK is open source. The Flutter package is on pub.dev today. The hosted inbox and delivery are what you pay for.

Free while in beta

Everything is free while the beta runs, and a free tier stays free at launch. Paying is only ever about putting reports into your team's workflow.

Stored in the EU, deleted for real

Reports live in EU storage and are deleted automatically when their retention ends. Deleting one yourself is immediate: the row and the screenshot go the same day, with no soft-delete limbo.

Pricing

Free to collect. Paid when it joins your workflow.

Free

$0 forever

For your first project. Collecting feedback is never punished, so reports are never capped.

  • 1 project
  • Unlimited reports
  • 30-day retention
  • Email notifications
  • The full SDK

Pro

$15 a month, flat per workspace

For teams and studios that want every report inside the tools they already work in. Not per seat, not per report.

  • Unlimited projects
  • 1-year retention
  • Slack and webhook delivery
  • Linear and GitHub, when they ship

Free for everyone while the beta runs. Billing arrives after, announced by email first.

Your first report is one build away.

Squawk is free while in beta. Wrap your app, ship a test build, and the next shake lands in your inbox.

$ flutter pub add squawk
$ flutter run --dart-define=SQUAWK_API_KEY=sqk_yourkey