Series Outline Link to heading
- Overview
- Framework analysis and selection: Delving into the specifics of framework selection and application.
- Core Components: Database management, modularization, internal RPC, AMQP.
- Web and API: Web Server, GraphQL API.
- Application Development: Web, CLI, desktop, and mobile app development.
- Miscellaneous Tools: Observability, logging, machine learning.
- Boilerplate project: A comprehensive guide including setup instructions for selected frameworks, architectural diagrams, and development environment configurations.
Web Link to heading
Crate | Downloads | Dependents | Github Stars | Github Contributors | Github Used By | Notes |
---|---|---|---|---|---|---|
dioxus | 100k | 66 | 14.5k | 169 | 1.2k | A virtual DOM for rust. Part of opencollective, has a large and growing community, and used by numerous startups, etc. |
tauri | 1.1M | 69 | 70k | 302 | 518 | Very robust, but only desktop (and soon to be mobile) |
yew | 800k | 186 | 28.8k | 402 | 10.3k | Also open collective!. This is great, but web only. |
egui | 1.4M | 240 | 17.1k | 320 | 10.2k | Very opinionated, web+native. pre-built GUI components, could build an entire OS out of it. Ugly, and not very web-friendly though… for an admin tool though, this would be awesome (which is really what it’s made for) |
Other Resources:
- https://github.com/flosse/rust-web-framework-comparison
- https://github.com/appcypher/awesome-wasm-langs
- https://github.com/krausest/js-framework-benchmark (https://krausest.github.io/js-framework-benchmark/index.html)
CLI Link to heading
Crate | Downloads | Dependents | Github Stars | Github Contributors | Github Used By | Notes |
---|---|---|---|---|---|---|
dioxus | 100k | 66 | 14.5k | 169 | 1.2k | A virtual DOM for rust. Part of opencollective, has a large and growing community, and used by numerous startups, etc. |
clap | 166M | 13230 | 12.2k | 474 | 344k | Part of opencollective! Very highly used, respected, and supported. Learning curve is a bit steep IMHO though. |
cliparser | 300k | 1 | 6 | ? | ? | Simpler tool, nowhere near as well supported. |
Mobile Link to heading
Crate | Downloads | Dependents | Github Stars | Github Contributors | Github Used By | Notes |
---|---|---|---|---|---|---|
dioxus | 100k | 66 | 14.5k | 169 | 1.2k | A virtual DOM for rust. Part of opencollective, has a large and growing community, and used by numerous startups, etc. |
cargo-flutter | 8k | 0 | 13 | 2 | ? | Simple, but not well supported, only updated 4 years ago. |
rinf | 683 | 0 | 811 | 8 | ? | Newer framework, looks very promising. Well tested. A bit of a risk though, since it’s so new. |
flutter_rust_bridge | 721k | 2 | 3k | 79 | 791 | Looks to be the main framework. Well tested, lots of great docs & tutorials. Well into it’s release cycle. The safe option. |
Summary Link to heading
Well, dioxus seems like the only real contender - and, as an extra bonus, supports deployment to all our app platforms (and more). Why consider anything else? Main thing to consider is that it’s not got any kind of UI library - so, we’d still need to pick a CSS/HTML framework. Even more bonuses: NixOS install script! Ecommerce, File Navigator and ToDo examples - all very great starting points.
It’s also VERY fast, the only frameworks that beat it are very low level/hard to use IMHO - when comparing with say, react or angular - it’s very fast. (svelte and angular-cf-nozone come CLOSE, but, dioxus still beats them.)
One caveat - plan for a slightly higher initial download time, but lightning fast afterwards.
Note: dioxus is also starting to tout itself as a fullstack framework - including backend. While this is true, it’s very early days, and is quite limited compared to the main web frameworks covered in part 3, so, probably don’t use it for this, unless your app is super simple. It’s pretty high risk right now IMHO.
If dioxus grinds your gears? Link to heading
Pretty simple choice at that point, the clear stand-outs are:
- yew for web
- tauri for desktop
- clap for cli
- flutter_rust_bridge for a flutter app (until tauri supports mobile anyway…)