Nitpicks… now with issue numbers. Small gripes, properly filed. Petty? Maybe. Tracked? Always. It bugs them. Now it's a bug. From “ugh” to issue #412. Point at it. Your agent takes it from there. Say what's wrong. Your agent fixes it. Clearer feedback in. Better fixes out. Found it. Filed it. Stack trace attached. No more “which page were you on?” Stuck? Say so. Support sees exactly where. Point at the typo. It's an issue. Launch review, without the email thread. Testers click. Issues appear, details attached.
quibble is a feedback button for your web app. They write one sentence. You get an issue in your own tracker with the page, the browser and the error attached.
quibble is a feedback button for the app you're building. Click the thing that's off and say it in a sentence. Your tracker gets an issue with the page, the element and the error, ready for Claude Code, Copilot's coding agent or Codex to pick up.
quibble is a help button for your web app. Customers describe the problem in a sentence, right where they're stuck. Your tracker gets an issue with the page, who's asking, the error, and the account details your app adds.
quibble is a feedback button for your test builds. Testers point at what's broken and write a sentence. Your tracker gets an issue with the page, the element, the browser and the last errors, with no copy and paste.
quibble is a feedback button for a website in review. Reviewers click the heading, image or link they mean and write a sentence. Your tracker gets an issue with the page, the part they pointed at and their screen size.
Email for early access Try it live
Four steps and four lines of code: about ten minutes to add.
Feedback straight into your tracker, wherever it comes from
Hear from your customers
The people using your app tell you what's wrong, on the page where it went wrong, and it lands in your backlog with the details attached.
Speed up QA testing
Testers file as they click through a build: the page, the browser and the error in every report, and no copying into a tracker afterwards.
Tighten the loop with your coding agent
Try the build, say what's off, and the issue is ready for Claude Code, Copilot's coding agent or Codex to pick up.
Make support requests effortless
Customers ask for help from the page they're stuck on. Support gets the page, the account and the error, with no back-and-forth.
Review a website before it goes live
The client and the copywriter point at the heading or image they mean, and each note is an issue, not a screenshot in an email.
What arrives with every note
Always
What they wrote, the page they were on, its title, where they came from, their screen size, browser, language and time zone.
Who sent it
Their name from the sign-in you already have. Without one, they can type it, and the issue says it's self-declared.
When something broke
The last five JavaScript errors the page threw, folded away under Diagnostics until you want them.
When they choose
The element they pointed at. A screenshot, with any region you mark private blanked out.
Additional context you need
Console output, failed network requests and any fields your app wants to add. Off until you turn them on.
FYI nothing leaves your infrastructure.
Hosted feedback tools receive your users' screenshots, console logs and URLs on their own servers. quibble has no servers. A note goes from the browser to your app, and from your app to your tracker, with a token only your app holds.
With nobody else in the path, there's no additional data processing agreement to sign, no additional subprocessor to list and no additional vendor security review to run.
- Their browser
- Their servers
- Your tracker
- Their browser
- Your app
- Your tracker
FYI a submission can never create a label.
People can tag a note, but only with labels your tracker already has. Anything else is dropped before the issue is written, so your label list stays the one you made.
Priorities stay on your scale too. Ask for a P0 and quibble files a P1.
They asked for uiurgent-from-the-ceoP0
quibble filed uiurgent-from-the-ceoP1
FYI nobody needs an account to complain.
One service token files every issue, so the people reporting never need a login on your tracker. Their name comes from the sign-in already in front of your app: Cloudflare Access, SAML, OIDC, oauth2-proxy or mTLS.
No sign-in at all? quibble can ask for a name or email, and marks it self-declared in the issue, so nobody mistakes it for a verified identity.
Behind your sign-in- Reported by: [email protected] (via quibble)
Typed in, no sign-in- Reported by: [email protected] (self-declared, via quibble)
FYI no database. No container. Nothing new to run.
Your issue tracker is the datastore. quibble is a Python package with no dependencies of its own, one script tag, and an adapter for FastAPI, Django, Flask, Starlette or Litestar. Others can easily integrate using a documented schema. It runs inside the app you already deploy.
Which is also why it can run in your browser, with no server behind it. Try it live.
Watch it work
Under a minute, unedited: quibble added to a pretend app, a note filed while pointing at the broken button, an invented tag dropped, and a private box that never leaves.
The live demo runs quibble itself in your browser. Nothing you type leaves it.
Which trackers and languages work
Trackers
| Tracker | Status |
|---|---|
| GitHub | Tested live |
| Gitea | Tested on 1.27.3 |
| Forgejo | Tested on 12.0.4 |
| GitLab | Tested on 19.4.1 CE |
| GitHub Enterprise Server | Not yet tested |
| Jira Data Center / Server | Roadmap |
| Azure DevOps | Under consideration |
| Redmine | Under consideration |
| Bitbucket Data Center | Under consideration |
Want it in your app?
quibble is in early access. Write to hello [at] quibble [dot] fyi and say what you'd use it for. A person reads every one.