I work now with Flutter full time and love it, but on my way from web Vue.js to mobile development with Flutter, I was researching different app frameworks, and I watched some videos with the main author of BeeWare/Toga, Russell Keith-Magee. The presentations are very engaging and the solution that this project came up is really something.
This is my favorite video by Russel [0], it really is a fascinating project, and he is a great speaker.
With that said, I don't really see it becoming a widely used framework. No matter how creative the solution is, it's hard to compete against real native, Kotlin Multiplatform Mobile, Flutter, React Native, Electron, and more. The most complicated example I saw with BeeWare is a todo list app [1]
[0] https://www.youtube.com/watch?v=qaPzlIJ57dk [1] https://www.youtube.com/watch?v=RisCgSIWwLA
Does Kotlin Multiplatform mobile handle the UI layer for both iOS and Android? I thought you could only share business logic
You are correct. The technical details of the solutions I listed can be different, but in the end they are often competing for the same users (I need an app, which solution should I use).
I haven't looked too deeply into how BeeWare works, but why is it so uncommon to see similar solutions in other languages like Kotlin, Go, Rust etc? Basically the React Native approach but without JS. I would love to write multiplatform native UIs in any of these languages.
I have nothing against Javascript but there are still a lot of weird limitations in RN despite being several years old. Writing smooth animations that support user interaction is difficult because it is still single threaded and you are limited to a declarative animation api where the underlying native runtime does the interpolation.
React-reanimated v2 tries to solve this by spawning JS worklets that can run animation code in another thread but that comes with its own caveats. This would be so much easier to do in a language with built in threading, not to mention all these languages are very ergonomic and loved by developers so I'm curious why something similar hasn't been tried for them yet.
Why react-native, well, because it means you have access to one of the largest ecosystems and an awesome tooling catalogue. The same applies for JS as the language of choice for App (UIs). Kotlin was also a great candidate since it could leverage the already mature Java ecosystem for android.
Flutters success is an outlier here that I would guess is due to Google backing. The resources and docs are good and you could rely on financial and developer backing. The decision to go with Dart was most likely to make themselves not dependent on another party for a core utility and to have a steering position on the overall projects course.
If, for example, Microsoft would back a good C# cross-platform framework I would bet on it at least seeing moderate adoption.
Edit: As another commenter pointed out, GO has a cross-platform GUI Framework option - Fyne [https://github.com/fyne-io/fyne]