AI reads the evidence
Stack traces, the user's journey, and failed API calls point the AI at the right files in your repository. It reads only what's relevant — never your whole codebase, never your secrets.
New: AI-powered fixes
Most tools stop at collecting feedback. Buganalyst captures what actually went wrong, analyzes your code, and opens a pull request with the fix — you just review and merge.
Connect the GitHub repository behind your site. When a report comes in, one click runs an AI analysis against your actual code.
Stack traces, the user's journey, and failed API calls point the AI at the right files in your repository. It reads only what's relevant — never your whole codebase, never your secrets.
The AI returns a root-cause analysis, a plain-English explanation, a confidence rating, and a line-by-line diff of the proposed change — right in your dashboard.
Approve, and Buganalyst creates a branch and opens a pull request with the fix and the full bug context in the description. Merge it and the report is marked resolved automatically.
Checkout button crashes on click
openRoot cause
`total` is undefined when the cart is empty — `.toFixed()` throws.
src/checkout.js
- const price = total.toFixed(2);
+ const price = (total ?? 0).toFixed(2);
Merge it and the report is marked resolved automatically.
A human approves every change — no PR is ever created without your review. Repository access uses a GitHub App with short-lived tokens, scoped only to the repos you choose.
No more "can you send a screenshot?" or "what browser are you on?". The widget captures the technical context automatically while the reporter types two sentences.
Report a bug
errors · journey · API calls attached automatically
Uncaught errors and unhandled promise rejections are captured automatically — message, stack, source file, line and column — plus a snapshot of the UI at the moment it broke.
The clicks, form changes and page navigations leading up to the bug, across reloads and multiple pages. You see exactly what the user did — not what they remember doing.
Every fetch or XHR request that returned 4xx/5xx or failed at the network level is recorded with method, URL and status. “It just didn't work” becomes “POST /api/checkout returned 500”.
Page URL, browser, viewport size, zoom level, language, connection type and URL parameters — everything you'd normally have to ask for, included by default.
Passwords, emails, phone numbers and card-like fields are never recorded. Mark any field with data-bt-private to exclude it explicitly.
Reporters can attach a screenshot or short screen recording (up to 20MB) so you can see the bug, not just read about it.
Route every report to a Slack channel, a Trello list, or both — configured per widget, so each client or project can have its own destination. See the integrations page for details.
Explore integrations →Pick the button icon, colors and tooltip text from the dashboard — no code changes, updates apply instantly on your site. Hide the widget any time with one toggle.
Create a widget per site or app, each with its own embed code, integrations and settings. Built-in analytics show report volume per widget over the last 30 days.
One script tag before </body>. Vanilla JavaScript, no npm install, no build step, works on any stack — React, WordPress, plain HTML, anything that serves a page.
See the setup →Free plan includes a widget, 100 reports a month, and AI fixes to try.