// the find
moq-dev/web-transport
Rust WebTransport library for native and WASM
A Rust library that abstracts WebTransport (QUIC streams + datagrams) behind a unified API that compiles to both native and WASM targets. It comes from the MoQ (Media over QUIC) project, so it's built by people who actually need this for real-time media streaming, not a toy implementation. If you're building a Rust server that needs to talk to browsers over HTTP/3 without wrangling Quinn's HTTP/3 setup yourself, this is the shortest path.
The native/WASM split is genuinely well thought out — same trait interface, different backends (Quinn for native, browser WebTransport API for WASM), so you can write shared code that works both places. The qmux fallback over TCP/TLS/WebSocket means you're not dead when WebTransport isn't available on an older client — that's a real production concern most WebTransport libraries ignore. Language bindings via UniFFI cover Python, Kotlin, and Swift with automated release pipelines, which is unusually complete for a library at this star count. The Python test suite includes actual browser interop tests, which is a higher bar than most network libraries bother with.
The crate explosion is a real maintenance surface — eight separate Rust crates, plus JS/Python/Kotlin/Swift bindings, means any breaking change in the trait layer ripples across a lot of code. The quiche backend exists but clearly lags the Quinn backend in test coverage and examples; if you need Cloudflare's QUIC stack instead of Quinn, you're on your own. Self-signed certificate handling in native mode requires manual cert fingerprint pinning, which the browser mandates differently than native clients do — the README glosses over this and it will bite you in integration. The qmux draft spec (draft-ietf-quic-qmux) is still a personal draft, so the fallback path is built on something that may never standardize.