Project Struture
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 renderer that runs Dioxus applications natively, but renders them with the system webview.
- Mobile: A renderer that runs Dioxus applications natively, but renders them with the system webview. This is currently a copy of the desktop renderer.
- Web: Renders Dioxus applications in the browser by compiling to WASM and manipulating the DOM.
- Liveview: A renderer that runs on the server, and renders using a websocket proxy in the browser.
- Rink: A renderer that renders a HTML-like tree into a terminal.
- TUI: A renderer that uses Rink 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 renderer 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 UseRef
- Dioxus STD: 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
- native-core: Incrementally computed tree of states (mostly styles)
- native-core-macro: A helper macro for native core
- Taffy: Layout engine powering Blitz-Core, Rink, and Bevy UI
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