.NET Multi-platform App UI (.NET MAUI) is a cross-platform framework for creating native mobile and desktop apps with C# and XAML. Using .NET MAUI, you can develop apps that can run on Android, iOS, macOS, Tizen, and Windows from a single shared codebase.
Install
| Product | Versions |
|---|---|
| .NET | |
| .NET Standard |
README
.NET Multi-platform App UI (.NET MAUI)
.NET Multi-platform App UI (.NET MAUI) is a cross-platform framework for creating native mobile and desktop apps with C# and XAML. Using .NET MAUI, you can develop apps that run on Android, iOS, iPadOS, macOS, and Windows from a single shared codebase.
✨ What is .NET MAUI?
The Microsoft.Maui.Controls package provides the UI controls and XAML infrastructure for building beautiful, native cross-platform applications. It includes:
- 40+ UI controls - Buttons, labels, entries, pickers, lists, grids, and more
- XAML support - Design your UI with declarative markup
- Layout system - Flexible layouts including Grid, StackLayout, FlexLayout, and AbsoluteLayout
- Navigation - Shell navigation, NavigationPage, TabbedPage, FlyoutPage
- Data binding - Two-way data binding with MVVM support
- Styling and theming - Application-wide styles, dynamic resources, and light/dark theme support
- Platform integration - Access platform-specific features seamlessly
- Hot Reload - See UI changes instantly during development
🚀 Supported Platforms
.NET MAUI applications run on the following platforms:
| Platform | Minimum Version |
|---|---|
| Android | API 21 (Android 5.0) |
| iOS | iOS 13.0+ |
| iPadOS | iPadOS 13.0+ |
| macOS | macOS 12.0+ (via Mac Catalyst) |
| Windows | Windows 11, Windows 10 (Version 1809+) using Windows UI Library (WinUI) |
📦 Getting Started
Prerequisites
- .NET 10 SDK (or .NET 9 for previous versions)
- Platform-specific tools:
- Android: Android SDK (installed via Visual Studio or Android Studio)
- iOS/macOS: Xcode (Mac required)
- Windows: Windows App SDK
Installation
Install the .NET MAUI workload:
dotnet workload install maui
Create a New Project
Create a new .NET MAUI app using the CLI:
dotnet new maui -n MyMauiApp
cd MyMauiApp
Or create with sample content including Community Toolkit and Syncfusion Toolkit:
dotnet new maui -n MyMauiApp -sc
Run Your App
Run on Android:
dotnet build -t:Run -f net10.0-android
Run on iOS (Mac only):
dotnet build -t:Run -f net10.0-ios
Run on Mac Catalyst (Mac only):
dotnet build -t:Run -f net10.0-maccatalyst
Run on Windows:
dotnet build -t:Run -f net10.0-windows10.0.19041.0
💡 Quick Start Example
Here's a simple .NET MAUI page to get you started:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<VerticalStackLayout Padding="30" Spacing="25">
<Label Text="Hello, .NET MAUI!"
FontSize="32"
HorizontalOptions="Center" />
<Button Text="Click Me"
Clicked="OnButtonClicked" />
<Label x:Name="CounterLabel"
Text="Button not clicked yet"
HorizontalOptions="Center" />
</VerticalStackLayout>
</ContentPage>
Learn more:
- Build your first app - Complete tutorial with UI examples
- XAML basics - Learn XAML fundamentals
- Create a multi-page app - Build a note-taking app
🎯 Key Features
MVVM and Data Binding
.NET MAUI fully supports the Model-View-ViewModel (MVVM) pattern with powerful data binding:
<Label Text="{Binding UserName}" />
<Entry Text="{Binding Email, Mode=TwoWay}" />
Learn more:
- Data binding fundamentals - Complete guide with examples
- MVVM pattern - Implementing MVVM
- .NET MAUI Community Toolkit - MVVM helpers
- MVVM Toolkit - Source generators and commands
XAML Enhancements
.NET MAUI includes powerful XAML features for cleaner, more efficient code:
<!-- Simplified property syntax -->
<Button Text="Click Me" Clicked="OnClicked" />
<!-- Markup extensions -->
<Label Text="{Binding Title}"
TextColor="{StaticResource PrimaryColor}" />
Learn more:
- XAML compilation and source generation - Better performance
- XAML markup extensions - Extend capabilities
- XAML hot reload - Instant updates during development
Shell Navigation
Shell provides a structured, performant navigation experience:
<Shell>
<TabBar>
<ShellContent Title="Home"
Icon="home.png"
ContentTemplate="{DataTemplate local:HomePage}" />
<ShellContent Title="Settings"
Icon="settings.png"
ContentTemplate="{DataTemplate local:SettingsPage}" />
</TabBar>
</Shell>
Learn more:
- Shell overview - Getting started with Shell
- Shell navigation - Navigation patterns
- Shell tabs - Create tabbed interfaces
Collections and Lists
Display lists and collections with CollectionView:
<CollectionView ItemsSource="{Binding Items}">
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid Padding="10">
<Label Text="{Binding Name}"
FontSize="18" />
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
Learn more:
- CollectionView - High-performance lists
- CarouselView - Scrollable carousel
Responsive Layouts
Build adaptive UIs that work across different screen sizes:
<Grid RowDefinitions="Auto,*"
ColumnDefinitions="*,*">
<Label Grid.ColumnSpan="2"
Text="Header" />
<BoxView Grid.Row="1"
Grid.Column="0"
Color="Blue" />
<BoxView Grid.Row="1"
Grid.Column="1"
Color="Green" />
</Grid>
Learn more:
- Layouts - Overview of all layout types
- Grid layout - Flexible grid system
- FlexLayout - CSS flexbox-style layout
- Adaptive layouts - Multi-screen design
📚 Documentation and Resources
Official Documentation
- .NET MAUI Documentation - Complete guide to building apps
- API Reference - Detailed API documentation
- Controls Documentation - All available controls
- What's New in .NET 10 - Latest features and improvements
Learning Resources
- .NET MAUI Samples - Official sample applications
- .NET MAUI Workshop - Hands-on learning workshop
- Microsoft Learn - Free training modules
- .NET MAUI Blog - Latest news and updates
Community Resources
- .NET MAUI Community Toolkit - Additional controls, behaviors, and converters
- Awesome .NET MAUI - Curated list of resources
- Stack Overflow - Community Q&A
💬 Feedback and Support
We welcome your feedback and contributions!
Getting Help
- Documentation: Check the official documentation
- Q&A: Ask questions on Stack Overflow with the
.net-mauitag - Discussions: Join GitHub Discussions for community conversations
Reporting Issues
- Bug Reports: File bugs at GitHub Issues
- Feature Requests: Suggest new features in GitHub Issues
- Security Issues: Report security vulnerabilities via Microsoft Security Response Center
Community
- Discord: Join the .NET Discord server or the MAUIverse Discord (community-driven, not Microsoft official)
- X (formerly Twitter): Follow @dotnet
- YouTube: Watch tutorials on .NET YouTube channel
🤝 Contributing
We encourage contributions from the community! .NET MAUI is an open-source project.
- Contributing Guide: Read our Contributing Guidelines
- Development Guide: See the Development Guide for building locally
- Code of Conduct: Review our Code of Conduct
- Good First Issues: Find good first issues to start contributing
🔧 Related Packages
.NET MAUI consists of several packages that work together:
| Package | Description |
|---|---|
| Microsoft.Maui.Controls | Core UI controls and XAML (this package) |
| Microsoft.Maui.Core | Platform abstractions and handlers |
| Microsoft.Maui.Essentials | Cross-platform APIs (merged into Core) |
| Microsoft.Maui.Graphics | Cross-platform graphics library |
| CommunityToolkit.Maui | Community-built controls and helpers |
📄 License
.NET MAUI is licensed under the MIT License.
🎉 Acknowledgements
.NET MAUI is the evolution of Xamarin.Forms, building on years of mobile and cross-platform development experience. We thank the community for their continued support and contributions.
Get Started with .NET MAUI | Documentation | Samples | GitHub
Changes from Previous Version
Adoption Assessment
A verified publisher signal is available. Assess fit from the package's supported frameworks, license and dependency graph rather than popularity alone.
Related Guides & Workflows
Learn how to evaluate, integrate, or audit this package in your .NET project.