← All Workshops

MudEngine Part 10: Desktop with Blitz

From WebView to WGPU

Throughout Parts 4–9 we built the MudEngine as a web application — the Dioxus frontend compiles to WASM and runs in a browser tab, while the server runs on Axum. The two communicate via WebSocket and server functions.

Traditionally, Dioxus desktop apps use the system WebView (via the wry crate) to render the UI. But Dioxus also ships an experimental native renderer called Blitz — a GPU-accelerated HTML/CSS engine written in Rust from scratch, built on WGPU and Vello.

Blitz renders your rsx! components directly — no WebView, no system browser engine, no JavaScript bridge. The same HTML and CSS you write gets drawn by your GPU.

Why Blitz instead of a WebView?

The Blitz renderer is in active development by the Dioxus team. It is not yet production-ready — you will encounter missing CSS features and rendering quirks. This part is an exploration of what's coming next.

In this part you will:

  1. Add dioxus-native (the Blitz renderer crate) to your project
  2. Swap dioxus::launch for dioxus_native::launch
  3. Configure the server URL for the native client
  4. Launch the MUD as a native window with GPU-accelerated rendering
🔍 WebView vs Blitz
AspectWebView (wry)Blitz
RenderingSystem browser engine (Chromium/WebKit)Custom WGPU renderer
Bundle size~5 MBPotentially smaller
ControlLimited by WebView APIFull control over rendering pipeline
CSS supportFull browser CSSGrowing (flexbox, grid, Stylo-based)
StatusStableExperimental (pre-alpha)
System depslibwebkit2gtk on LinuxWGPU (Vulkan/Metal/DX12)
"🖥️ Desktop (Blitz — this part)" "🪟 Desktop (wry)" "🌐 Web (Parts 4-9)" WASM Bundle Browser DOM Native Binary System WebView Chromium/WebKit Native Binary WGPU Renderer Vulkan/Metal/DX12 Vello 2D vector engine Stylo CSS engine (Servo)