Quick answer
Migrating from Xamarin to .NET MAUI means moving your Xamarin.Forms, Xamarin.iOS or Xamarin.Android app onto Microsoft’s current cross-platform framework, running on modern .NET. Microsoft ended Xamarin support in May 2024, so apps still on Xamarin no longer receive official security patches or fixes. For most Australian businesses the safest target is .NET MAUI on .NET 10, the current long-term-support release.
A typical migration follows six steps: audit the app, choose an upgrade or rewrite approach, convert the project to the SDK-style format, replace incompatible libraries and custom renderers, test on real devices, then release through the App Store and Google Play. Most business apps take roughly 6 to 20 weeks, depending on size, custom renderers and third-party dependencies.
Why should you migrate from Xamarin now?
You should migrate now because Xamarin is out of support, and the gap between your app and current iOS, Android and security requirements widens with every release. Xamarin.Forms and the Xamarin SDKs stopped receiving updates in May 2024. Your app keeps running, but nothing is fixed or certified for newer platform versions.
For a business, the risks show up in four places:
- Security exposure: unpatched vulnerabilities in the framework and its dependencies stay unpatched.
- App store compliance: Apple and Google regularly raise the minimum SDK and API levels for new submissions and updates. Xamarin apps struggle to meet them, which can block releases and bug fixes.
- Compatibility: new iOS and Android versions can break behaviour in apps built on frozen tooling, and nobody upstream will fix it.
- Hiring and maintenance cost: developers want to work on current .NET, and Xamarin-specific skills are getting harder to find.
The timing also matters because .NET 8 and .NET 9 both reach end of support on 10 November 2026. Moving straight to .NET 10 means you migrate once and land on a supported release. See our guide to the .NET 10 migration deadline for Australian businesses.
What is the difference between Xamarin and .NET MAUI?
.NET MAUI (Multi-platform App UI) is the direct successor to Xamarin.Forms: one C# and XAML codebase that targets Android, iOS, macOS and Windows from a single project, running on modern .NET. Xamarin was a separate stack built on Mono. MAUI is part of mainline .NET, so it shares tooling, performance work and long-term support with the rest of the platform.
| Area | Xamarin | .NET MAUI |
|---|---|---|
| Support status | Ended May 2024 | Actively supported on current .NET |
| Project structure | Separate project per platform plus shared library | Single project with platform folders |
| Project format | Legacy .csproj and packages.config | SDK-style .csproj with PackageReference |
| Platform customisation | Custom renderers | Handlers (renderers can be bridged during migration) |
| Runtime | Mono | Modern .NET with improved performance |
| Target platforms | Android, iOS, macOS, UWP | Android, iOS, macOS (Mac Catalyst), Windows (WinUI 3) |
| Tooling | Visual Studio 2019 and 2022 | Current Visual Studio; .NET 10 needs Visual Studio 2026 |
| Hot Reload | Limited | XAML and C# Hot Reload |
If your app uses Xamarin.Forms, most of your XAML pages, view models and business logic carry across with namespace and API changes. Native-only Xamarin.iOS and Xamarin.Android apps move to .NET for iOS and .NET for Android, or to MAUI if you want a shared UI.
What are the options for migrating a Xamarin app?
There are three main approaches: an in-place upgrade using Microsoft’s migration tooling, an incremental migration screen by screen, or a full rewrite in .NET MAUI. The right one depends on how healthy your codebase is and how much of your UI relies on custom native code.
| Approach | Best for | Main risk | Typical effort |
|---|---|---|---|
| In-place upgrade | Xamarin.Forms apps with clean architecture and few custom renderers | Hidden incompatibilities in third-party packages | Lowest |
| Incremental migration | Large apps that must keep shipping during the move | Running two codebases for a period | Medium |
| Full rewrite | Legacy code with poor structure, or a redesign already planned | Higher cost and longer time to release | Highest |
Choose an in-place upgrade when your app is on recent Xamarin.Forms, uses MVVM, and depends on libraries that already have MAUI-compatible versions. This is the most common and cheapest path.
Choose an incremental migration when the app is large, business-critical and cannot be frozen. You migrate shared libraries first (business logic, networking, data access to .NET Standard or modern .NET), then move the UI in stages.
Choose a rewrite when the codebase is tangled, the UX is dated, or you want to redesign the product anyway. A rewrite also suits apps that mostly wrap native code and will gain little from reuse.
How do you migrate from Xamarin to .NET MAUI step by step?
- Follow eight steps: audit, decide, back up, convert, replace, test, release, then monitor. Each step has a clear output, which keeps the project predictable.
1. Audit the app. List every project, NuGet package, custom renderer, effect and platform-specific API. Check each dependency for a MAUI-compatible version or a maintained alternative. Output: a dependency and risk register.
2. Choose the approach. Pick in-place upgrade, incremental migration or rewrite (see the table above) and agree the target, which should be .NET 10.
3. Back up and branch. Tag the last stable Xamarin release in source control and keep it buildable, so you can ship an emergency fix while the migration runs.
4. Convert the projects. Move to SDK-style project files and PackageReference, then use Microsoft’s .NET Upgrade Assistant to automate namespace and API changes. Expect to finish the remainder by hand.
5. Replace incompatible code. Swap Xamarin-only libraries for MAUI equivalents, rebuild custom renderers as handlers, and update platform code for Android, iOS and Windows. Move startup configuration into MauiProgram.cs.
6. Test on real devices. Run regression tests on physical iOS and Android devices, covering your oldest supported OS versions. Check performance, permissions, push notifications, deep links and offline behaviour.
7. Release in stages. Use TestFlight and Google Play internal or closed testing first, then a staged rollout. Confirm your app meets current App Store and Google Play SDK requirements before submitting.
8. Monitor after launch. Watch crash reports, startup time and user reviews for the first few weeks, and keep a rollback plan ready.
Our earlier guide on migrating legacy .NET Framework applications covers the backend side of this process, which often needs upgrading alongside the mobile app.
What are the most common Xamarin to MAUI migration problems?
The most common problems are unsupported third-party libraries, custom renderers, and underestimated testing. Most delays trace back to one of these, and all are visible during the audit.
| Problem | Why it happens | How to avoid it |
|---|---|---|
| Abandoned NuGet packages | The library has no MAUI version | Find replacements early, or isolate and rewrite the feature |
| Custom renderers | MAUI uses handlers instead | Rebuild as handlers; list every renderer in the audit |
| Platform-specific code | Android and iOS APIs changed | Review permissions, lifecycle and background-task code |
| Visual differences | Default styling and layout behaviour differ | Review every screen against designs, not just functionality |
| Skipping device testing | Emulators hide real-world issues | Test on physical devices, including older ones |
| Doing it all at once | No fallback if the migration stalls | Keep the Xamarin branch releasable until MAUI is live |
| Tooling mismatch | .NET 10 needs current Visual Studio | Update developer machines and CI build agents first |
How much does a Xamarin to .NET MAUI migration cost in Australia?
A Xamarin to .NET MAUI migration in Australia typically costs from about AUD $20,000 for a small app to $150,000 or more for a large, complex one. These are indicative estimates only. A fixed quote needs a code audit first.
| App size | Typical scope | Timeline | Indicative cost (AUD) |
| Small | Under 15 screens, few dependencies, no custom renderers | 4 to 8 weeks | $20,000 to $50,000 |
| Medium | 15 to 50 screens, several custom renderers and integrations | 8 to 16 weeks | $50,000 to $150,000 |
| Large or complex | 50+ screens, offline sync, heavy native code, multiple backends | 16 to 36+ weeks | $150,000+ |
Four factors move the price most: the number of custom renderers, the health of your third-party dependencies, how much automated test coverage you already have, and whether the backend needs upgrading too.
Hourly rates also shape the total. Our .NET development cost guide puts local Australian developers at roughly AUD $80 to $180 per hour, and outsourced or nearshore teams at roughly AUD $40 to $90 per hour. A blended team often gives the best balance of cost and communication.
The cheaper question is usually what staying put costs: security exposure, blocked store updates and a bigger migration later.
What should Australian businesses consider before migrating?
Australian businesses should treat the migration as a security and compliance task as well as a technical one. If your app handles customer data, running on an unsupported framework is hard to defend.
- Privacy obligations: the Privacy Act 1988 and the Australian Privacy Principles require organisations to take reasonable steps to protect personal information. An out-of-support framework weakens that position, and the Notifiable Data Breaches scheme applies if something goes wrong.
- Security frameworks: if you align with the ACSC Essential Eight, patching applications and operating systems is a core control. Unsupported components make it difficult to meet.
- Industry rules: finance, health, insurance and government clients often write supported software into contracts, audits and cyber insurance questionnaires.
- Data residency: if your app talks to cloud services, confirm where data is stored. Australian Azure regions are available if you need local hosting.
- Local support: time-zone overlap matters for testing and release windows. Check your delivery partner’s availability across Sydney, Melbourne and the rest of AEST and AEDT working hours.
This is general information, not legal advice. Confirm your specific obligations with your legal or compliance adviser.
How do you choose a .NET MAUI migration partner?
Choose a partner that has shipped real Xamarin to MAUI migrations, starts with a paid or free audit, and commits to a clear scope, timeline and post-launch support. Ask these questions before you sign:
- Experience: which Xamarin apps have you migrated, and can we speak to those clients?
- Audit first: will you review our code and dependencies before quoting a fixed price?
- Approach: how do you decide between upgrade, incremental migration and rewrite?
- Testing: do you test on physical iOS and Android devices, and who owns regression testing?
- Store releases: will you manage App Store and Google Play submissions and SDK compliance?
- Security: what are your practices for source code access, credentials and data handling?
- Support: what happens after launch, and how fast do you respond to production issues?
- Handover: will we own the code, documentation and build pipelines?
We cover the wider selection criteria in our guide to choosing a .NET development partner, and our Xamarin and MAUI services page explains how we work.
Frequently asked questions
Is Xamarin still supported?
No. Microsoft ended support for Xamarin in May 2024. Existing apps keep running, but there are no further updates, security patches or support, so businesses should plan a move to .NET MAUI.
Is .NET MAUI the replacement for Xamarin.Forms?
Yes. .NET MAUI is the official successor to Xamarin.Forms. It uses the same C# and XAML approach but runs on modern .NET with a single-project structure.
How long does it take to migrate from Xamarin to .NET MAUI?
Most business apps take roughly 6 to 20 weeks. Small apps can take 4 to 8 weeks, while large apps with many custom renderers and integrations can take 16 weeks or more.
Can I migrate Xamarin.Forms to .NET MAUI automatically?
Partly. Microsoft’s .NET Upgrade Assistant automates project conversion and many namespace changes, but custom renderers, incompatible libraries and platform-specific code still need manual work and testing.
Which .NET version should I migrate to?
Target .NET 10, the current long-term-support release. .NET 8 and .NET 9 both reach end of support on 10 November 2026, so migrating to either would mean another upgrade soon after.
Do I need to rewrite my app?
Not usually. Apps with clean architecture and compatible libraries can be upgraded in place. A rewrite makes sense when the code is tangled, the UX is dated, or a redesign is already planned.
What happens if I don’t migrate?
Your app keeps working for now, but it receives no framework security patches, and you may be unable to meet future App Store and Google Play requirements. The longer you wait, the harder and costlier the migration becomes.
Can Dotnet Professional help with a Xamarin to MAUI migration?
Yes. Dotnet Professional is a Sydney and Melbourne based .NET team that provides Xamarin and MAUI migration, from the initial audit through to App Store and Google Play release.
Conclusion: plan your Xamarin to .NET MAUI migration now
Xamarin is out of support, and moving to .NET MAUI on .NET 10 is the safest way to keep your mobile app secure, compliant and releasable. Start with a code and dependency audit, choose the approach that fits your app, and test on real devices before a staged release.
If you run a Xamarin app and want a clear scope, timeline and fixed-price quote, contact Dotnet Professional for a Xamarin to .NET MAUI migration audit. You can also read more about our Xamarin and MAUI services or hiring a dedicated .NET developer.
