Mobile Development

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

2026-05-18 10:25:35

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.

Explore

Empowering Enterprises with AI: Key SAP on Azure Innovations Revealed at Sapphire 2026 How to Navigate the Approval Process for a Utility-Scale Energy Storage Project: Lessons from Wyandotte County's East Side Energy Storage SpaceX Targets May 19 for First Launch of Upgraded Starship V3 Megarocket Boosting WebAssembly Performance with Speculative Inlining and Deoptimization in V8 5 Key Takeaways from Colombia’s Landmark HIV Drug Compulsory License Victory