dioxus-knowledge-patch

Dioxus 0.5+ Knowledge Patch

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "dioxus-knowledge-patch" with this command: npx skills add nevaberry/nevaberry-plugins/nevaberry-nevaberry-plugins-dioxus-knowledge-patch

Dioxus 0.5+ Knowledge Patch

Claude's baseline knowledge covers Dioxus through 0.4.x. This skill provides features from 0.5 (2024) onwards.

Quick Reference

Component Syntax (0.5+)

Old (0.4) New (0.5+)

fn App(cx: Scope) -> Element

fn App() -> Element

cx.use_hook()

use_signal() , use_memo()

use_state , use_ref

Signal<T> (always Copy)

Per-platform launchers dioxus::launch(App)

Signals

Operation Syntax

Create let count = use_signal(|| 0);

Read (subscribes) count.read() or count()

Read (no subscribe) count.peek()

Write count.write() , count.set(5) , count += 1

Global static THEME: GlobalSignal<T> = GlobalSignal::new(|| ...)

Mapped user.map(|u| &u.name)

See references/signals-hooks.md for hooks, effects, resources, coroutines.

RSX Syntax

Pattern Example

Conditional if show { Header {} }

Conditional attr class: if active { "active" }

List with key for item in items { li { key: "{item.id}", ... } }

Children prop fn Card(children: Element) -> Element

Optional prop #[props(default)] disabled: bool

Prop into #[props(into)] id: String

See references/rsx-patterns.md for attributes, events, prop spreading.

Assets (0.6+)

const LOGO: Asset = asset!("/assets/logo.png"); const HERO: Asset = asset!("/hero.png", ImageAssetOptions::new() .format(ImageFormat::Avif).preload(true)); const STYLES: Asset = asset!("/app.css", CssAssetOptions::new().minify(true));

Server Functions (0.7+)

Feature Syntax

Basic #[server] async fn get_data() -> Result<T>

Route params #[get("/api/users/{id}")] async fn get_user(id: u32)

Query params #[get("/search?query")] async fn search(query: String)

Middleware #[server] #[middleware(AuthLayer)]

Extractors async fn auth(headers: HeaderMap, cookies: Cookies)

See references/fullstack.md for WebSocket, SSR, streaming, server config.

Router

#[derive(Routable, Clone, PartialEq)] enum Route { #[route("/")] Home {}, #[route("/user/:id")] User { id: u32 }, #[route("/files/:..path")] // Catch-all Files { path: Vec<String> }, }

See references/router.md for layouts, navigation, nested routes.

CLI Commands

Command Purpose

dx serve

Dev server with hot-reload

dx serve --platform ios

iOS simulator

dx build --release

Production build

dx bundle

Package for distribution

dx serve --wasm-split

Route-based code splitting

See references/cli-desktop.md for desktop config, platform args.

Reference Files

File Contents

signals-hooks.md

Signals, use_memo, use_effect, use_resource, context

rsx-patterns.md

RSX syntax, props, events, conditionals, lists

fullstack.md

Server functions, SSR, WebSocket, extractors

router.md

Routes, layouts, navigation, parameters

cli-desktop.md

CLI commands, desktop config, platforms

Critical Knowledge

Element is Result (0.6+)

Use ? anywhere - propagates to ErrorBoundary:

#[component] fn Profile(id: u32) -> Element { let user = get_user(id)?; // Early return on error rsx! { "{user.name}" } }

Suspense for Async

rsx! { SuspenseBoundary { fallback: |_| rsx! { "Loading..." }, AsyncChild {} } }

fn AsyncChild() -> Element { let data = use_resource(fetch_data).suspend()?; rsx! { "{data}" } }

Document Head

use dioxus::document::{Title, Link, Meta};

rsx! { Title { "My Page" } Meta { name: "description", content: "..." } Link { rel: "stylesheet", href: asset!("/style.css") } }

Stores for Nested State (0.7+)

#[derive(Store)] struct AppState { users: BTreeMap<String, User>, }

#[component] fn UserList(state: Store<AppState>) -> Element { let users = state.users(); rsx! { for (id, user) in users.iter() { UserRow { key: "{id}", user } // Only changed items re-render } } }

CSS Modules (0.7.3+)

css_module!(Styles = "/styles.module.css", AssetOptions::css_module());

rsx! { div { class: Styles::container, // Typed, compile-checked p { class: Styles::title, "Hello" } } }

Fullstack Server Setup

use axum::Router; use dioxus::prelude::*;

#[tokio::main] async fn main() { let app = Router::new() .serve_static_assets("dist") .serve_dioxus_application(ServeConfig::new(), App);

let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
axum::serve(listener, app).await.unwrap();

}

Reactivity Gotchas

Memos in attributes don't subscribe properly:

// BAD: Won't update let style = use_memo(move || format!("color: {}", color())); rsx! { div { style: style } }

// GOOD: Direct signal read rsx! { div { style: format!("color: {}", color()) } }

Use individual CSS properties:

// GOOD: Proper reactivity rsx! { p { font_weight: if bold() { "bold" } else { "normal" }, text_align: "{align}", } }

Hot-Reload Boundaries

Instant reload: Literal values, text, formatted segments, attribute order, template structure

Requires rebuild: Rust logic, component structure, control flow conditions, struct field changes

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Research

rust-knowledge-patch

No summary provided by upstream source.

Repository SourceNeeds Review
Research

postgresql-knowledge-patch

No summary provided by upstream source.

Repository SourceNeeds Review
Research

postgis-knowledge-patch

No summary provided by upstream source.

Repository SourceNeeds Review
Research

bun-knowledge-patch

No summary provided by upstream source.

Repository SourceNeeds Review