Member-only story
Dioxus: Cross-Platform Without JS, Write Interfaces Directly in Rust
Cross-platform development has been JavaScript's territory for over a decade. Electron packs a browser and takes it along, Tauri borrows the system's built-in WebView, and React Native uses JS to command native controls—three paths that look down on each other, but their arguments are all about "how to draw," and no one questions "what to write it in." What Dioxus questions is exactly that: why does the interface have to be written in JS? Its answer is to replace the entire interface layer with Rust, compile it into machine code for the target platform, and then either call the DOM directly or simply draw it itself.
Let's start with a question many people have thought about but few have actually acted on.
Suppose you want to build an application that runs on browsers, Windows, macOS, Linux, iOS, and Android.
How would you write it?
Most people's first reaction is "find a cross-platform framework." That reaction isn't wrong, but it hides the real question. The real question is:
Is an interface, on different platforms, actually the same thing?
In a browser, an interface is a DOM tree, plus a pile of CSS, plus a pile of event listeners. The browser is responsible for turning those three things into pixels.
On Windows, an interface is a pile of HWNDs and control handles, and the system is responsible for turning messages in the message pump into…








