Documentation
Introduction
What Wutbug is, how it works and what your team gets in every report.
Wutbug is a bug-report widget for web apps. You install it once in your app and anyone who uses it can report a problem from the browser they already have, with no extensions to install and no accounts to create. Your team receives a reproducible report: what the user said, what they did and what happened in the browser.
How it works
- You install the SDK with a
<script>tag or the@wutbug/sdknpm package. From then on, the SDK keeps the last 2 minutes of the session in browser memory: the DOM replay, the console and the requests. - The user reports. They click the floating button (or your own), describe what happened and, if they want, annotate the screenshot or record their screen. When the form opens, the SDK freezes what it has in memory, so whatever the user does while typing doesn't push the error out of the window.
- The report is sent. Only when the person clicks Send report does the SDK upload the data, already masked in the browser. Nothing leaves before that.
- Your team reviews it in the dashboard: replay synced with the console and network, user steps, device, annotated screenshot and an AI summary. From there you assign it, move it across the board, create the task in Linear, Jira, Notion or Asana, or hand it to your coding assistant over MCP.
What each report includes
| Data | Detail |
|---|---|
| Description | What the user typed and, optionally, their email. |
| Replay | DOM recording (rrweb) of the last 2 minutes. It isn't video: it's lightweight and sharp, and inputs are masked. |
| Console | console.log/info/warn/error/debug, uncaught errors, rejected promises and resources that failed to load, with stack traces. |
| Network | Every fetch and XMLHttpRequest: method, URL, status, duration, headers and bodies (with secrets masked). |
| Steps | Clicks, fields the user typed in and navigation, reconstructed from the replay. |
| Screenshot | Capture of the visible screen that the user can annotate with arrows, rectangles and text, or remove. |
| Screen recording | Optional, up to 2 minutes, only if the user starts it and grants the browser permission. |
| Device and environment | Browser, OS, device type, screen, language, time zone, network, battery (Chromium) and more. See Captured data. |
| User and metadata | Whatever your app provides through setUser() and setMetadata(). |
| Release | Your app's release, used to translate stack traces with source maps. |
How lightweight it is
The initial script weighs about 7 KB compressed and only installs the capture hooks. The widget UI and the replay recorder download when the browser is idle; the screenshot capture and the annotation editor download when the user uses them.
| Part | When it loads | Size (gzip) |
|---|---|---|
wutbug.js and capture hooks | On page load | ~7 KB |
| Widget UI | When the browser is idle | ~14 KB |
| Replay recorder (rrweb) | When the browser is idle | ~23 KB |
| Screenshot capture | When the form opens | ~10 KB |
| Annotation editor | When Annotate is clicked | ~2 KB |
Next steps
- Install the SDK in 2 minutes.
- Check the guide for your framework.
- Understand what gets masked before going to production.
- Connect your coding assistant with MCP.