Photo: Google Gemini · AI-generated
.NET MAUI was released as the spiritual successor to Xamarin.Forms — a single codebase that targets iOS, Android, macOS, and Windows. Two years into using it on real client projects, we have a clearer picture of where it delivers and where it still requires workarounds.
Where MAUI genuinely earns its place
For enterprise apps that target both iOS and Android, MAUI is a strong choice. The shared business logic layer is the real value — authentication, API clients, data models, local storage, and sync logic are all written once and shared completely. That is not theoretical; on a recent logistics project it cut our estimated delivery timeline by roughly 30 percent compared to maintaining two separate native codebases.
The integration with the Microsoft ecosystem is seamless in a way that no other cross-platform framework matches. If your backend is Azure, your auth is Entra ID, and your team already knows C# and .NET, the toolchain just works together. There are no impedance mismatches to fight across the stack.
Blazor Hybrid — embedding a Blazor web UI inside a MAUI shell — is a practical option for apps where the web team has already built UI components that the mobile team needs to reuse. We have shipped it. It performs adequately for data-entry workflows, though it is not the right choice for highly animated or gesture-heavy interfaces.
Where you will still hit friction
Native platform features. The moment a client asks for background location, push notification handling, NFC, or Bluetooth Low Energy, you are writing platform-specific code anyway. MAUI provides the plumbing, but the platform-specific handlers still need to be built. That is not a knock on MAUI — it is the reality of cross-platform frameworks at the edges.
Performance on older Android devices. On mid-range Android hardware from three or four years ago, MAUI apps can feel noticeably heavier than native alternatives, particularly on first launch. Hot restart and startup performance have improved significantly in recent releases, but this is still a consideration if your user base includes devices below the mid-range threshold.
Tooling stability. Hot reload is genuinely useful but still intermittent. We have learned to keep our iteration loops short and to rebuild fully when something unexpected happens. It is better than it was, but not yet at the level of Flutter or React Native’s developer experience.
Our current recommendation
For enterprise clients building internal tools, field service apps, or data-entry workflows — and particularly for those already in the Microsoft stack — MAUI is a solid production choice. We use it by default in that context.
For consumer-facing apps where performance feel, platform-native behavior, and App Store ratings matter, we evaluate case by case. Native remains the right answer when platform depth is a differentiator.
The framework is mature enough. Choose it deliberately, not by default, and it will serve you well.
