Loading spinner

Runtime upgrade

.NET 11

Upgrade your .NET MAUI app from Mono to CoreCLR!

.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

Measured, not claimed

Mono vs CoreCLR on our own app.

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.

Round · Startup

Both builds optimized, the honest one.

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

Round · After the app opens

Who loads 10,000 records faster?

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

Round · Opening a screen

Who opens a real XAML screen faster?

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

What a stopwatch cannot show you.

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.

And what it saves you later.

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.

Benchmarks run by Horus Studio on .NET 11 Preview 5, Release arm64, on physical Android devices. Opening a screen is provisional, five runs per case. The ~39% is the runtime alone, with the same XAML inflator on both sides. The ~47% in our Round 5 post also includes moving to the Source Generator and to RC 2. Last updated November 2026. To be re-measured on the .NET 11 release. Your results will vary with project size, device and startup path.

How we engage

Start by scoring your own project.

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.

Step one · No cost

coreclr-fit, the skill we assess with.

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.

Claude Code
GitHub Copilot
Cursor
Codex

Any coding agent that can run commands in your project. No account, no signup, no form.

CORECLR-FIT~/
› 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.

Core

Runtime upgrade.

1 to 2 weeks when the check is green. Longer when it is not, and your report says why.

  • We run the fix list your report already lists, on your devices.
  • Week one is a measured baseline: gains confirmed, or the work called off.
  • Side by side build: .NET 10 keeps shipping while .NET 11 is made green.
  • Native bindings and trimming fixed until Release is green on both platforms.

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.

Add on

Performance sprint.

2 to 3 weeks.

  • App level startup work: deferred views, lazy navigation, DI.
  • Source generated JSON on your data path, where the heaviest phase sits.
  • A startup profile recorded on device and fed to the AOT compiler, on Android.
  • Timing instrumentation left in your app, so your team can re-run every number themselves.

Runs after the upgrade, on CoreCLR already, or on your Mono app today.

Agent skill · no cost
1

The report comes back in the language you write in. Translate the prompt if you want it in yours.

Who gets the files?

Your agent · it downloads them itself
Download SKILL.md and pdf.md from https://skills.horus.com.uy/coreclr-fit/ with curl, one request per file, not a web fetch. Save them in a coreclr-fit folder inside your skills directory (.claude/skills, .agents/skills, .github/skills or .cursor/skills).

Then read SKILL.md in full and use it to score this project for .NET 11 / CoreCLR.

SKILL.md is all you need. Add pdf.md only if you want to export the report as a PDF. It stays here if you decide later.

Markdown, no scripts to run, nothing uploaded. It writes one file at your solution root, and keys and passwords stay out of the report. Read the skill first

2

Open your agent in your project folder and paste the prompt.

Save SKILL.md in a coreclr-fit folder at the root of your repo, with pdf.md next to it if you took it. Then open your agent in your project folder and paste this:

Paste into your agent
Read coreclr-fit/SKILL.md in full and use it to score this project for .NET 11 / CoreCLR.

Do not paste the file itself into the chat. It is too long, and the end gets cut without warning.

It will ask you a few questions on the way, the ones it cannot answer by reading the code.

When it’s done you get the score and a plain language summary in the chat, and the full report in coreclr-fit-<your-app>.md.

Ask for it as a PDF and it will put one in your Downloads. Take pdf.md from step 1 first.

A complete report ends with the Horus Studio sign-off. If yours stops earlier, your agent read only part of the skill. Go back to step 1 and let your agent read the saved file.

Want a second opinion? Send us the report and we will tell you what we would do first.

Questions

Frequently asked.

The eight questions that come up before anyone signs anything.

What does a Mono to CoreCLR upgrade actually take?
How does a Mono to CoreCLR upgrade run, stage by stage?
Do we have to upgrade from Mono to CoreCLR now?
Is moving a .NET MAUI app from Mono to CoreCLR a rewrite?
Will our .NET MAUI app actually get faster on CoreCLR?
How long does a Mono to CoreCLR upgrade take?
Can we keep shipping releases during the upgrade?
What about iOS, not just Android?
Still on Xamarin?

Then this is not your first move.

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.

Xamarin to .NET MAUI migration

Run the skill, then send us the score.

coreclr-fit writes a single file at your solution root. Send us that one file and we come back with what we would do, in what order and what it would cost, usually within four hours. No source code needs to leave your side, and we will sign an NDA first if you want one.