🇩🇪
Mobile app moving from Xamarin.Forms to .NET MAUI

Migrate Xamarin apps to .NET MAUI with parallel running and tests

For mid-sized companies: move existing Xamarin.Forms apps to .NET MAUI in stages, keep C# logic and avoid a store outage – delivery and project ownership from Germany (Leer/East Frisia), named contacts, no offshore guesswork.

Xamarin.Forms · .NET MAUI · C# · store release
  • 250+ delivered projects
  • 5.0 stars on Google
  • 100% engineering in Germany

Why a Xamarin to .NET MAUI migration is due

Xamarin no longer receives updates. .NET MAUI keeps the same C# base, with one project, handlers instead of renderers, and current .NET.

Microsoft ended support for Xamarin on 1 May 2024. New iOS and Android SDKs, store rules and security fixes no longer land on Xamarin.Forms or Xamarin.Native.

.NET MAUI (Multi-platform App UI) is the intended successor. One codebase covers iOS, Android and, when needed, Windows and macOS. Teams that already use C#, ASP.NET Core or Azure stay inside that stack.

Source: Microsoft Xamarin support policy, end of support 1 May 2024. The legacy platform is described on our Xamarin page. The migration itself is a separate service, delivered from Leer, Germany.

What changes between Xamarin.Forms and .NET MAUI

A namespace swap is not the project. The architecture moves from several platform projects to a MAUI single project. Discovery always covers these points:

  • Custom renderers become handlers. Every custom control needs an acceptance test.
  • Xamarin.Essentials moves into the MAUI APIs. Camera, files and location calls are updated.
  • NuGet packages without a MAUI target are replaced or wrapped behind a narrow interface.
  • Separate iOS and Android projects fold into platform folders of the single project.
  • The target framework is current .NET, not the old Xamarin Mono profile.

Shared cross-platform logic is the reason to stay on the Microsoft stack. iOS and Android UI exceptions are handled in place, not by shipping a second app.

How the migration runs

1. Inventory of the Xamarin solution

We read projects, target frameworks, NuGet status and custom controls. Store accounts, signing and business-critical flows sit on the same list. The output is a cut: keep, adapt or replace.

2. Target shape in .NET MAUI

We fix the .NET version, the single project and the handler strategy. Business logic moves into libraries that the old and new apps can share for a while. That keeps a rollback path open.

3. UI and device access, module by module

Screens and device features move in slices: login, offline data, push, Bluetooth. Each slice has acceptance criteria taken from the current app. Gaps show up in the test build, not in the public store.

4. Store release and hypercare

TestFlight and Play test tracks run beside the Xamarin version. We replace the store package only after business sign-off. The first weeks after release are part of the service, including crash review.

.NET MAUI, Flutter or a rewrite

.NET MAUI is the economical path when a lot of C# is already sound. Moving to Flutter or React Native rebuilds the UI and often the client logic. That pays off when the design system is new or no .NET team will maintain the app.

New mobile products without a Xamarin estate are planned in app development. Desktop targets on the same stack belong with desktop software. If more than the app is legacy, legacy modernization stays the wider frame.

Example: a smart-home app moved from Xamarin to .NET MAUI

We continued the ESYLUX smart-home app and migrated it from Xamarin to .NET MAUI. Lighting, automation, projects and devices stay operable. Bluetooth and Wi-Fi run on the new base without throwing away the existing user flow.

The write-up is the ESYLUX smart-home app case study. Similar device apps with .NET on the backend follow the same cut: libraries first, UI next, store last.

Effort and the next step

Investment is set as fixed-price milestones after discovery. A full rewrite is positioned by the app development cost calculator. A migration stays leaner while C# logic, models and API clients remain. Groenewold IT Solutions experience: lean Forms apps often take weeks; apps with custom UI and device protocols take several months.

The first call needs repository access or an architecture sketch, the store names and the list of critical flows. From that we cut what continues in .NET MAUI and what must be rebuilt.

Common questions

Questions about migrating Xamarin to .NET MAUI

Timing, code and delivery

Why migrate a Xamarin app to .NET MAUI now?
Microsoft ended Xamarin support on 1 May 2024. Security updates and new platform SDKs have stopped. .NET MAUI is the successor on the same C# and .NET stack. Waiting raises the chance that Apple or Google reject a build on an outdated runtime.
Can we keep existing Xamarin C# code in the .NET MAUI migration?
Business logic, models and API clients in C# usually stay. The work sits in the UI: custom renderers become handlers, and Xamarin.Essentials moves to the MAUI APIs. A legacy code analysis shows which libraries can move before we touch screens.
How long does a Xamarin to .NET MAUI migration take?

A lean Xamarin.Forms app with little custom UI often takes six to ten weeks.

Apps with custom renderers, BLE or unusual NuGet dependencies often take three to six months. We set the range after discovery, not as a flat quote. Source: Groenewold IT project experience with Xamarin and .NET MAUI.

Stores, alternatives and device APIs

Do users have to reinstall the app during the migration?
No, when the bundle ID and signing identity stay the same. We ship the MAUI build through TestFlight and Play test tracks before the store release replaces the Xamarin package. The CI/CD channel stays the one your team already uses.
When are Flutter or React Native a better fit than .NET MAUI?
.NET MAUI fits when C#, ASP.NET and Azure are already in place. Flutter or React Native make sense when the UI is being rebuilt and the team does not work in C#. We decide from reuse, not from framework fashion.
What happens to custom renderers, NuGet packages and device APIs?
We check every package against the target .NET version. Dead plugins become MAUI handlers or a thin native binding. Bluetooth, NFC and camera stay when the platform contract is still the same. If a package is gone, we rebuild the bridge and test it on devices.
Björn Groenewold

Up to 50% of your investment via BAFA/KfW

Use our funding calculator to see which government grants may apply to your project.

Björn Groenewold – Managing Director

Service cluster

Related services for Software & platforms: choose the right delivery route

A problem-led guide to custom software, web apps, mobile apps, online shops and ERP.