Crates.io version Download docs.rs docs CI status Awesome Page Discord Link

Website | Examples | Guide | 中文 | PT-BR | 日本語


Dioxus is a portable, performant, and ergonomic framework for building cross-platform user interfaces in Rust. ```rust fn app(cx: Scope) -> Element { let mut count = use_state(cx, || 0); cx.render(rsx! { h1 { "High-Five counter: {count}" } button { onclick: move |_| count += 1, "Up high!" } button { onclick: move |_| count -= 1, "Down low!" } }) } ``` Dioxus can be used to deliver webapps, desktop apps, static sites, mobile apps, TUI apps, liveview apps, and more. Dioxus is entirely renderer agnostic and can be used as a platform for any renderer. If you know React, then you already know Dioxus. ## Unique features: - Desktop apps running natively (no Electron!) in less than 10 lines of code. - Incredibly ergonomic and powerful state management. - Comprehensive inline documentation - hover and guides for all HTML elements, listeners, and events. - Blazingly fast 🔥🔥 and extremely memory efficient - Integrated hot reloading for fast iteration - First-class async support with coroutines and suspense - And more! Read the [full release post](https://dioxuslabs.com/blog/introducing-dioxus/). ## Supported Platforms
Web
  • Render directly to the DOM using WebAssembly
  • Pre-render with SSR and rehydrate on the client
  • Simple "hello world" at about 65kb, comparable to React
  • Built-in dev server and hot reloading for quick iteration
Desktop
  • Render using Webview or - experimentally - with WGPU or Skia
  • Zero-config setup. Simply cargo-run to build your app
  • Full support for native system access without electron-esque IPC
  • Supports macOS, Linux, and Windows. Portable <3mb binaries
Mobile
  • Render using Webview or - experimentally - with WGPU or Skia
  • Support for iOS and Android
  • Significantly more performant than React Native
Liveview
  • Render apps - or just a single component - entirely on the server
  • Integrations with popular Rust frameworks like Axum and Warp
  • Extremely low-latency and ability to support 10,000+ simultaneous apps
Terminal
  • Render apps directly into your terminal, similar to ink.js
  • Powered by the familiar flexbox and CSS model of the browser
  • Built-in widgets like text input, buttons, and focus system
## Why Dioxus? There's tons of options for building apps, so why would you choose Dioxus? Well, first and foremost, Dioxus prioritizes developer experience. This is reflected in a variety of features unique to Dioxus: - Autoformatting of our meta language (RSX) and accompanying VSCode extension - Hotreloading using an interpreter of RSX for both desktop and web - Emphasis on good docs - our guide is complete and our HTML elements are documented - Significant research in simplifying Dioxus is also a very extensible platform. - Easily build new renderers by implementing a very simple optimized stack-machine - Build and share components and even custom elements So... Dioxus is great, but why won't it work for me? - It's not fully mature yet. APIs are still shifting, things might break (though we try to avoid it) - You need to run in a no-std environment. - You don't like the React-hooks model of building UIs ## Contributing - Check out the website [section on contributing](https://dioxuslabs.com/learn/0.4/contributing). - Report issues on our [issue tracker](https://github.com/dioxuslabs/dioxus/issues). - [Join](https://discord.gg/XgGxMSkvUM) the discord and ask questions! ## License This project is licensed under the [MIT license]. [mit license]: https://github.com/DioxusLabs/dioxus/blob/master/LICENSE-MIT Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Dioxus by you, shall be licensed as MIT, without any additional terms or conditions.