Introduction
Here are my observations after extensively testing and building feature-rich apps using both Google and Microsoft frameworks.
For the past few years, I have been developing both small and large Flutter applications. Flutter is an amazing framework that allows for the quick development of cross-platform apps. Initially, it was just another tool for me to experiment with, but now it’s my primary choice for new mobile projects without any hesitation.
I love Flutter. About half of my articles are tutorials on how to accomplish tasks with Flutter. They are a compendium of what I have learned and struggled with in the past.
As a .NET developer, I find it surprising that I never took the time to explore Xamarin for mobile development. However, .NET MAUI is slowly gaining traction, which is essentially a rebranded version of Xamarin. I tested it about a year ago and was astonished by its poor state, as I wrote about in this article. Today, I realize that I maybe didn’t try hard enough back then.
Nevertheless, I experimented with it and as a seasoned .NET dev, I instantly felt at home. It’s like riding a bicycle. C#, Visual Studio, MVVM, Nuget, all that works here as well. It’s cool to know that your existing knowledge can open doors to new platforms with a new framework.
The big question now is: Is .NET MAUI better than Flutter?
I’d like to give you my opinion on that. And please, tell me yours. But now, let’s go!
What I think about Flutter
✅ Huge amount of widgets built into the SDK to create user interfaces.
✅ You only need one programming language for UI and business logic, which is Dart. Some people say it’s not a good language, but it has received many updates in the past and is constantly evolving.
✅ Several major updates per year, clear roadmap, backed by Google.
✅ Targets iOS, Android, Windows, macOS, Linux, web, and embedded platforms.
✅ Hot Reload/Hot Restart feature works well.
✅ Rising marketshare, loved by developers.
✅ It feels like you get things done quickly.
✅ Huge package repository with many well-maintained entries.
⚠️ Build time could be faster
⚠️ File size of apps could be smaller
⚠️ Bad app performance on web compared to iOS and Android
⚠️ Setting up can be difficult since additional tools are required for the platforms. However, the documentation is detailed and will guide you through the process.
⚠️ Frequent updates means chances for breaking changes are high.
⚠️ Platform features need to be implemented by oneself if they are not part of the framework or adding via a 3rd party package.
⚠️ Many open issues on GitHub, but also bigger development team that puts in the effort needed.
⛔ State management can be messy. There are so many options, frameworks, and levels of flexibility, but no state-of-the-art solution has been found yet.
Want More Flutter Content?
Join my bi-weekly newsletter that delivers small Flutter portions right in your inbox. A title, an abstract, a link, and you decide if you want to dive in!
What I think about .NET MAUI
✅ C#, XAML, and Visual Studio are great. They may not be the absolute best or the fastest, but they have demonstrated their capabilities over the years.
✅ For experienced WPF or UWP developers, .NET MAUI will feel instantly familiar. They already know basic concepts like creating UIs or controls, how data-binding works, working with MVVM, and useful libraries.
✅ The Fluent design looks nicer than Material design or Apple design. Of course, you can implement any design system on any platform, but the .NET MAUI look and feel wins out of the box for me.
✅ You have access to a huge number of Nuget packages. Everything from .NET Standard 2.0 can be used in general.
✅ Sufficient amount of controls provided by default. Via Nuget you have access to many others like those of the .NET MAUI Community Toolkit.
✅ Good documentation about the framework.
✅ Tooling setup is super easy. Download Visual Studio, select the .NET MAUI workload, and wait for the installation to finish. That’s it.
⚠️ XAML Hot Reload is quite nice, but when you make specific changes, the app needs to be recompiled completely. Also, it doesn’t work when you edit C# code.
⚠️ If you are familiar with WPF or UWP, you will notice the similarities and the differences. And they will drive you crazy in the beginning.
⛔ Build time is too high. Since the Hot Reload feature is not perfect, frequent building is required. It will become annoying over time, I promise.
⛔ There are lots of open bugs in the official repository. I already criticized this about a year ago, and although a lot has been happening, there seem to be even more annoying bugs arising, especially for Android at the moment.
⛔ No linux support. How can you claim to be cross-platform when Linux is missing? But yeah, there’s Tizen. And who doesn’t use that?
⛔ Beginners won’t choose it for quick prototyping when having little experience or when special controls are needed. You can get things done quicker with other frameworks.
Conclusion
If I had no prior experience with either framework, I would choose Flutter. Although the setup process can get a bit messy, the perceived development speed is much faster than with .NET MAUI. However, I joined the Microsoft ecosystem over 20 years ago and I still enjoy writing apps with .NET and C#. I also appreciate their progress in the last year as .NET MAUI is definitely in better condition now.