Project Structure

There are many packages in the Dioxus organization. This document will help you understand the purpose of each package and how they fit together.

Renderers

  • Desktop: A Render that Runs Dioxus applications natively, but renders them with the system webview
  • Mobile: A Render that Runs Dioxus applications natively, but renders them with the system webview. This is currently a copy of the desktop render
  • Web: Renders Dioxus applications in the browser by compiling to WASM and manipulating the DOM
  • Liveview: A Render that Runs on the server, and renders using a websocket proxy in the browser
  • Plasmo: A Renderer that renders a HTML-like tree into a terminal
  • TUI: A Renderer that uses Plasmo to render a Dioxus application in a terminal
  • Blitz-Core: An experimental native renderer that renders a HTML-like tree using WGPU.
  • Blitz: An experimental native renderer that uses Blitz-Core to render a Dioxus application using WGPU.
  • SSR: A Render that Runs Dioxus applications on the server, and renders them to HTML

State Management/Hooks

  • Hooks: A collection of common hooks for Dioxus applications
  • Signals: A experimental state management library for Dioxus applications. This currently contains a Copy version of Signal
  • SDK: A collection of platform agnostic hooks to interact with system interfaces (The clipboard, camera, etc.).
  • Fermi: A global state management library for Dioxus applications.
  • Router: A client-side router for Dioxus applications

Core utilities

  • core: The core virtual dom implementation every Dioxus application uses
  • RSX: The core parsing for RSX used for hot reloading, autoformatting, and the macro
  • core-macro: The rsx! macro used to write Dioxus applications. (This is a wrapper over the RSX crate)
  • HTML macro: A html-like alternative to the RSX macro

Native Renderer Utilities

  • Taffy: Layout engine powering Blitz-Core, Plasmo, and Bevy UI
  • Blitz: An experimental native renderer for HTML+CSS

Web renderer tooling

  • HTML: defines html specific elements, events, and attributes
  • Interpreter: defines browser bindings used by the web and desktop renderers

Developer tooling

  • hot-reload: Macro that uses the RSX crate to hot reload static parts of any rsx! macro. This macro works with any non-web renderer with an integration
  • autofmt: Formats RSX code
  • rsx-rosetta: Handles conversion between HTML and RSX
  • CLI: A Command Line Interface and VSCode extension to assist with Dioxus usage