// the find
ranile/gloo
A modular toolkit for building fast, reliable Web applications and libraries with Rust and WASM
Gloo is the Rust/WASM working group's answer to raw web-sys being painful to use — it wraps browser APIs (events, timers, fetch, WebSockets, Web Workers, localStorage, history, file reading) in idiomatic Rust. It's a toolkit, not a framework, so you pull in just the crates you need. Aimed at anyone writing Rust that targets the browser, whether that's a full app or a single hot-path WASM module dropped into an existing JS project.
The Web Worker abstraction is genuinely well-designed — three distinct worker models (actor, oneshot, reactor) cover the full range of use cases without forcing a single pattern. The gloo-net crate covers fetch, WebSockets, and Server-Sent Events with futures-based APIs, which is exactly what you want when async Rust meets the browser. Headless browser tests exist and are actually run in CI, which is the right call for code that only makes sense in a browser context. Each crate is independently versioned and usable standalone, so you don't drag in 12 crates to get event listeners.
The website's last blog post is from 2022, and the docs feel frozen in time — there's no coverage of newer patterns and the getting-started guide is thin. The history crate is listed but yew-router has largely eaten this use case; it's unclear if gloo-history is still maintained or just kept around for compatibility. No stream support in gloo-net's fetch — if you're doing chunked responses or streaming JSON you're back to raw web-sys. The worker crate's serialization story requires your message types to implement serde, and the codec abstraction layer adds indirection that's occasionally confusing when things don't serialize the way you expect.