// the find
emilk/ehttp
Minimal Rust HTTP client for both native and WASM
ehttp is a tiny HTTP client that works unmodified on native Rust, WASM, and Node.js (v18+), using a single callback-based fetch function instead of separate native/web APIs. It's built by the egui author and is mainly aimed at GUI/game apps (especially egui/eframe) that need to fire off a request without pulling in a full async runtime.
Genuinely one API surface for native and WASM targets, which most HTTP crates don't bother solving - you write the request once and it works in a browser tab or a desktop binary. unsafe is forbidden crate-wide, and the whole thing is small enough to read in one sitting (lib.rs, native.rs, web.rs, plus a streaming module behind a feature flag). Multipart support is included as a first-class module rather than bolted on.
The callback model means you're on your own for getting results back to the calling thread - the README literally lists five different ways to do this (channels, Arc<Mutex>, poll_promise, etc.), which is a sign the ergonomics aren't solved, just documented around. No built-in JSON (de)serialization, retry logic, or middleware/interceptor story, so anything beyond raw bytes in/out is your problem. At 394 stars with a single primary maintainer, this is lightly-used outside the egui ecosystem it was built for, so expect less community troubleshooting than reqwest or similar.