I'm very happy with Dioxus, a Rust UI framework. It might tick most of your boxes, except that it is still quite unfinished. On the positive side, the source code is easy enough so you can create PR's for missing features or bugs that you run into. Here's what's interesting
- You write everything in Rust. Dioxus runs by patching the output from your Rust code onto a VirtualDom in a Webview. So your code runs native, the WebView is just one big canvas that you use to display your UI. It's using WebKit/Tauri not Chromium, so apps are much smaller.
- It is super cross platform (macOS, Windows, Linux, Terminal, Wasm & (very unfinished) iOS/Android)
- You still need to understand some CSS but you could also use an existing framework like tailwind.
- BUT: The way Dioxus is structured, you don't have to Render to a WebView. You can plug in a custom renderer which gets told which elements should be placed in the UI with which parameters. That makes it easy to write a native AppKit or GTK renderer which just places widgets and uses a Flexbox system to figure out the sizing.
Most importantly, working with it is kinda fun. It also supports hot code reloading and so on.
- You write everything in Rust. Dioxus runs by patching the output from your Rust code onto a VirtualDom in a Webview. So your code runs native, the WebView is just one big canvas that you use to display your UI. It's using WebKit/Tauri not Chromium, so apps are much smaller.
- It is super cross platform (macOS, Windows, Linux, Terminal, Wasm & (very unfinished) iOS/Android)
- You still need to understand some CSS but you could also use an existing framework like tailwind.
- BUT: The way Dioxus is structured, you don't have to Render to a WebView. You can plug in a custom renderer which gets told which elements should be placed in the UI with which parameters. That makes it easy to write a native AppKit or GTK renderer which just places widgets and uses a Flexbox system to figure out the sizing.
Most importantly, working with it is kinda fun. It also supports hot code reloading and so on.
https://dioxuslabs.com