Roadmap to becoming a .NET MAUI developer in 2026.
Below you can find a chart demonstrating the paths that you can take and the libraries you would want to learn to become a .NET MAUI developer. It is meant as a tip for everyone who asks, "What should I learn next as a mobile & desktop .NET developer?"
⚠️ Coming from Xamarin? Xamarin reached end of support on May 1, 2024. .NET MAUI is its direct successor and the framework you should be learning today. This roadmap is the modernized version of the classic Xamarin Developer Roadmap. Most of your Xamarin knowledge (C#, XAML, MVVM, platform concepts) carries over — see Microsoft's Xamarin → .NET MAUI migration guide.
The purpose of this roadmap is to give you an idea about the landscape. It will guide you if you are confused about what to learn next, rather than encouraging you to pick what is hip and trendy. You should grow some understanding of why one tool would be better suited for some cases than another — and remember that hip and trendy does not always mean best suited for the job.
If you like or are using this project to learn or start your solution, please give it a star. Thanks!
An editable mind-map is available in
maui-developer-roadmap.xmind(open with XMind).
- C# — the language of the entire .NET ecosystem
- .NET fundamentals — the SDK,
dotnetCLI, project files (SDK-style.csproj), NuGet - Understand the difference between .NET (the unified platform, currently .NET 9 / .NET 10) and the legacy .NET Framework
- Learn Git, create a few repositories on GitHub, share your code with other people
- Know the HTTP(S) protocol, request methods (GET, POST, PUT, PATCH, DELETE, OPTIONS)
- Don't be afraid of using search engines and AI coding assistants — but verify what they tell you
- Learn the basics of CI/CD
- Application settings & configuration (
appsettings.json, secrets, environment-specific config) - Read a few books about algorithms and data structures
- Language fundamentals — types, generics, records
- async / await — non-blocking UI is essential on mobile
- LINQ
- Nullable reference types & modern C# features
- Data bindings & compiled bindings (prefer compiled bindings for performance)
- Triggers
- Behaviors
- Markup extensions & C# Markup
- Control Templates & Data Templates
- Accessibility
- Handlers — lightweight, decoupled way to customize and extend native controls in MAUI
- The new XAML source generator (.NET 10) creates strongly-typed code for XAML at compile time
- What is .NET MAUI — one project targeting Android, iOS, macOS (Mac Catalyst), and Windows (WinUI 3)
- Single project structure — one
.csproj, multi-targeted; shared resources, fonts, images - App lifecycle
- Layouts (Grid, StackLayout, FlexLayout, AbsoluteLayout)
- Shell — flyout, tabs, and URI-based navigation
- .NET MAUI Essentials — device APIs (sensors, connectivity, geolocation, preferences, secure storage) built directly into the framework
- Platform-specific code — partial classes,
#if ANDROID/IOS/...,Platforms/folders - Hot Reload (XAML) and .NET Hot Reload (C#)
- Android
- Android project structure & manifest
- Activities, Intents, permissions
- iOS & Mac Catalyst
- iOS project structure,
Info.plist, entitlements - Understanding App Delegate / Scene lifecycle
- iOS project structure,
- Windows (WinUI 3)
- Windows project structure, packaging (MSIX)
- Android
- Controls gallery — buttons, entries, pickers, etc.
- CollectionView & CarouselView — modern, performant lists
- BindableLayout — bind a layout to a collection
- Building custom controls (ContentView, bindable properties, templated controls)
- Gestures — tap, swipe, pan, pinch, drag & drop
- Animations — basic & easing animations
- Popups, toasts & snackbars (CommunityToolkit.Maui)
Ready-made control suites and UI kits save you from building complex controls (charts, data grids, schedulers) from scratch.
- Syncfusion Essential Studio for .NET MAUI — large commercial control suite (free Community License available)
- Telerik UI for .NET MAUI — commercial controls (DataGrid, Charts, Scheduler)
- DevExpress .NET MAUI Controls — commercial controls (free for eligible users)
- UraniumUI — free, open-source Material Design controls & MVVM helpers
- DrawnUI for .NET MAUI — SkiaSharp-rendered UI for pixel-perfect, high-performance custom UI
- Sharpnado — free controls (tabs, CollectionView enhancements, shadows)
- Styles (XAML) — explicit, implicit, and
BasedOnstyles - Resource Dictionaries & merged dictionaries
- Dynamic resources
- Dark / light theme —
AppThemeBindingand responding to system theme changes - Visual states (VisualStateManager)
- Platform-specific styling (OnPlatform, OnIdiom)
- Images — adding, sizing, and multi-resolution assets
- Fonts & font icons — embedding custom fonts, using icon fonts
- App icons — adaptive, single-source SVG
- Splash screen
- Raw & embedded assets
- MVVM pattern
- Dependency Injection — built into MAUI via
Microsoft.Extensions.DependencyInjection; register services inMauiProgram.cs - Navigation — Shell routing & query parameters
- Commands — prefer
[RelayCommand]from CommunityToolkit.Mvvm - Converters
- Validation
- Messaging: use
WeakReferenceMessenger(CommunityToolkit.Mvvm) for decoupled component communication
- CommunityToolkit.Mvvm — recommended default. Observable properties and commands with minimal boilerplate via source generators (
[ObservableProperty],[RelayCommand]) - .NET MAUI Community Toolkit — controls, converters, behaviors,
MediaElement, popups. Remember to call.UseMauiCommunityToolkit()inMauiProgram.cs - Prism — full-featured app framework (modularity, navigation, dialogs) with MAUI support
- ReactiveUI — composable, reactive (Rx) MVVM framework
- MVVMCross — mature cross-platform MVVM framework
- MVU / reactive alternatives — Comet and MauiReactor (C# Model-View-Update), Fabulous (F#)
- MAUI enterprise app patterns — Microsoft's reference architecture (eShop)
- Clean Architecture — separation of concerns, dependency rule
- Project & folder structure, feature-based organization
- Sharing code across projects (Core/domain layer,
.NET Standard/shared libraries) - State management & the repository/service patterns
- What are hybrid apps? — hosting web UI inside a native MAUI shell
- Blazor Hybrid — build UI with Razor components running in a
BlazorWebView, sharing code with your web app - .NET MAUI Blazor apps
- HybridWebView (.NET 9+) — host arbitrary HTML/JS/CSS with two-way C# ↔ JavaScript messaging; use it to reuse an existing web UI (React, Angular, Vue) without Blazor
- Great for teams with existing web/Blazor skills and shared web + native codebases
- REST
- Refit — automatic type-safe REST library
- Flurl — fluent, testable URL builder + HTTP client
- RestSharp — simple REST/HTTP client
IHttpClientFactory— the recommended way to configure/consumeHttpClient- Polly / Microsoft.Extensions.Http.Resilience — retries, circuit breakers, timeouts
- GraphQL
- Strawberry Shake — strongly-typed GraphQL client for .NET
- GraphQL.Client
- Local databases
- SQLite-net — lightweight ORM over SQLite
- EF Core — full-featured ORM, works with SQLite on-device
- LiteDB — a .NET NoSQL document store in a single file
- Device storage (built into MAUI Essentials)
- Preferences — key/value settings
- Secure Storage — encrypted key/value (Keychain / Keystore)
- File system helpers
- Caching
- Akavache — async key/value store
- MonkeyCache — simple caching library
- Cloud / Backend
- Firebase (Firestore, Realtime Database)
- Supabase — open-source Postgres backend with a C# client
- Azure Mobile Apps / Datasync — offline sync
- Biometric authentication — fingerprint / Face ID / Touch ID (via community plugins such as Plugin.Fingerprint)
- WebAuthenticator — built-in OAuth browser flow (MAUI Essentials)
- MSAL.NET — Microsoft Entra ID / Azure AD authentication
- Social sign-in: Google, Apple, Facebook, Microsoft (via OAuth/OIDC + WebAuthenticator)
- Sign in with Apple — required by Apple if you offer other social logins
- OpenID Connect libraries: IdentityModel.OidcClient
- Secure Storage — never store secrets in plain preferences
- OWASP MASVS — the mobile app security verification standard
- Certificate / SSL pinning — protect against MITM attacks
- Root / jailbreak detection
- Code protection — trimming & obfuscation
- Secrets management — keep API keys out of source; use a backend proxy where possible
- MediaElement (CommunityToolkit.Maui) — audio/video playback
- Media picker & camera — built into MAUI Essentials
- SkiaSharp — 2D graphics engine
GraphicsView+ Microsoft.Maui.Graphics — cross-platform drawing- Lottie animations / SkiaSharp.Skottie — vector animations
- Map control (
Microsoft.Maui.Controls.Maps) — pins, polygons, map types - Geolocation — current position & continuous updates (MAUI Essentials)
- Geocoding — address ↔ coordinates
- Geofencing (via platform APIs)
- Microsoft.Extensions.Logging — the built-in logging abstraction (register in
MauiProgram.cs) - Serilog — structured logging
- NLog — flexible logging platform
- Unit Testing
- Mocking
- Moq — mocking library
- NSubstitute — friendly mocking library
- Behavior (BDD)
- Reqnroll — BDD framework using the Gherkin specification language
- UI / E2E Testing
- Appium — cross-platform UI automation (the recommended path for MAUI E2E testing)
- .NET MAUI UITest samples
- Blazor Hybrid testing
- bUnit — testing Razor components
- Memory leaks — the most common real-world MAUI pitfall. Watch out for event handlers, circular references, and pages/handlers that never get collected. Prefer
WeakReferenceMessengerand weak-event patterns, and unsubscribe from events - .NET MAUI memory-leak guidance & tests — how the team detects leaks; apply the same patterns in your app
- Performance profiling for .NET MAUI — startup tracing, and the impact of AOT/trimming
- .NET diagnostics tools overview —
dotnet-trace(CPU/event traces) &dotnet-gcdump(heap snapshots for leak hunting) - Layout & performance diagnostics — XAML binding diagnostics, layout diagnostics (.NET 10)
- Sentry — crash reporting & performance monitoring with first-class MAUI support
- Firebase Crashlytics & Firebase Analytics
- Azure Application Insights — telemetry & analytics
- In-app purchases (iOS) / In-app billing (Android) — Plugin.InAppBilling
- Apple Pay & Google Pay
- Stripe — online payment processing
- Braintree / PayPal
- Adyen — global payment platform
- Remote
- Firebase Cloud Messaging (FCM) — cross-platform push
- Azure Notification Hubs
- Plugin.Firebase — MAUI-friendly Firebase wrapper
- Local
- Plugin.LocalNotification — cross-platform local notifications
- Platform background models — Android foreground services & WorkManager, iOS BGTaskScheduler
- Long-running tasks & scheduled/periodic work
- Plugin.Maui.TaskScheduler and similar community plugins
- Keeping work alive across app suspension/termination
- On-device ML
- ONNX Runtime — run ML models cross-platform on-device
- ML Kit (Android) / Core ML (iOS)
- LLMs & Generative AI
- Microsoft.Extensions.AI — unified AI abstractions for .NET
- Semantic Kernel — orchestrate LLMs, plugins, and agents
- Azure AI / Azure OpenAI and OpenAI .NET SDK
- Augmented Reality
- OCR / Vision
- ML Kit Text Recognition, Azure AI Vision, Google Cloud Vision
- Tesseract — open-source OCR engine
- Google AdMob — via community plugins (e.g. Plugin.MauiMTAdmob)
- AppLovin MAX / other mediation platforms
- Android — Publish to Google Play (AAB), Amazon Appstore
- iOS — Publish to the App Store via App Store Connect
- Windows — Publish to the Microsoft Store (MSIX)
- macOS — Publish a Mac Catalyst app
- Beta testing: TestFlight (iOS), Google Play internal testing
- GitHub Actions — build/test/sign MAUI apps
- Azure DevOps Pipelines
dotnet publishfor automated builds per platform- Code signing & provisioning (fastlane for iOS/Android is still widely used)
- Native interop
- Android binding libraries (Java/Kotlin)
- iOS binding libraries (Objective-C/Swift) — via Objective Sharpie
- Native library interop — Slim Bindings
- Cross-platform
- Deep linking / App links & Shell URI navigation
- Localization
- Performance — startup tracing, layout diagnostics (.NET 10), trimming & NativeAOT for iOS/Mac Catalyst
- Visual Studio 2022 (Windows) with the .NET MAUI workload
- Visual Studio Code + the .NET MAUI extension — cross-platform, including macOS
- JetBrains Rider — strong MAUI support
dotnetCLI — build, run, publish from the terminal- Postman — test web-service requests/responses
- Proxyman / Charles — HTTP(S) traffic inspection
- MonoGame — free C# framework for cross-platform games
- For richer needs, a dedicated engine like Godot (C# support) or Unity is the practical choice
- Single Responsibility Principle (SRP)
- Open-Closed Principle (OCP)
- Liskov Substitution Principle (LSP)
- Interface Segregation Principle (ISP)
- Dependency Inversion Principle (DIP)
- Abstract Factory
- Factory Method
- Command
- Decorator
- Strategy
- Observer
- Builder
- Singleton
- Facade
- Mediator
- dotnet/maui — the official .NET MAUI repository (issues, discussions, roadmap)
- Learning resources for .NET MAUI — Microsoft's curated list
- Build mobile and desktop apps with .NET MAUI — official Microsoft Learn training path
- awesome-dotnet-maui — a community-maintained list of libraries, tools & samples
- .NET Community — Discord, forums, and community standups
- Follow along: James Montemagno & Gerald Versluis on YouTube
If you think the roadmap can be improved, please open a PR with any updates and submit any issues. This is a living document — star the repository to revisit.
Migrating an existing Xamarin app? Start with Microsoft's Xamarin → .NET MAUI migration guide.
Inspired by the original Xamarin Developer Roadmap and the ASP.NET Core Developer Roadmap.
Want to contribute? We encourage community feedback and contributions. Please follow our contributing guidelines.
