Skip to content
LayerShotGet early access
← Blog

The screenshot that makes a bug report actionable

A bug report arrives with a screenshot of an error message, cropped tightly to the red text. It is clear, legible, and almost useless.

The developer's first three questions — which build, which page, what happened just before — are all unanswerable from the image. So the ticket bounces back, and a fix that could have taken twenty minutes takes two days of round trips.

What a developer actually needs to see

A good bug screenshot answers four questions without anyone having to ask them.

What went wrong. The error, the wrong value, the broken layout. This is the part everyone already includes.

Where it happened. The URL bar, the route, the screen name. A cropped error dialog could be from anywhere in the product. Keep the address bar in frame, or say the route in the caption.

What state the app was in. Which account, which environment, which data set. Not the credentials — the context. "Staging, as an admin user, on an org with no billing configured" is often the entire bug.

Which version. Build number, commit, or app version if it's visible anywhere. Bugs that were fixed last week still get reported from stale builds, and nothing wastes more time than chasing one of those.

Keep the console open

For anything on the web, the single highest-value habit is capturing with developer tools open, console tab visible.

A stack trace in the console frequently identifies the failing function immediately. It converts "the save button doesn't work" — which requires reproduction — into "this call is 500ing" — which requires a look at one endpoint. That is often the entire difference between a bug that gets fixed today and one that sits in the backlog waiting for someone to reproduce it.

The network tab is the close second. A failed request with its status code and response body usually beats any amount of prose describing the symptom.

Show the "before" too

A single screenshot captures a state. Most bugs are about a transition — it worked, then I did something, then it broke.

Two screenshots, before and after, communicate a transition that one cannot. When the transition involves several steps or timing, a short recording beats both. If reproducing takes more than about three actions, record it instead of describing it.

Annotate the unexpected, not the obvious

The error message does not need an arrow. It is red, it is the only thing in the frame, and the reader has found it.

What does need marking is anything the developer would not otherwise notice:

  • The field that had a valid value before you clicked
  • The count that should read 3 and reads 0
  • The element that should be present and isn't — the hardest thing to see in a screenshot, because absence has no pixels

That last one is worth a habit of its own. Boxes around empty space, with a short caption saying what belongs there, communicate something a screenshot alone cannot express at all.

Redact before you attach

Bug reports move around: they get copied into Slack, pasted into public issue trackers, forwarded to vendors. Assume the screenshot will end up somewhere less private than the ticket you're filing.

Real customer data, tokens in URLs, and internal account names should all be covered with solid shapes before the file is attached — not blurred, since blur and pixelation are reversible transformations rather than deletion.

The four-second version

If you take nothing else from this: widen the crop enough to include the URL bar, open the console, and capture both.

That single change does more for a bug report than any annotation, and it costs about four seconds.