You are currently viewing the docs for Dioxus 0.6.0 which is under construction.

Roadmap

This feature set and roadmap can help you decide if what Dioxus can do today works for you.

If a feature that you need doesn't exist or you want to contribute to projects on the roadmap, feel free to get involved by joining the discord.

Generally, here's the status of each platform:

  • Web: Dioxus is a great choice for pure web-apps – especially for CRUD/complex apps. However, it does lack the ecosystem of React, so you might be missing a component library or some useful hook.

  • SSR: Dioxus is a great choice for pre-rendering, hydration, and rendering HTML on a web endpoint. Be warned – the VirtualDom is not (currently) Send + Sync.

  • Desktop: You can build very competent single-window desktop apps right now. However, multi-window apps require support from Dioxus core and are not ready.

  • Mobile: Mobile support is very young. You'll be figuring things out as you go and there are not many support crates for peripherals.

  • LiveView: LiveView support is very young. You'll be figuring things out as you go. Thankfully, none of it is too hard and any work can be upstreamed into Dioxus.

Features


FeatureStatusDescription
Conditional Renderingxif/then to hide/show component
Map, Iteratorxmap/filter/reduce to produce rsx!
Keyed Componentsxadvanced diffing with keys
Webxrenderer for web browser
Desktop (webview)xrenderer for desktop
Shared State (Context)xshare state through the tree
Hooksxmemory cells in components
SSRxrender directly to string
Component Childrenxcx.children() as a list of nodes
Headless componentsxcomponents that don't return real elements
Fragmentsxmultiple elements without a real root
Manual PropsxManually pass in props with spread syntax
Controlled Inputsxstateful wrappers around inputs
CSS/Inline Stylesxsyntax for inline styles/attribute groups
Custom elementsxDefine new element primitives
Suspensexschedule future render from future/promise
Integrated error handlingxGracefully handle errors with ? syntax
NodeRefxgain direct access to nodes
Re-hydrationxPre-render to HTML to speed up first contentful paint
Jank-Free RenderingxLarge diffs are segmented across frames for silky-smooth transitions
EffectsxRun effects after a component has been committed to render
Portals*Render nodes outside of the traditional tree structure
Cooperative Scheduling*Prioritize important events over non-important events
Server Components*Hybrid components for SPA and Server
Bundle SplittingiEfficiently and asynchronously load the app
Lazy ComponentsiDynamically load the new components as the page is loaded
1st class global statexredux/recoil/mobx on top of context
Runs nativelyxruns as a portable binary w/o a runtime (Node)
Subtree Memoizationxskip diffing static element subtrees
High-efficiency templatesxrsx! calls are translated to templates on the DOM's side
Compile-time correctxThrow errors on invalid template layouts
Heuristic Enginextrack component memory usage to minimize future allocations
Fine-grained reactivityiSkip diffing for fine-grain updates
  • x = implemented and working
  • * = actively being worked on
  • i = not yet implemented or being worked on

Roadmap

These Features are planned for the future of Dioxus:

Core

  • [
  • [
  • [
  • [
  • [
  • [

SSR

  • [
  • [

Desktop

  • [
  • [
  • [

Mobile

  • [
    • [
    • [
    • [
    • [
    • [
    • [
    • [
    • [
  • [

Bundling (CLI)

  • [
  • [
  • [
  • [
  • [
  • [
  • [
  • [
  • [

Essential hooks

  • [
  • [
  • [

Work in Progress

Build Tool

We are currently working on our own build tool called Dioxus CLI which will support:

  • an interactive TUI
  • on-the-fly reconfiguration
  • hot CSS reloading
  • two-way data binding between browser and source code
  • an interpreter for rsx!
  • ability to publish to github/netlify/vercel
  • bundling for iOS/Desktop/etc

Server Component Support

While not currently fully implemented, the expectation is that LiveView apps can be a hybrid between Wasm and server-rendered where only portions of a page are "live" and the rest of the page is either server-rendered, statically generated, or handled by the host SPA.

Native rendering

We are currently working on a native renderer for Dioxus using WGPU called Blitz. This will allow you to build apps that are rendered natively for iOS, Android, and Desktop.