How to Upgrade Your .NET MAUI Apps to CoreCLR in .NET 11

By

Introduction

Starting with .NET 11 Preview 4, .NET MAUI applications on Android, iOS, and Mac Catalyst run on the CoreCLR runtime by default. This is a major shift from the Mono runtime that powered mobile .NET apps for over a decade. CoreCLR is the same high-performance runtime used by ASP.NET Core, Azure services, and desktop applications—bringing runtime unification, better diagnostics, and improved performance to your mobile apps. This guide walks you through the steps to upgrade your existing .NET MAUI projects to leverage CoreCLR, understand what changed, and handle any transition issues.

How to Upgrade Your .NET MAUI Apps to CoreCLR in .NET 11
Source: devblogs.microsoft.com

What You Need

Step-by-Step Guide

Step 1: Understand the Runtime Change

First, know what’s happening. In .NET 11, default builds for Android, iOS, Mac Catalyst, and tvOS use CoreCLR instead of Mono. This does not affect Blazor WebAssembly (still Mono). You can opt back to Mono if needed (Step 6). Review the official documentation on runtimes and compilation for more details.

Step 2: Install .NET 11 Preview 4

Download and install the .NET 11 SDK from the official site. Ensure you include the MAUI workload:

dotnet workload install maui

Verify installation:

dotnet --list-sdks

You should see version 11.0.x-preview.x.

Step 3: Open Your .NET MAUI Project and Retarget to .NET 11

If upgrading from .NET 9 or 10, edit the .csproj file. Change the TargetFrameworks to use net11.0-android, net11.0-ios, etc. Example:

<TargetFrameworks>net11.0-android;net11.0-ios;net11.0-maccatalyst</TargetFrameworks>

You may need to update any NuGet packages to versions compatible with .NET 11.

Step 4: Build and Run with CoreCLR Default

Build your project normally. For Release and Debug configurations, CoreCLR is now the default. No special flags are required. Run on a device or emulator. Your app will use the same runtime as your backend services, providing consistent JIT behavior, garbage collection, and diagnostics.

Step 5: Verify the Runtime

To confirm your app is using CoreCLR, check the logs or use diagnostics. On Android, you can look at the adb logcat output for runtime initialization messages. Alternatively, in code you can check System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription—it will show ".NET 11.0.x" (CoreCLR) instead of ".NET (Mono)".

Step 6: Handle Issues – Opt Back to Mono (Temporary)

If you encounter compatibility issues during the transition, you can revert to Mono by setting a build property in your .csproj:

How to Upgrade Your .NET MAUI Apps to CoreCLR in .NET 11
Source: devblogs.microsoft.com
<PropertyGroup>
  <UseMonoRuntime>true</UseMonoRuntime>
</PropertyGroup>

This allows you to continue development while you fix any runtime-dependent code. However, plan to remove this flag as soon as possible to benefit from CoreCLR.

Step 7: Leverage Unified Tooling and Diagnostics

With CoreCLR across all platforms, you can use the same profiling, debugging, and monitoring tools for mobile as for server apps. For example:

Integrate these into your CI/CD pipeline for mobile performance testing.

Tips for a Smooth Transition

By following these steps, your .NET MAUI apps will join the millions of production workloads already running on CoreCLR—the same runtime that powers Azure, ASP.NET Core, and desktop apps. Embrace the unification and enjoy simpler, more powerful mobile development.

Tags:

Related Articles

Recommended

Discover More

Block Protocol Aims to Fix Web's Semantic Struggles After 25 YearsHow 57 Nations Forged a Path Away from Fossil Fuels: A Step-by-Step GuideWIRobotics Secures $68 Million Series B to Accelerate Humanoid Robot CommercializationiOS 26.5 and iPadOS 26.5: 10 Essential Things You Need to Know About the Release CandidatesShould You Upgrade to a PCIe 5.0 SSD? A Step-by-Step Guide to Deciding if It's Worth It