Docs

How to get better bug reports from users

Why bug report forms produce vague reports, which questions to delete, and what to collect automatically instead of asking.

Every team that has ever received "it doesn't work" has responded the same way: by building a better form. More fields, clearer labels, a required dropdown for severity. It almost never works, and it is worth understanding why before you build another one.

Your form is competing with closing the tab

A person reporting a bug is doing you an unpaid favour in the middle of trying to do something else. They wanted to check out, or export a file, or find a setting. The bug interrupted that, and now your form is asking them to interrupt it further.

Every field you add is a place where they decide the favour is not worth finishing. This is the actual constraint, and no amount of form design gets around it — the only real lever is asking for less.

Delete every question the browser can answer

Look at a typical bug report form and count how many fields ask for something the software already knows:

  • Which browser are you using?
  • What operating system?
  • What page were you on?
  • What is your screen size?
  • Did you see an error message?
  • What did you click before it happened?

All six of those are mechanical. A person answering them is doing worse-quality data entry than a two-line script would do, and they are burning the goodwill you need for the one question that matters.

Keep exactly one question

What survives the deletion is intent — what the person was trying to do and what they expected instead. That is the only thing in the whole report your instrumentation can never produce, and it is the thing a non-technical customer answers well.

So the form becomes one field, and the prompt becomes something a human can answer in a sentence:

What were you trying to do, and what happened instead?

Do not make them create an account

The second largest filter, after form length, is the login wall. Sending someone to a feedback portal where they must register before they can tell you your checkout is broken means you hear from the small subset of users patient enough to sign up for a second product to complain about the first one.

That subset is not representative. It skews toward your most invested users, which sounds good until you notice that the person who abandoned checkout and left is precisely the report you needed most.

Then tell them what happened

The last piece is not about collection at all. Whether somebody reports a second bug depends almost entirely on what happened to the first one, and for most products the answer is silence.

An email saying the thing you mentioned is now fixed costs you a status change and turns a one-off reporter into someone who keeps telling you things. It is the cheapest retention mechanism in the whole category, and almost nobody does it.

What good looks like, concretely

A report worth acting on has four parts, and only the first comes from the person:

  1. Intent — what they were trying to do, in their own words.
  2. Environment — browser, version, operating system, viewport, time zone.
  3. Evidence — the JavaScript error and its stack frames, and a screenshot if they attached one.
  4. Path — the clicks, form submissions and page changes that led there.

Collect three of the four automatically and the person only has to be good at the one thing they are already good at.