The difference between a bug report that gets fixed and one that dies in a queue is almost never the bug. It’s the evidence. “Unable to reproduce” is not a wall. It’s a polite way of saying your screenshot didn’t contain the thing I needed to see.
A screenshot is a tiny message sent to a person who wasn’t in the room. Here’s how to make sure they get what you meant.
Capture the scene, not just the symptom
The error toast is the headline. The state of the screen behind it is the story. Prefer a window capture (⌘⇧W / Ctrl+Shift+W) of the whole app — title bar, toolbar, whatever state is visible — over a tight crop of just the red text. The person fixing this needs to know which screen you were on, what was open, what was selected. If the reproduction depends on a menu or a hover state, that’s what you’re capturing: use the delay timer (⌘⇧7) so the dropdown is still open when the frame fires.
If the problem moves — a flicker, a race, an animation that stutters — that’s a multi-frame job. Take the region capture, open the timeline, and you’ve got the burst: nudge through the frames and pick the one where it visibly goes wrong. A single static frame of a flickering control proves nothing. Three frames do.
Annotate the reproduction, not the opinion
Number the steps. The counter (C) exists for exactly this: click at each step of the repro and the tool hands you ①②③, so the reader follows your exact path in order. Add an arrow (A) where your eye can’t do it, and a spotlight (S) if the screen is busy and the important part is small.
Two rules keep it honest:
- Point at what you did, not at what you feel. “Clicked here, then here, then it did this” reproduces. “This is broken” doesn’t.
- One frame per idea. If the report needs four distinct facts, it needs four annotated frames — or one
.hypercapturewith a timeline the reader can scrub.
Redact before it travels
Your report is leaving your machine and probably your company. Before it ships, sweep it with the redact tool (X): account names, customer data, keys, the URL in the address bar if it’s internal. When it’s truly sensitive, use Secure (solid block) rather than blur — a blur is a curtain, a block is a wall.
Send it in a form that survives
Two options, in order of usefulness:
- The fast one: copy the annotated image (⌘C / Ctrl+C) and paste it straight into the ticket. Fine for one frame.
- The complete one: save the
.hypercaptureand attach it. The recipient opens it in hypershot and it’s still alive — every arrow moveable, the timeline scrub-able, the original frames intact. They can see what you saw, in the order you saw it.
The report that gets fixed
Scene captured whole. Steps numbered. The one thing that mattered spotlighted. Everything private redacted. Sent as a file that still works.
“Unable to reproduce” is a compliment, when it happens anyway. But you just made it a lot harder.