Dioxus

SKILL.md

Dioxus 0.7.3 Knowledge Patch

Claude's baseline knowledge covers Dioxus through 0.6.3. This skill provides 0.7.3 features.

Quick Reference

New in 0.7.3

Feature Description
Subsecond Hot-Patching Full Rust code hot-reload via jump table
WASM Splitting Lazy-load chunks for faster initial load
Manganis Assets asset!() macro with optimization & cache-busting
Stores Nested reactivity with path-based subscriptions

Subsecond Hot-Patching

Full Rust hot-reload without restart. Functions called through jump table that gets patched.

// Standard Dioxus - automatic
fn main() {
    dioxus::launch(app);
}

// Non-Dioxus apps
fn main() {
    dioxus_devtools::connect_subsecond();
    loop {
        dioxus_devtools::subsecond::call(|| handle_request());
    }
}

Limitations: No struct changes (size/alignment), thread-locals reset, only tip crate patches.

See references/subsecond-hotpatch.md.

WASM Code Splitting

Split large WASM binaries into lazy-loaded chunks.

#[wasm_split(admin_panel)]
async fn load_admin_panel() -> AdminPanel {
    AdminPanel::new()  // In separate module_admin_panel.wasm
}

async fn handle_route(route: Route) {
    if let Route::Admin = route {
        let panel = load_admin_panel().await;
        panel.render();
    }
}

Key points: Split points must be async, memory shared, requires --emit-relocs.

See references/wasm-split.md.

Manganis Assets

Compile-time asset management with optimization.

let img = asset!("/assets/image.png");
let css = asset!("/assets/style.css", AssetOptions::css().minified());

rsx! {
    img { src: "{img}" }
    link { rel: "stylesheet", href: "{css}" }
}

CSS Modules:

css_module!(Styles = "/my.module.css", AssetOptions::css_module());
rsx! { div { class: Styles::header } }

See references/manganis-assets.md.

Stores (Nested Reactivity)

Granular path-based subscriptions for nested data.

Scenario Use
Scalar state Signal
Nested structures with granular updates Store
#[derive(Store, Clone)]
struct TodoItem {
    checked: bool,
    contents: String,
}

let store = Store::new(TodoItem { checked: false, contents: "Buy milk".into() });

// Subscribe only to `checked` field
let checked = store.checked();
rsx! { input { checked: checked.read() } }

// Changing `contents` won't re-render above
store.contents().set("Buy eggs".into());

See references/stores-signals.md.

Renderers

Renderer Package Use Case
Web dioxus-web WASM/browser via Sledgehammer JS
Desktop dioxus-desktop Wry/Tao webview
Native dioxus-native Blitz/Vello GPU (not a browser)
LiveView dioxus-liveview WebSocket streaming
SSR dioxus-ssr Server-side HTML rendering

All implement WriteMutations trait.

See references/renderers.md.

Workspace Structure

packages/
├── dioxus/           # Main re-export crate
├── core/             # VirtualDOM, components, diffing
├── rsx/              # RSX macro parsing
├── signals/          # Reactive state (Signal, Memo, Store)
├── hooks/            # Built-in hooks
├── router/           # Type-safe routing
├── fullstack/        # SSR, hydration, #[server]
├── cli/              # `dx` build tool
├── web/              # WASM renderer
├── desktop/          # Wry/Tao webview
├── native/           # Blitz/Vello GPU renderer
├── liveview/         # WebSocket streaming
├── manganis/         # asset!() macro
├── subsecond/        # Hot-patching system
└── wasm-split/       # WASM code splitting

Patterns (Unchanged from 0.5-0.6)

Components:

#[component]
fn MyComponent(name: String) -> Element {
    let mut count = use_signal(|| 0);
    rsx! { button { onclick: move |_| count += 1, "{name}: {count}" } }
}

Server Functions:

#[server]
async fn get_data(id: i32) -> Result<Data, ServerFnError> {
    // Runs on server, auto-RPC from client
}

Routing:

#[derive(Routable, Clone)]
enum Route {
    #[route("/")]
    Home {},
    #[route("/blog/:id")]
    Blog { id: usize },
}

Architecture

  • WriteMutations: Trait all renderers implement for DOM changes
  • Generational-box: Provides Copy semantics for signals
  • ReactiveContext: Tracks signal reads for subscription
  • Template-based: RSX compiles to static templates, only dynamic parts diffed

Reference Files

File Contents
references/subsecond-hotpatch.md Hot-patching architecture, ASLR, limitations
references/wasm-split.md WASM splitting pipeline, runtime loader
references/manganis-assets.md Asset processing, binary patching, CSS modules
references/stores-signals.md Store derive, subscription tree, memory model
references/renderers.md WriteMutations trait, renderer differences
Weekly Installs
3
GitHub Stars
7
First Seen
Jan 26, 2026
Installed on
opencode3
claude-code3
antigravity3
gemini-cli3
github-copilot2
cursor1