Hand it off, don't retype it
Open the Issue in your own coding agent with one click, or copy the prompt. It carries the Brief, the Evidence and the code-area pointer, with the reporter's words fenced as data.
Feedback that fixes itself
One tap on your site, one shake of a phone, or a crash on your server — each files a report with the console, the network and the screen attached. It lands as an Issue that is already written up, in one queue. Then Ship it and a hosted agent opens the PR.
Install
The browser SDK is a script tag or an npm package, the Expo SDK is one provider around your app, and the Node SDK is a single init call at the top of your server. They carry the same trace, the same masking, and file into the same board.
<script src="https://unpkg.com/@fixback/sdk"></script><script> Fixback.init({ key: "pk_live_9f2c4a…" });</script>One tag. No build step, no framework, nothing to wire up.
How it works
The same four steps whether the report came from a browser tab, a phone in someone's hand, or a server that threw at three in the morning.
The overlay plus an always-on ring buffer. One tap files a report with the element, the screenshot, and the seconds before it. Uncaught errors file themselves.
Deduped against what is already open, then titled and written up as a Brief — summary, repro, expected vs actual. Upload sourcemaps and the stack points at your real file and line.
One board with occurrence counts and the whole Evidence bundle: replay, console, network, annotation. Email lands when an Issue is filed. You decide what matters.
Ship it and a hosted agent opens the PR in an isolated sandbox — or hand the Brief to your own agent. Fixback watches the branch, the PR and the merge, closes the Issue and tells the reporter.
The Issue it produced
No one wrote this up — not the title, not the Kind, not the Brief. The report arrived, analysis suggested what it duplicates, and the write-up was waiting before you looked.
The Revenue card rounds to the nearest ten before rendering; the export does not, so the two disagree by up to $150 on any day with cents.
$48,120, export reads $47,980.GET /api/v2/revenue?range=30d · 200 · 412 ms — payload carries 47980.44The return path
Connect the repo and Fixback watches what happens next. A hosted agent — or your own — does the work; the Issue follows the branch, the pull request and the merge on its own, and so does the person who reported it.
Open the Issue in your own coding agent with one click, or copy the prompt. It carries the Brief, the Evidence and the code-area pointer, with the reporter's words fenced as data.
A Fixback: fixes FIX-140 trailer, or a fixback/FIX-140 branch. Squash-merge, merge commit, or a push straight to main — all three still find their way back to the Issue.
Merging resolves the Issue and appends the trail: branch pushed, PR opened, merged, deployed. A successful deploy from your own CD marks it live. Fixback never deploys for you.
“Your report is fixed” lands in their inbox the moment the merge closes it — naming the Issue and the page they filed it from, and nothing they didn't submit themselves.
The return-path GitHub App only reads — it listens for branches, pull requests, merges and deploys, and writes nothing back to your repository. When you Ship, the hosted agent opens the PR through a separate token scoped to your one repo, minted only at push. How the connection works →
Everywhere your product runs
Most feedback tools stop at the browser. A bug reported by shaking a phone in the airport, and the 500 the server threw a second earlier, arrive in the same board with the same Evidence as one reported from a laptop.
A script tag or an npm package. Self-isolating — two shadow roots, no CSS either way.
One provider around your app. Works in Expo Go — no custom dev client to build.
One init at the top of your entry file. Express and NestJS adapters included.
The trust model
How far a fix runs on its own depends on who reported it. Fixback derives the tier on the server, on every submission — a reporter can never claim one. That is what makes it safe to leave the overlay open to the public.
Every default is overridable per Issue — fast-track a typo from a stranger, hold a logic change from a teammate. Inputs are masked before the screenshot is taken, and URLs, console text and network metadata are scrubbed before any of it leaves the page.
Usage-based
All three SDKs, capture, traces, replay, projects, invites, and the whole queue.
Pay when a report is deduped, enriched and becomes a triaged Issue.
Ship opens the PR today; metered pricing per Run that ships is coming.
Nothing to meter until Fixback has already done work you can see. Adding the SDK to another project costs nothing, which is the point.
One tag, one provider, or one init call. Your first Issue lands with the write-up already done.