On this page4 sections
DebuggingIntermediate4-6 min reference

Network Debugging

Half of "the page is broken" bugs are really a failed or malformed request. The Network tab tells you instantly whether the frontend, the backend, or the connection is at fault — which decides who gets the bug. This sheet is the reading guide; for the panel basics see Browser DevTools for QA, and to dissect a saved capture see HAR File Analysis (linked below).

Read a request in this order

  1. Status2xx ok · 4xx client/request · 5xx server · (failed)/(canceled) · 0/CORS.
  2. Timing — slow TTFB = backend; slow content = payload/network.
  3. Request — method, URL, headers (auth!), payload — did the frontend send the right thing?
  4. Response — body + headers — did the backend return the right thing?
  5. Initiator — what triggered it.

Triage signals

You seeLikely cause
4xx with a bad/missing payloadFrontend sent wrong request
4xx with a correct requestBackend validation / auth
5xxBackend bug — grab the response + server log
Request never firesFrontend logic / event not wired
CORS errorServer CORS config / wrong origin
Pending foreverTimeout, backend hang, or blocked
200 but UI wrongResponse shape changed — check the body

Handy moves

  • Preserve log across navigations/redirects.
  • Filter to Fetch/XHR to cut noise.
  • Copy as cURL to replay/escalate a request.
  • Throttle to reproduce slow-network bugs.
  • Check Disable cache for cold-load behaviour.

Common mistakes

  • Reporting "broken" without checking whether the request even fired.
  • Blaming the backend on a 4xx that's actually a malformed frontend request.
  • Missing the failed call because Preserve log was off.
  • Ignoring response headers (auth, content-type, CORS, caching).