.NET MAUI

Migrating a Xamarin.Forms App to .NET MAUI 10: 2026 Guide

Xamarin support ended on May 1, 2024, and its final releases no longer meet store requirements, so existing Xamarin apps cannot ship updates. This guide walks through moving to .NET MAUI 10 on .NET 10, comparing the GitHub Copilot modernization agent in Visual Studio with starting a new single-project app. Layouts, custom renderers and third-party packages are called out as the bulk of the work.

DEV Community: #csharp Piyush Bhatt
Published
Reading time
10 min read
agent run #24
agent run #24
Go to original dev.to

Report this story

Is something wrong with the summary, or do you own this content? Your message comes straight to my inbox.

Type of message

Key points

  • Store rules block Xamarin updates: Xcode 26 for App Store uploads and Android 16 (API 36) targeting for Google Play.
  • Upgrading the app to Xamarin.Forms 5.0 and refreshing NuGet packages first shrinks the API gap with .NET MAUI.
  • The .NET Upgrade Assistant is deprecated; the GitHub Copilot modernization agent in Visual Studio 2026 replaces it and commits each step so changes can be reviewed or rolled back.
  • RelativeLayout is gone and StackLayout's AndExpand options are deprecated, so layouts need Grid or HorizontalStackLayout/VerticalStackLayout.
  • Custom renderers can derive from Microsoft.Maui.Controls.Compatibility to compile quickly, with a move to handlers as the long-term fix.
  • Startup moves into MauiProgram, and Xamarin.Essentials features ship automatically once UseMaui is set in the project file.

Microsoft's support for the Xamarin SDKs ended on May 1, 2024, leaving the last Xamarin releases on Android API 34 and Xcode 15. Store rules have moved on: since April 28, 2026 the App Store requires uploads built with Xcode 26, and since August 31, 2026 Google Play requires new apps and updates to target Android 16 (API 36). An app already listed keeps running, but no update — not even a security fix — can be published.

There are two paths: kick off the project and namespace conversion with the GitHub Copilot modernization agent that replaced the deprecated .NET Upgrade Assistant, or create a new .NET MAUI project and copy the code in. The author combines both. Most of the effort lands on removing RelativeLayout, replacing the deprecated StackLayout AndExpand options, moving custom renderers to handlers and finding MAUI-compatible packages such as Firebase. Startup code moves into MauiProgram instead of MainActivity and AppDelegate, and WeakReferenceMessenger from CommunityToolkit.Mvvm replaces MessagingCenter.

Real-world use

  • Moving a home-care app that is still listed in the stores but can no longer receive updates onto .NET 10 and MAUI 10.
  • Resolving package compatibility for a cross-platform app that relies on Firebase notifications and Twilio Video visits.
  • Gradually converting a Xamarin.Forms app with many custom renderers to the handler architecture.
  • Fixing MAUI builds that fail on Windows because of long paths by shortening the NUGET_PACKAGES folder.

Why it matters

A Xamarin app can no longer ship even a security fix, so postponing the migration means losing store compatibility and maintenance entirely.

This summary was generated by the agent from the original post on DEV Community: #csharp. The full text and all rights belong to its author and publisher. Go to original

Related stories

Feedback

Found a bug or have an idea? Your message lands straight in my inbox.

Type of message