Skip to content
Back to skills

Dioxus Knowledge Patch

ASecurity

Dioxus

  • 24 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added February 7, 2026
developmentrustgoreactnodetestingdebuggingapifullstack

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned September 5, 2026

npx -y skills add Nevaberry/nevaberry-plugins --skill dioxus-knowledge-patch --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dioxus Knowledge Patch?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dioxus Knowledge Patch
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nevaberry-dioxus-knowledge-patch/badge)](https://www.skillsdirectory.com/skills/nevaberry-dioxus-knowledge-patch)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: dioxus-knowledge-patch
description: Dioxus
version: "0.8.0-alpha.1"
license: MIT
metadata:
  author: Nevaberry
---



# Dioxus Knowledge Patch

Use this skill when creating, migrating, debugging, testing, or packaging a Dioxus
application. Inspect manifests and the target platform, then open the matching
topic reference.

> [!CAUTION]
> This skill includes guidance for `0.8.0-alpha.1`; prerelease guidance may
> change before stable release.

## Reference index

| Reference | Topics |
| --- | --- |
| [components-reactivity.md](references/components-reactivity.md) | Components, props, errors, signals, stores, hooks, tasks, suspense, and events |
| [assets-styling-ui.md](references/assets-styling-ui.md) | Assets, RSX, attributes, CSS, Tailwind, document elements, evaluation, and accessible UI |
| [fullstack-routing.md](references/fullstack-routing.md) | Server functions, Axum, SSR, hydration, forms, streams, WebSockets, files, SSG, and routing |
| [cli-platforms-bundling.md](references/cli-platforms-bundling.md) | CLI, project configuration, Web, Desktop, Mobile, FFI, logging, deployment, and installers |
| [renderers-testing-internals.md](references/renderers-testing-internals.md) | Native and custom renderers, direct SSR, tests, hot reload, hot-patching, and WASM splitting |
| [migration-edge-cases.md](references/migration-edge-cases.md) | Breaking API changes, dependency boundaries, behavioral fixes, and prerelease cautions |
| [ecosystem-sdk-components.md](references/ecosystem-sdk-components.md) | SDK services, persistence, timers, primitives, styled components, and virtual lists |

## First checks

- Read `Cargo.toml`, `Cargo.lock`, `Dioxus.toml`, enabled Cargo features, target
  platform, and installed `dx` version before changing an API or build command.
- Prefer the unified `dioxus` crate and prelude. Fullstack client and server
  builds require different companion features.
- Build fullstack browser and server targets with their separate companion
  features; do not treat `fullstack` alone as a platform.
- Run `dx doctor` before diagnosing native SDK, toolchain, or system-library
  failures. Use `dx print` to reproduce DX's Cargo and linker arguments.
- Treat alpha guidance as opt-in and verify its exact version before applying it.

## Breaking changes and deprecations

### Components return a result

Current components return `Element`, which is a result-like render value.
Propagate ordinary errors with `?` to the nearest
`ErrorBoundary`; render nothing with `rsx! {}`. Do not use the removed
`VNode::None` or the old `.throw()?` migration form in current code.

```rust
fn Counter() -> Element {
    let mut count = use_signal(|| 0);
    rsx! {
        button { onclick: move |_| count += 1, "{count}" }
    }
}
```

Use `dioxus::Result<T>`/`dioxus::Ok(value)` when an async reactive primitive
needs the cloneable `CapturedError` form. Dioxus errors otherwise interoperate
with `anyhow` and its context and downcast APIs.

### Prefer readable props and store lenses

Use `ReadSignal<T>` for readable reactive props. Signals, memos, store lenses,
and plain values decay into it, so one prop supports reactive and untracked
callers. `ReadOnlySignal` is deprecated.

```rust
#[component]
fn Title(title: ReadSignal<String>) -> Element {
    rsx! { h1 { "{title}" } }
}
```

Use `Store` when children need reactive access to individual collection entries
or nested fields. Generated lens types are intentionally unnamed, so generic
helpers should accept `Readable` or `Writable` bounds rather than spelling the
second `Store` parameter.

### Launch and features are platform-selected

Launch through `dioxus::launch`, `LaunchBuilder`, or `dioxus::serve`. Do not add
old renderer launch crates or `dioxus-lib`. A fullstack configuration needs a
client renderer and server target separately:

```toml
[features]
default = []
web = ["dioxus/web", "dioxus/fullstack"]
server = ["dioxus/server", "dioxus/fullstack"]
desktop = ["dioxus/desktop"]
```

The router is not a default feature. `dioxus::serve` requires `server`, while
`LaunchBuilder` requires `launch`; stores are re-exported under `signals`, not a
separate `stores` feature.

### Events cancel browser defaults synchronously

Call `event.prevent_default()` before any `.await`. Web forms submit by default,
so cancel `onsubmit` when Rust handles the request. LiveView handlers execute on
the server and cannot cancel a browser default in time; use a synchronous raw
browser listener for that case.

### Asset APIs and paths changed

Use `asset!` with crate-root-absolute paths such as `/assets/logo.png`. The old
standalone `manganis::mg!` syntax was transitional. Retain an `Asset` value in
the final program or mark an intentional indirect static `#[used]`, because
link-time collection prunes unused assets.

Build child URLs under directory assets from the formatted hashed `Asset`, not
from the source folder name. Use current `AssetOptions` builders.

## Reactivity and async work

Use `peek()` for a signal read that must not subscribe the current scope, and
`use_reactive` to make otherwise-untracked values into explicit dependencies.

### Pick the task primitive by lifetime

- `use_action` stores the latest result and cancels stale work when called again.
- `spawn` work is cancelled when its component unmounts.
- `spawn_forever` attaches work to the root and must not retain shorter-lived
  signals.
- `use_loader` routes pending and error states through suspense and error
  boundaries without an explicit state match.

## Fullstack quick reference

### Compose the Axum router

`dioxus::server::router(app)` returns the configured static-assets,
server-functions, and SSR router. Ordinary Axum routes added to it win over the
SSR fallback. Import Axum through `dioxus::server::axum` to stay version-aligned.

```rust
#[cfg(feature = "server")]
dioxus::serve(|| async move {
    use dioxus::server::axum::routing::get;
    Ok(dioxus::server::router(app)
        .route("/health", get(|| async { "ok" })))
});
```

Prefer explicit `#[get]`/`#[post]` routes for independently shipped native
clients. The hashed endpoint generated by bare `#[server]` can change with the
function definition.

### Preserve HTTP semantics

- Unrecognized errors become HTTP 500. Use `HttpError`, `OrHttpError`, or a
  serializable typed error with status conversion for intentional responses.
- An `ErrorBoundary` that catches an SSR error must recommit its status through
  `FullstackContext`, or the friendly error page can return 200.
- Out-of-order HTML streaming is opt-in. Once the first chunk commits, headers,
  status, and crawler-visible head content are frozen.

### Keep hydration deterministic

Put synchronous nondeterminism in `use_server_cached` and async values in
`use_server_future`. Their closures must not perform side effects because a
hydrated client may skip them when the server already supplied a value.

## Routing quick reference

Derive `Routable`, mount `Router::<Route> {}`, and navigate with typed variants.
Static segments outrank dynamic segments, which outrank catch-alls; declaration
order breaks ties. Query and hash parse failures default instead of rejecting a
route, while path parse failures allow the next route to match.

```rust
#[derive(Clone, PartialEq, Routable)]
enum Route {
    #[route("/")]
    Home,
    #[route("/post/:id")]
    Post { id: u64 },
}
```

Layouts render children with `Outlet::<Route> {}`. Configure `WebHistory`, hash
history, LiveView history, or memory history explicitly when URL behavior
matters; the default is `MemoryHistory`.

## Assets, styling, and RSX

- Repeat `class:` for conditional classes. Prefer literal class strings so
  Tailwind can discover them.
- Quote unknown attributes and all attributes on dashed custom-element tags.
- In multi-node list output, put `key` on the first node or a keyed `Fragment`.
- Component props spread with Rust struct syntax; explicit fields override the
  spread.
- For Tailwind, configure the input/output paths in `Dioxus.toml` when the
  defaults do not fit and ensure the generated stylesheet is included.

## CLI and platform workflow

```sh
dx doctor
dx serve --web
dx build --raw-json-diagnostics
dx bundle --json-output --verbose
```

DX can serve web, desktop, iOS, Android, fullstack, and ordinary Rust packages.
Native bundles are host-bound; mobile builds also require the platform SDKs,
Rust targets, signing configuration, and permissions. Use `--log-to-file` for
complete diagnostics and the last JSON-output line as a command's structured
result.

Deploy a fullstack web build with both its `public` directory and `server`
executable. The executable reads `IP` and `PORT`; production containers usually
need `IP=0.0.0.0`.

## Verification checklist

- Ensure root-scoped tasks capture only signals that live for the whole app.
- Verify fullstack client and server builds select their intended Cargo features.
- Exercise route fallbacks and deep links on the production host, not only DX's
  development server.
- Test installer resources, sidecars, icons, signing, permissions, widgets, and
  deep links on every target platform.
- For custom renderers, test template caching, reclaimed element IDs, mutation
  stack order, event conversion, and hydration.
- Distinguish RSX hot reload, compiled-code hot-patching, and full rebuilds when
  diagnosing development behavior.

Files in this skill

  • SKILL.md5.7 KB
  • references/cli-desktop.md3.1 KB
  • references/fullstack.md4.8 KB
  • references/router.md2 KB
  • references/rsx-patterns.md7.6 KB
  • references/signals-hooks.md6.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.