HTTP/2 brought multiplexed streams over one TCP connection. HTTP/3 moves that multiplexing onto QUIC (UDP-based). The difference matters most when packets get lost — and increasingly determines whether bidi connections feel snappy on flaky networks.
HTTP/2 head-of-line under loss
Multiplexed streams share one TCP connection. A lost TCP packet stalls ALL streams until retransmit arrives. On mobile/wifi this is the dominant cause of jankiness.
HTTP/3 per-stream loss isolation
QUIC streams are independently sequenced. Loss on stream A doesn't block stream B. Massive win for apps with many concurrent streams (browsers loading many assets, gRPC fan-out).
Operational deltas
QUIC uses UDP — some networks block or rate-limit it. Always need TCP fallback. Connection migration (changing IPs without losing connection) is QUIC-only — huge mobile win.