Dioxus 0.6 – Crossplatform apps with Rust

Positioning vs Other Frameworks

  • Frequently compared to Tauri, Electron, Flutter, React Native, Leptos, egui, iced, and Qt.
  • Consensus: Tauri/Electron are app shells for web tech; Dioxus is a full UI framework written in Rust, more like React/Next.js on web and React Native on native.
  • Dioxus markets itself as “Flutter-like but web-first,” which causes confusion because people import Flutter’s drawbacks; maintainers stress DOM-first web support.
  • Leptos is often mentioned as the closest Rust-web competitor (web-only vs Dioxus web+desktop+mobile).

Architecture & Rendering Model

  • On web: Rust compiled to WASM, writing directly to the DOM (no canvas-only rendering). Supports SSR, hydration, streaming HTML, and a Next.js-like fullstack story.
  • On native: Rust code runs directly (no JS VM), can call JNI/Objective‑C/FFI, and currently uses system webviews via wry; a standalone HTML/CSS engine (“Blitz”) and a GPU/Skia-based renderer are under active development.
  • Layout and APIs are intentionally web-like even on native, but plan to integrate with system accessibility APIs.

Performance & Hot Reloading

  • Strong emphasis on performance; internal benchmarks claim very fast DOM diffing and Rust↔JS bindings, though bundle size and memory are acknowledged as worse than top JS frameworks.
  • Uses batching and string interning across the WASM/JS boundary; future WebAssembly features (direct DOM access, better string support) are expected to help.
  • New release substantially improves hot reloading; can reload most RSX and some simple Rust expressions, though not arbitrary Rust code.

Cross‑Platform Ambitions

  • Goal: one Rust codebase targeting web, desktop, mobile, and embedded.
  • Some commenters see this as uniquely promising; others argue serious apps still require platform-specific UIs and many if os == ... branches.
  • Plans for GPU rendering plus native system widgets aim to keep look consistent while interactions feel native.

Ecosystem, Tooling & Maturity

  • Ecosystem seen as early but improving: component libraries and a query-style data library exist, though not yet rich.
  • CLI (dx) and dev tooling still rough: some users hit opaque build failures and system dependency issues (e.g., specific webkit2gtk versions, xdotool on Linux).
  • Rust compile times and hot-reload speed are pain points compared to JS; users discuss workarounds (workspace splits, profile settings).
  • Versioning remains 0.x; maintainers attribute this partly to Rust culture and expect a 1.0 after some API cleanup.

Funding, Governance & Risk

  • Dioxus is a VC-backed company (including YC), which raises concerns about long-term openness and potential “rug pulls.”
  • Project is MIT/Apache-2 and does not require a CLA; maintainers say OSS donations aren’t critical and even plan to redirect remaining funds into the Rust ecosystem.
  • Some worry about bus factor and team size; others argue funding and full-time work improve long-term viability.

Developer Experience & Syntax

  • UI written in an rsx!{} macro DSL, deliberately React/JSX-like and similar to SwiftUI/Jetpack Compose/JSON-style structs.
  • Supporters praise it for ergonomics, hot reload, and static HTML templating; critics find it unreadable and harder to reason about than plain HTML/JSX.
  • Managing shared state across contexts is reported as tricky; some prefer Elm/TEA-style architectures (e.g., in iced, Lustre, Leptos) for more structured state management.