Somebody reports that your app failed to load their dashboard. You send the standard reply: open DevTools, go to the Network tab, reproduce it, screenshot what you see.
They do exactly that. The screenshot shows a healthy list of requests, all 200s, nothing red. So you close the ticket as not reproducible, and they get annoyed, because the page really was broken.
Both of you are looking at evidence that was collected after the event.
The panel is not a recorder, it is a listener
From Chrome's own Network panel reference: "By default, DevTools records all network requests in the Network panel, so long as DevTools is open." And from the panel's own getting-started page: "DevTools only logs network activity while it's open."
There is no buffer behind that. The Network panel is not reading a log the browser was keeping anyway; it attaches when you open it and records from that moment. Everything the page did before, including the request that failed, was never written down by anything.
So the instruction "open DevTools and reproduce" is asking for the second occurrence of the bug, not the first. Which is fine when the bug is deterministic, and useless when it is not, and the whole category of bugs that arrive as "it worked when I tried again" is exactly the non-deterministic kind:
- A cold cache. The first load fetched something the second load had.
- A race at startup, which the second attempt loses less often because a connection is already warm.
- An expired token that the failing request refreshed as a side effect, so the retry is authenticated and the original was not.
- A rate limit that has since reset.
- Anything that only happens on the first navigation of a session.
Each of those reproduces perfectly, once, on somebody else's machine, and leaves no trace by the time the panel is listening.
Then the log clears itself
The second half is worse, because it discards evidence the panel did record.
Chrome again, on the same page: "To save requests across page loads, check the Preserve log checkbox on the Network panel." It is off by default. Any navigation clears the list. The Console behaves the same way: "By default the Console clears whenever you load a new page."
Now think about what a login bug looks like. The user submits the form, gets bounced through two redirects, lands somewhere wrong. By the time the final page has settled, the network log contains that final page's requests and nothing else. The 302 chain you actually need is gone. The user screenshots what is on screen, which is a perfectly healthy page load, and you conclude that the POST never happened.
The same applies to any bug whose last act is a navigation: a failed checkout that redirects to an error page, an OAuth callback, a form that reloads on submit. The evidence deletes itself at the exact moment the user reaches for the camera.
What to ask for instead
If you are going to ask a person to do this, ask for all of it, in order:
- Open DevTools before the bug, not after.
- Network panel, tick Preserve log. Console settings, tick Preserve log there too.
- In Network settings, tick Capture screenshots if the bug is visual, which gives filmstrip frames lined up against the requests.
- Now reproduce.
- Right-click any row, Save all as HAR with content rather than screenshotting. A screenshot of a list is a list; a HAR is the requests.
That is five steps and three settings that a non-technical reporter will not complete, which is the honest reason most teams send the one-line version and accept the useless screenshot.
The part that does not have a workaround
Steps 1 through 5 all assume the person knew the bug was coming.
Nobody does. The failure happens, and then someone decides it is worth reporting, and by then the only instrument that could have recorded it was switched off. You can ask them to reproduce, and for a deterministic bug that works. For everything else, the report you needed had to be collected by something that was already running when the page broke, which is a different requirement from anything a support reply can contain.
Worth knowing before the next "cannot reproduce". The person did not fail to gather evidence. The evidence was never gathered, by anyone, including you.
Top comments (0)