.NET MAUI — what is it, architecture and cross-platform development

Author: IT Sectr Published: 2026-05-01 Reading time: 8 min

.NET MAUI is a cross-platform Microsoft framework for creating native applications in C# and XAML, released in 2022 alongside .NET 6. According to Microsoft .NET MAUI Documentation, 2024, MAUI supports iOS, Android, Windows, macOS and Tizen, combining them into a single project with a shared codebase. The framework is the direct successor to Xamarin.Forms.

Key Takeaways

  • .NET MAUI — successor to Xamarin.Forms, built into .NET 6+ without a separate SDK
  • A unified Single Project replaces three separate platform projects
  • XAML and C# are used for declarative UI construction and business logic
  • Handlers replaced the outdated Xamarin.Forms renderers for platform abstraction
  • Support for 5 platforms: iOS, Android, Windows, macOS, Tizen

What is .NET MAUI

.NET MAUI (Multi-platform App UI) is an evolution of Xamarin.Forms, rebuilt from scratch for .NET 6+. Unlike Xamarin.Forms, which required separate projects for each platform, MAUI uses a single structure with a shared .csproj file and platform folders Platforms/iOS, Platforms/Android, Platforms/Windows and Platforms/MacCatalyst. The first stable MAUI release was in May 2022.

The key difference between .NET MAUI and its predecessor is full integration with .NET 8 BCL (Base Class Library). Developers get access to System.Text.Json, System.Net.Http, System.Linq, System.IO and other APIs directly without an additional SDK. Xamarin.Forms used .NET Standard 2.0 for shared logic, which limited access to new .NET platform capabilities.

According to Microsoft Build 2024, .NET MAUI is used in 40,000+ applications in the App Store and Google Play. Notable projects include UPS Mobile, The Weather Channel and Siemens Teamcenter. Microsoft is actively developing MAUI as part of .NET 9, planned for November 2024.

History and Origin of .NET MAUI

The .NET MAUI announcement was made at Microsoft Build 2020 as part of the .NET unification strategy. Microsoft merged .NET Core, Mono and .NET Framework into a single .NET 5+ platform. Xamarin.Forms became the foundation for MAUI, but the codebase was completely rewritten: outdated APIs were removed, renderers were replaced with Handlers, DependencyService was replaced with a DI container.

.NET MAUI 8 (November 2023) added support for Native AOT, improved CollectionView performance, Blazor Hybrid (embedding Blazor components in a MAUI application) and new font mapping. .NET MAUI 9 (2024) includes support for C# 12, improved WinUI 3 and macOS Sonoma integration, and a new Drag & Drop API for all platforms.

Difference Between .NET MAUI and Xamarin.Forms

The first difference is a single application. In Xamarin.Forms, iOS and Android required two separate projects in one solution. In .NET MAUI, one project with platform folders. This simplifies code navigation, dependency management and CI/CD pipelines. The .csproj file uses the SDK-style format with TargetFrameworks: net8.0-android, net8.0-ios, net8.0-maccatalyst.

The second difference is the rendering architecture using Handlers instead of renderers. In Xamarin.Forms, each element (Button, Label) had its own Renderer class that created a native control. Customization required a Custom Renderer. In MAUI, a Handler is a lightweight object that maps an abstract element to a native control and supports Property Mappers for updating properties without recreating the control.

The third difference is a unified DI container Microsoft.Extensions.DependencyInjection. Xamarin.Forms used DependencyService for registering platform implementations. MAUI embeds DI into the framework core: services are registered in MauiAppBuilder, controllers receive dependencies through the constructor. This simplifies testing and follows modern .NET practices.

.NET MAUI Architecture

.NET MAUI Architecture is based on a multi-layered model. The bottom layer is .NET BCL and Mono Runtime (Android) / CoreCLR (Windows) / NativeAOT (iOS). The middle layer is Microsoft.Maui.dll with the framework core: Handlers, Layout, Graphics, Controls. The top layer is the developer’s application with XAML pages, ViewModel and services.

Single Project and Multi-Targeting

