No Description

Jonathan Kelley 37f9f38187 Merge pull request #1170 from DioxusLabs/jk/move-vscode-extension 2 years ago
.devcontainer d3cf9f728c WIP - remove comment in Dockerfile 2 years ago
.docker fc0a093466 try fix 3 years ago
.github df41c81d14 fix: add playwright tests to CI workflow 2 years ago
.vscode bc707db832 chore: make clippy happy and limit workspace checks 2 years ago
docs c14b942fda fix: doc typos - trigger CI 2 years ago
examples d56fabfe9a Merge branch 'master' into feat/window_close_behaviour 2 years ago
notes 4611df014e Add notes to `CONTRIBUTING.md`. 2 years ago
packages 37f9f38187 Merge pull request #1170 from DioxusLabs/jk/move-vscode-extension 2 years ago
playwrite-tests 4b800af300 fix: clippy 2 years ago
translations 3f3db39c28 update doc links 2 years ago
.gitignore 741ff97882 create end to end tests using playwright 2 years ago
.mailmap 40feb00f49 Add mailmap to unify name of Jonathan Kelley 2 years ago
CHANGELOG.md 56f3002aed feat: add changelogs 3 years ago
Cargo.toml b5312732ba Get wasm loading in extension 2 years ago
LICENSE-APACHE 6537ad37b8 Add actual copies of the relevant licenses 3 years ago
LICENSE-MIT 6537ad37b8 Add actual copies of the relevant licenses 3 years ago
Makefile.toml 1959da1ec6 include desktop tests in test with browser 2 years ago
README.md a8a8188e7b fix: readme awesome link 2 years ago
codecov.yml e03f8ca90c ci: no more codecov failing 3 years ago
package-lock.json 741ff97882 create end to end tests using playwright 2 years ago
package.json 741ff97882 create end to end tests using playwright 2 years ago
playwright.config.js f2da7a21dd increase timeout 2 years ago

README.md


Dioxus is a portable, performant, and ergonomic framework for building cross-platform user interfaces in 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.

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

  • Report issues on our issue tracker.
  • Join the discord and ask questions!

License

This project is licensed under the MIT license.

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.