← All Workshops
MudEngine Part 10: Desktop with Blitz
Step 7 / 12
Understanding Blitz rendering
Blitz differs from both the browser and the WebView approach in fundamental ways. Understanding these differences helps you debug issues.
The rendering pipeline
When your component renders, this is what happens inside Blitz:
- Virtual DOM diff — Dioxus computes the new virtual DOM tree (standard Dioxus behaviour)
- DOM tree construction — Blitz converts the virtual DOM into its own
BaseDocumenttree - Style resolution — Stylo (Servo's CSS engine) resolves all CSS rules against the tree
- Layout — Taffy computes positions using Flexbox and CSS Grid rules
- Painting — blitz-paint converts the laid-out tree into draw commands for Vello
- Rendering — Vello issues GPU draw calls via WGPU (Vulkan/Metal/DX12)
What's missing
Compare this to a browser engine like WebKit or Chromium, which have had decades of development. Blitz is building everything from scratch in Rust:
The important thing: you don't need a browser to render your Dioxus app. Blitz handles everything from the rsx! tree to the final pixel on screen, all in Rust.
🔍 Feature comparison
| Feature | Browser | WebView (wry) | Blitz |
|---|---|---|---|
| CSS | Complete | Complete | Flexbox + Grid + basics |
| Text shaping | HarfBuzz | System | Parley (Rust) |
| Images | Full support | Full support | Basic |
| Canvas/WebGL | Yes | Yes | Not yet |
| Accessibility | Full | Full | Via AccessKit |
| JavaScript | V8/SpiderMonkey | System engine | None needed (Rust) |
Step 7 / 12