Single Project is a key architectural feature of .NET MAUI. All files are divided into three categories: shared code (Shared), platform code (Platforms) and resources (Resources). Multi-targeting in .csproj specifies which platforms the application is built for. Each platform compiles only its own Platforms folder and shared code.

Platform code is placed in conditional folders. Platforms/Android contains MainActivity.cs, MainApplication.cs and AndroidManifest.xml. Platforms/iOS — AppDelegate.cs, Info.plist and Entitlements.plist. Platforms/Windows — Package.appxmanifest and App.xaml. For conditional compilation, the code uses #if ANDROID, #if IOS, #if WINDOWS, #if MACCATALYST directives.

XAML and MVVM in .NET MAUI

XAML is a declarative markup language inherited from Xamarin.Forms and WPF. In .NET MAUI, XAML is used to describe pages (ContentPage), layouts (VerticalStackLayout, Grid, FlexLayout), elements (Label, Entry, Button, Image) and controls (CollectionView, CarouselView). XAML is compiled into BAML format at build time.

The MVVM pattern is implemented through CommunityToolkit.Mvvm — an open-source library from Microsoft. The [ObservableProperty] attribute generates INotifyPropertyChanged properties, [RelayCommand] creates commands from methods. CommunityToolkit.Mvvm 8.2 Source Generator transforms the partial class ViewModel, generating ObservableObject without Reflection. This speeds up Binding by 30% compared to manual implementation.

.NET MAUI Application Example

csharp
using Microsoft.Maui;
using Microsoft.Maui.Controls;

namespace MauiApp;

public class MainPage : ContentPage
{
    public MainPage()
    {
        Title = "MAUI App";
        
        Content = new VerticalStackLayout
        {
            Spacing = 12,
            Padding = new Thickness(16),
            Children =
            {
                new Label
                {
                    Text = "Hello, .NET MAUI!",
                    FontSize = 24,
                    FontAttributes = FontAttributes.Bold
                },
                new Button
                {
                    Text = "Click Me",
                    BackgroundColor = Colors.Blue,
                    TextColor = Colors.White,
                    Command = new Command(async () =>
                        await DisplayAlert("Hello", "World", "OK"))
                }
            }
        };
    }
}

Platforms and Support

.NET MAUI supports 5 platforms: iOS 15.0+, Android 5.0 (API 21)+, Windows 10 1809+, macOS 12.0+ (MacCatalyst) and Tizen 6.5+. Each platform uses its own set of controls and APIs. iOS uses UIKit via Mac Catalyst, Android — AndroidX via Xamarin.Android, Windows — WinUI 3, macOS — AppKit via Mac Catalyst.

On iOS and Android, MAUI uses the same rendering mechanisms as Xamarin.Forms — native UI controls. However, Handlers provide more flexible customization. For platform-specific Button configuration on iOS, OnPlatform<Button> with PlatformConfiguration.iOS is used. For Windows, MAUI uses WinUI 3 — a modern UI framework from Microsoft with Fluent Design System support.

macOS support was added via Mac Catalyst — Apple’s technology that runs UIKit applications on Mac. This allows reusing 100% of MAUI iOS code for the macOS version of the application. For specific Mac features (Menu Bar, Touch Bar), MAUI provides platform APIs through Mac Catalyst and NSView wrappers.

Tizen is Samsung’s platform for Smart TV, smartphones and smart watches. Tizen support in .NET MAUI is implemented through Samsung Tizen .NET. MAUI applications are compiled for Tizen through Samsung TizenFX bindings. However, Tizen is not a priority platform for Microsoft — updates for it are released with a 1–2 month delay.

PlatformMinimum VersionUI FrameworkStatus
iOSiOS 15.0UIKit (Mac Catalyst)Stable
AndroidAPI 21 (5.0)AndroidX / Material 3Stable
WindowsWin 10 1809WinUI 3 / Fluent DesignStable
macOSmacOS 12.0AppKit (Mac Catalyst)Stable
TizenTizen 6.5TizenFX / SamsungAdditional

Advantages of .NET MAUI

