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.
What I think about .NET MAUI
✅ 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.
✅ You have access to a huge number of Nuget packages. Everything from .NET Standard 2.0 can be used in general.
✅ 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.
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.