DioxusLabs

dioxus: Build Cross-Platform Apps with Rust

Dioxus is a Rust UI framework for building web, desktop, and mobile apps from a shared codebase. It combines reactive UI, development tooling, and optional fullstack features for teams that want Rust across client and server.

Stars
39.3k
Forks
1.9k
Stars, last 7 days
+53

Our take

Health score

64/100

How it is scored
Activity
66
Community
80
Issues
56
Pull requests
53

+53 stars in the last 7 days

  • More contributors than 77% of the projects we track
  • Slower to close issues than 80% of the projects we track

Overview

Dioxus is a Rust framework for building interactive applications across web, desktop, and mobile platforms. It uses a component-based UI model with RSX markup and signals-based state, aiming to let developers share application code instead of maintaining separate platform-specific frontends.

It also offers a path from UI development to fullstack applications, with server-side rendering and server functions. Dioxus is a fit for Rust developers who want a unified toolkit and are comfortable adopting a framework whose platform capabilities include experimental options.

Key Features

  • Build interfaces in Rust with components, RSX markup, and signals-based state.
  • Target web, desktop, and mobile from a shared codebase, with platform-specific native access available.
  • Use web rendering, webviews, server-side rendering, or experimental WGPU rendering options.
  • Add backend behavior through server functions and integrations with axum.
  • Develop with the dx CLI, including a development server and asset hot-reloading.
  • Bundle applications for web, desktop, and mobile deployment.
  • Use HTML and CSS styling, with built-in TailwindCSS support.

Use Cases

  • Rust developers building a web interface who want to keep UI logic in Rust and use server-side rendering or WebAssembly.
  • Small teams targeting desktop and web that want to share UI and application logic across platforms.
  • Developers prototyping Android or iOS apps in Rust who need access to native APIs through JNI or Objective-C.
  • Fullstack teams adding interactive pages and server-side functionality to a Rust application.

Getting Started

Install the CLI and start a project or serve an example:

curl -fsSL https://dioxuslabs.com/install.sh | bash
dx serve

See the repository README and Dioxus documentation for setup details and platform-specific guidance.

Alternatives

  • fyne: Fyne builds desktop and mobile interfaces in Go, while Dioxus uses Rust and also targets the web.
  • ice.js: ice.js builds web applications with React and JavaScript, while Dioxus uses Rust and also targets desktop and mobile.
ProjectLanguageLicenseStarsStatus
dioxusRustApache-2.039.3kNot checked yet
fyneGoBSD-3-Clause28.7kActive
iceTypeScriptMIT18.6kQuiet

Considerations

  • The README identifies WGPU rendering and Rust hot-patching as experimental; verify their suitability before relying on them.
  • Web, desktop, and mobile use different rendering approaches and platform tooling, so a shared codebase does not remove all platform-specific setup or testing.
  • The README notes that examples on the main branch target the git version of Dioxus and the CLI. Stable-release users may need the examples from the 0.6 branch.
  • The project reports 813 open issues, so check current issue and release activity for the specific capabilities your application depends on.

Found this useful?

Share it with someone who would like dioxus.

Comparisons