.NET MAUI (Multi-Platform App UI) shipped as generally available in May 2022. The successor to Xamarin.Forms unifies the Xamarin iOS and Android frameworks and adds macOS and Windows targets under a single project model.

What changed from Xamarin.Forms

MAUI uses a single project targeting all platforms, versus Xamarin.Forms' multi-project solution. The build output is a .NET 6+ project that targets iOS, Android, macOS, and Windows from one codebase. The hot reload in .NET 6 and the improved XAML tooling in Visual Studio 2022 make the development cycle faster than Xamarin.Forms. The underlying rendering pipeline has been redesigned for better performance on Android.

The migration from Xamarin.Forms

Xamarin.Forms support will end in May 2024. For teams with existing Xamarin.Forms applications, the migration to MAUI is recommended. The Migration Guide documents the namespace changes, project file structure changes, and renderer API changes. For most applications, the migration is a few days of work. Complex applications with custom renderers require more effort to port to the new handler/mapper architecture.

Blazor Hybrid in MAUI

MAUI supports Blazor Hybrid: embedding a Blazor web application inside a MAUI native shell. The Blazor component runs in a WebView but has access to native device APIs through MAUI. For teams with existing Blazor web applications who want to ship a native mobile app, Blazor Hybrid provides code reuse without rewriting the UI. The trade-off is the web view rendering gap versus fully native MAUI XAML.

When to use MAUI vs web app

MAUI is appropriate when: the application needs native device capabilities (camera, biometrics, push notifications, contacts), performance requirements exceed what a web app can deliver on mobile, or the target audience expects a native app experience. Web apps (PWAs) are appropriate when: the feature set does not require native capabilities, the organisation's web expertise is stronger than its mobile expertise, or cross-platform maintenance of two codebases is not feasible.