Runtime upgrade
.NET 11
.NET 11 moves .NET MAUI to CoreCLR, and Mono stays behind. Score your app in minutes at no cost, then tell us what it found and we will help you plan the move.
Mono • Through .NET 10
the only one it had
→
CoreCLR • .NET 11 release
the only runtime .NET MAUI has
+38%
Faster opening a screen, runtime alone
+30%
Faster warm data load
+25%
Faster cold start, with a startup profile
1 to 2
Weeks when the check is green
Before offering this as a service, we measured it on our own open-source .NET MAUI app and published every round, methodology included. Same app on both runtimes, on physical Android phones, while .NET 11 still let us switch Mono on.
We tuned the app on both runtimes equally: lazy views, lazy flyout, Release logging off. Both more than halved and the 25% gap held. The app was the bigger bottleneck all along, not the runtime, so optimize your app first and let the runtime add on top.
1.85 s
Mono, optimized
1.38 s
CoreCLR, optimized
2
Physical phones
Startup is what everyone benchmarks, and users see it once. This round measured what an app does afterwards: JSON, LINQ mapping and sorting, date parsing, then binding. On Android most screens open once per process, so the cold number is the one that matters.
~25%
Faster, cold
~34%
Faster, warm
10k
Records per run
After startup and data loading, this round measured what users actually see: opening a real XAML screen, cold. Mono got the newest build it can still run, preview 5, against CoreCLR with the Source Generator on RC 2. Building the screen is only about 30% of the time, and the Source Generator works on that part. The runtime carries the rest, so almost all of the jump comes from CoreCLR.
1.78 s
Mono + XamlC
0.95 s
CoreCLR + Source Generator
~47%
Faster, cold open
CoreCLR is the engine behind ASP.NET Core. Your mobile app and your backend finally share a runtime, a JIT, a GC and one diagnostics story, and the standard .NET profilers reach mobile for the first time.
The same toolchain that gets you onto CoreCLR is the one that leads to NativeAOT, so you do not pay for a second upgrade to get there. None of this shows up in a benchmark, and all of it outlives the numbers above.
The first step is yours, it costs nothing, and you can do it this afternoon without talking to us. The other two are what we do once you know where you stand.
A Markdown skill your AI agent installs and reads before it looks at your repo. It scores how much work the move is and how much you would actually gain, and writes a report you can share with your team.
Any coding agent that can run commands in your project. No account, no signup, no form.
› Read skills.horus.com.uy/coreclr-fit and score this project
CORECLR-FIT V1
28 measurements on two physical phones, on .NET 11 preview 5 plus a first pass on RC 2: startup, opening a real screen, the XAML pipeline, compiled bindings, loading 10,000 records with a JSON, LINQ and date breakdown, GC behavior and APK size. Five rounds published. Up next: measuring the full upgrade, from .NET 10 to the .NET 11 release, and a first run on iOS.
1 to 2 weeks when the check is green. Longer when it is not, and your report says why.
If week one says the numbers do not justify the work, we stop there and you pay for that week only. Your .NET 10 build stays releasable the whole way.
2 to 3 weeks.
Runs after the upgrade, on CoreCLR already, or on your Mono app today.
Switching the runtime is one MSBuild property. Everything around it is where the weeks go, and an honest estimate starts by counting these four.
Five stages, starting from the report the skill wrote, so stage one is verification and not discovery. Your app builds and ships at every one of them, and stages one and five use the same harness, so the comparison is honest.
In .NET 11, CoreCLR is the only runtime: the option to go back to Mono is already gone. .NET 10 still runs on Mono, but MAUI has its own support clock: .NET MAUI 10 goes out of support on 11 May 2027, six months after MAUI 11 ships. What ends then is the workload that keeps pace with new Xcode and Android SDK requirements, which is what the stores enforce. You can wait, but the window is eighteen months, not three years.
No. Moving a .NET MAUI app from Mono to CoreCLR does not change your application code, and it is not the Xamarin to .NET MAUI migration. The work lives in the build: AOT against ReadyToRun, trimming, the linker, and whichever dependencies quietly assumed Mono.
On our own .NET MAUI app, measurably: about 39% opening a screen with the runtime alone, about 34% on a warm data load, and about 25% off cold start with a startup profile. On yours, the skill projects it and week one of the upgrade measures it. Microsoft has acknowledged startup and size regressions on some large Android apps, which is why Horus baselines before promising anything.
The skill scores your project in minutes, at no cost, and the score sets the timeline. A clean project runs 1 to 2 weeks. Three to four when packages have no .NET 11 build or native bindings need rebuilding for arm64. Week one is a measured baseline you can stop at.
Yes. We multi target, so your .NET 10 build keeps shipping on Mono while the .NET 11 one is made green and measured. There is no Mono switch in .NET 11, so the fallback is the .NET 10 target and not a build flag.
iOS and Mac Catalyst move to CoreCLR in .NET 11 as well. Our published numbers are Android because custom startup profiles are Android only today, so that is where the largest measurable win lives. On iOS the gains come from the shared runtime and tooling rather than from a startup profile.
Xamarin to .NET MAUI is a different project, and one we have done for several clients, most recently Farmashop’s m-commerce app on iOS and Android, live for customers the whole way. We can take you there first, and to CoreCLR after.