Understand network capture and its limits
Understand how BugMojo records network traffic during a capture, and the honest browser limits that leave some requests partial.
The BugMojo extension records the network requests your page makes while you reproduce a bug: the URL, method, status, timing, and masked headers. Request and response bodies are never captured. This gives whoever picks up the report the API-level story behind a failure. But browsers guard network data for good reasons, so capture has honest limits. Here is how it works and where it stops.
How capture works
When a capture starts, the extension wraps the page's fetch and XMLHttpRequest APIs so every call flows through BugMojo first. Your app still receives its own untouched request and response. Capture never breaks the page it watches. For each request we store:
- Method and URL, such as
POST /api/checkout. - Status and timing: the response code and round-trip duration.
- Headers, request and response, after redaction.
Request and response bodies are not stored, whatever their size or type. They are dropped in the browser and never sent to BugMojo.
Secrets are filtered client-side
Where capture falls short
Browsers deliberately hide some network data, so expect these gaps:
- Opaque cross-origin responses: a
fetchmade inno-corsmode returns an opaque response the page itself cannot read, so neither can we. You will see the request, but the status stays blank. - CORS-blocked reads: if a cross-origin server does not send permissive CORS headers, the browser hands your app an error instead of a response. BugMojo logs the attempt and the error.
- Timing races: requests still in flight when the capture stops are recorded as pending, without a final status.
- Bodies of any kind: JSON, form data, streams, file downloads, and images are never stored; only the request line, status, timing, and masked headers are.
- Non-page traffic: requests made by other browser extensions, service workers, or other tabs are outside the page we hook and are not captured.
Common questions
Why is there no response body in my bug?
By design. BugMojo never captures request or response bodies, because they are where personal data and secrets usually live. You get the method, URL, status, timing, and masked headers for every request instead.
Does BugMojo capture my auth tokens or API keys?
No. Authorization headers, bearer tokens, API keys, and cookies are masked client-side, inside the extension, before any request is saved.
Can BugMojo capture streamed or WebSocket traffic?
Streamed responses like server-sent events and chunked downloads show up as requests with their status and timing, but no content is stored. WebSocket message contents are outside what BugMojo records today.
Related articles
- Inspect the network requests in a bugFind the failed or slow request behind a bug, read its status, timing, and headers, and jump the replay to the moment it fired.
- What gets captured automaticallyUnderstand exactly what the BugMojo extension records with every bug so you know what a report contains.
- What BugMojo can't captureUnderstand the handful of things session replay can't reconstruct, why, and how to work around each one.
- Redact PII on the client before it leaves the browserControl what personal data the extension masks, so sensitive text never leaves the browser in a bug report.