Unified codebase — .NET MAUI reduces code duplication. One project in C# and XAML compiles for 5 platforms, providing up to 95% shared code for applications with simple UI. Business logic, services, data models and HTTP clients are in shared code. Only platform-specific features (camera, geolocation, biometrics) require separate implementations via DI.

Performance of .NET MAUI is higher than Xamarin.Forms. Handlers reduce rendering overhead: Microsoft tests show a 20–30% reduction in screen rendering time compared to Xamarin.Forms 5.0. Native AOT on iOS compiles C# code directly into ARM64 instructions, eliminating JIT compilation and reducing startup time by 40%.

Blazor Hybrid is a unique capability of .NET MAUI. BlazorWebView embeds Blazor components directly into a MAUI application. Web interface developers can reuse Blazor components (Razor pages, JS interop, CSS styles) in the mobile application. Blazor Hybrid works on all 5 MAUI platforms without changing Blazor component code.

.NET Ecosystem — access to thousands of NuGet packages: Entity Framework Core for database operations, Serilog for logging, Polly for retry HTTP requests, FluentValidation for validation. CommunityToolkit.Maui provides ready-made UI elements: Popup, Toast, Snackbar, SemanticScreenReader for accessibility. .NET MAUI integrates with Azure, SignalR and Microsoft Graph SDK.

Development Tools — Visual Studio 2022 and Rider by JetBrains. XAML Hot Reload updates UI without restarting the application in 1–2 seconds. C# Hot Reload (from .NET 6+) recompiles a method change without restarting the process. Visual Studio Debugger, Profiler and IntelliCode complement the toolkit for performance diagnostics and code quality.

Frequently Asked Questions

What is .NET MAUI?

.NET MAUI is a cross-platform Microsoft framework for creating native applications in C# and XAML for iOS, Android, Windows, macOS and Tizen. It is the successor to Xamarin.Forms, built into .NET 6+ and uses a single project (Single Project) instead of separate projects for each platform.

How is .NET MAUI different from Xamarin.Forms?

.NET MAUI uses a single project, Handlers instead of renderers, a built-in DI container, Native AOT for iOS and Blazor Hybrid. Xamarin.Forms requires separate projects for each platform, uses Custom Renderer for UI customization, DependencyService for DI and does not support Blazor. .NET MAUI is part of .NET, Xamarin.Forms is a separate SDK.

Does .NET MAUI support macOS?

Yes, .NET MAUI supports macOS via Mac Catalyst (minimum version macOS 12.0). iOS applications on MAUI are automatically compiled for Mac without code changes. For native Mac features (Menu Bar, Dock, Touch ID), platform calls through Mac Catalyst and NSView wrappers in the Platforms/MacCatalyst folder are used.

Can Flutter packages be used in .NET MAUI?

No, .NET MAUI is not compatible with Dart/Flutter packages. MAUI uses the .NET ecosystem and NuGet packages. For platform-specific features (camera, Bluetooth, biometrics), native libraries through Android Bindings (Kotlin/Java) and iOS Bindings (Objective-C/Swift) are used. CommunityToolkit.Maui provides ready-made wrappers for common scenarios.

Is .NET MAUI slower than a native application?

The difference in performance is minimal. .NET MAUI with Handlers and Native AOT on iOS achieves 95–98% of a native SwiftUI application’s performance. On Android, the difference with a Kotlin application is 3–7% in UI rendering tests (Microsoft Benchmarks, 2024). For most business applications, the difference is unnoticeable to the user.

Summary

  • .NET MAUI — cross-platform Microsoft framework in C# and XAML, successor to Xamarin.Forms
  • Single Project with multi-targeting replaces 3 separate projects with one configuration
  • Handlers provide faster rendering than Xamarin.Forms renderers
  • Blazor Hybrid allows embedding web components directly into a mobile application
  • 5 platforms — iOS 15+, Android 5.0+, Windows 10, macOS 12+, Tizen 6.5+
  • Native AOT on iOS reduces startup time by 40% and binary size
  • Choose .NET MAUI for .NET projects requiring cross-platform capabilities and access to native APIs

We will develop a mobile application turnkey

IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.

Discuss the project

Read also