I've recently been researching which of these technologies to use for making desktop apps for Windows, Linux, and as a bonus, possibly mobile apps for Android.
For context, I 'm primarily a web developer but very happy with using SwiftUI for iOS/iPadOS/MacOS for side projects. What I'm looking for is something to supplement this in other ecosystems.
So far I've installed both Flutter and Compose and tried some beginner tutorials. My first thoughts are:
Flutter Pros
- Not restricted to a specific IDE.
- You can use Flutter cli.
- Getting Started guide was easy to follow. Even though it was for Android it worked well for Windows.
- Great support for Linux - with Ubuntu using it for software going forward.
- Lots of plugins, resources, and a big community.
Flutter Cons
- IMO - Flutter seems less like SwiftUI than Compose - More verbose?
- Will desktop apps look like Android apps wrapped in a window? I see there are 'Yaru' style widgets for Ubuntu, but can't see anything for Windows.
- Desktop plugin ecosystem is more limited than Android.
- Has some edge case issues which make it a non-starter for certain projects. E.g. #23913.
Compose Pros
- I like the syntax - feels very similar to SwiftUI.
- Convenient previews in the IDE.
- Appears to a great, upcoming solution for Android.
Compose Cons
- Currently has to use Android Studio Canary to make an Empty Compose for Desktop project.
- Code appears to differ more for each Ecosystem (Desktop vs Android). I tried following the beginner tutorial for Android but targeting Windows (Like I did with Flutter) and could not get this to work.
- Fewer resources - especially for Desktop development.
These lists look very unbalanced in Flutters favour, but as a newbie to both ecosystems I'm wondering if I'm missing something. Part of me is very tempted by Compose, but as someone not too familiar with Android Development I feel it would be more of an uphill battle.
I'm very keen to know what other people think about these two solutions, or if there is anything else out there that people are betting on!
Top comments (4)
The use of Android Studio Canary shouldn’t be a big deal. Thats only for a short term specially that Compose is going stable in july and so does AS as well.
There are also alot of things that werent considered here. For one, going Flutter pretty much ties you up with Dart and Flutter and the integration with the native platform would be a big deal depending on the type of application you are targeting.
PS
Coming from someone who code Compose and Flutter for work, IMO, Compose is much much more natural to use, easier to understand, less boilerplate and much more customizable compared to what Flutter provides.
Thanks for your perspective @qrezet . I'm definitely keeping my eye on Compose, and as I mentioned in the original question, I really enjoy the syntax a lot more than Flutter.
For someone that has zero knowledge in Android development, and wants to use either of these technologies for desktop development of mostly simple apps, the barrier just feels a lot higher with Compose right now. There are less resources, and what seems like more hurdles as Compose for Desktop appears to have a slightly different API to Compose for Android.
If there was a beginner book for Compose for Desktop, I'd be all over that in a heartbeat!
Thanks @theimpulson , I think I have slowly been coming to the same conclusion.
That article looks really useful, thanks for sharing it.
I'll be keeping my eye on Compose, but I think I will continue with Flutter for now.