Microsoft's "Multi-platform App UI" — write iOS, Android, macOS, and Windows apps in a single C# codebase. The official successor to Xamarin.Forms.
← Back to Client Side<!-- ProductListPage.xaml --> <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" x:Class="MyApp.ProductListPage" Title="Products"> <CollectionView ItemsSource="{Binding Products}"> <CollectionView.ItemTemplate> <DataTemplate> <HorizontalStackLayout Padding="12"> <Label Text="{Binding Name}" /> <Label Text="{Binding Price, StringFormat='${0}'}" /> </HorizontalStackLayout> </DataTemplate> </CollectionView.ItemTemplate> </CollectionView> </ContentPage>
// ProductListViewModel.cs public partial class ProductListViewModel : ObservableObject { [ObservableProperty] private ObservableCollection<Product> products = new(); [RelayCommand] private async Task LoadAsync() { var data = await _api.GetProductsAsync(); foreach (var p in data) Products.Add(p); } }
Each MAUI control (Button, Entry, CollectionView…) maps to a per-platform handler that wraps the real native widget. You can swap or extend handlers per platform — much cleaner than Xamarin's renderers.
The CommunityToolkit.Mvvm source generators ([ObservableProperty], [RelayCommand]) eliminate most ViewModel boilerplate — concise, testable, AOT-friendly.
Embed Blazor web components inside a MAUI shell — share UI between web (Blazor Server / WebAssembly) and native apps. A unique selling point in the cross-platform space.
Microsoft.Maui.Essentials exposes cross-platform APIs for sensors, geolocation, file system, secure storage, and more — one C# call, four platforms.
Teams already invested in C#, Azure, EF Core, and Visual Studio.
Field-service, inventory, CRM clients across phone + desktop.
Share components between web and native via Blazor Hybrid.
One of the few stacks with strong Windows desktop + mobile parity.