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
- You can read more about the architecture of the core in this blog post
- 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