How to Reproduce "Can't Reproduce" Bugs With Session Replay
Stop closing tickets as "cannot reproduce." Learn a developer workflow for reproducing front-end bugs with session replay, console logs, network timelines, and error grouping.
"Works on my machine." "Cannot reproduce." "Need more info." These are the most expensive phrases in software development. Every round of back-and-forth with a user costs hours, and many real bugs get closed because nobody could see what happened.
Session replay ends that loop. You watch the exact session—clicks, inputs, network requests, console errors—and reproduce the bug on the first try.
Table of Contents
- Why Bugs Are Hard to Reproduce
- What a Replay Gives You
- The Workflow
- Finding the Right Session
- Reading the Timeline
- Common Bug Patterns Replay Reveals
- Key Takeaways
Why Bugs Are Hard to Reproduce
- Users can't describe what they did.
- The bug depends on a specific browser, viewport, or extension.
- It depends on data state (a specific account, cart, or project).
- It depends on timing (slow network, double clicks).
- The error message was never shown—the UI just froze.
What a Replay Gives You
| Context | Why it matters |
|---|---|
| Exact click/input sequence | Steps to reproduce |
| Console logs and errors | The actual exception |
| Network timeline | Failed requests, slow responses, bad payloads |
| Browser, OS, viewport | Environment to match |
| Page URL and route history | Where it happened |
| User identity (if identified) | Data state to check |
The Workflow
- Identify users in your app so you can search by user ID or email (SDK API).
- When a ticket arrives, search sessions for that user around the reported time.
- Jump to the moment of the error or rage click on the timeline.
- Read the console and network around that moment.
- Reproduce locally with the same browser, viewport, and steps.
- Link the replay in the ticket for whoever fixes it.
- After deploying, check that the error group stops occurring.
Finding the Right Session
- By user: search by identified user ID or email.
- By error: open JavaScript Errors, pick the group, open a session where it occurred.
- By frustration: filter sessions with rage clicks on a specific URL.
- By page and time: filter by URL and date range.
Session filters cover all of these.
Rank errors by affected sessions
One broken loop can fire thousands of errors in a single session. A quiet error hitting 2% of all visits is usually more important. Sort by sessions, not count.
Reading the Timeline
Look for this sequence:
- User action (click, submit)
- Network request fires
- Response returns an error status or unexpected payload
- Console error
- UI doesn't update, or shows a broken state
- User repeats the action (rage click) or leaves
That sequence usually points straight to the bug.
Common Bug Patterns Replay Reveals
- Unhandled API errors — spinner forever.
- Race conditions — double submit creates duplicates.
- Stale cache after deploy — chunk load errors on navigation.
- Third-party script failures — payment or chat widgets blocked by ad blockers.
- Browser-specific CSS — buttons off-screen on Safari.
- Extension conflicts — translation or password manager extensions mutating the DOM.
Key Takeaways
- Replay turns "cannot reproduce" into "here's exactly what happened."
- Identify users so support and engineering can find sessions fast.
- Read the action → request → error → UI sequence.
- Link replays in tickets.
Conclusion
The fastest bug fix is the one you can see. Give your engineers replays and watch "cannot reproduce" disappear from your tracker.
Frequently Asked Questions
Related articles
Stay in the loop
Get the latest insights on product analytics and user behavior delivered to your inbox.



