A library to embed web content in iced applications. Pick a rendering engine, add the widget to your view(), and render HTML inside your own widget tree — not a separate window, not a screenshot.
iced has no built-in way to show web content — your options were a screenshot or a whole second process. iced_webview wires a real renderer into iced's widget tree, and lets you choose how heavy that renderer is.
Lightweight CPU renderer for static HTML/CSS — think emails and documentation. Small, no surprises.
Rust-native engine on Firefox's Stylo — modern CSS including grid, GPU-rasterized. No JS, by design.
A full browser engine — HTML5, CSS3, JS via SpiderMonkey. The most capable, and the heaviest to build.
Chromium Embedded Framework — full Chromium compatibility via cef-rs. Ships Chromium binaries alongside you.
litehtml and Blitz are pure renderers — no JavaScript — and best for static or semi-static HTML. Servo and CEF are real browser engines with JS, at the cost of build complexity and binary size. litehtml is the default; the others are feature flags.




The widget owns its views. Create one with Action::CreateView — pass a PageType::Url or a raw PageType::Html string — then switch between views and render the active one.
One thing to remember: a periodic Action::Update subscription drives rendering and engine state. Wire it up and the rest is just messages.
Need explicit tabs? There's an advanced module that hands you a ViewId per view instead of plain indices.
Each engine carries its own build needs: litehtml wants clang/libclang, Servo is git-only and pulls system deps, and CEF downloads the Chromium binaries at build time. The repo's README and manifest.scm spell out the specifics, including the Guix/FHS dance for CEF.
This is a 0.1.x library and it moves. The embedding API is small and fairly settled, but the engines underneath travel at their own pace — Blitz is pre-alpha, Servo is git-only. Pin a version and read the CHANGELOG before you bump.