A few months ago I shared that .NET MAUI moves to CoreCLR in .NET 11, making CoreCLR the default runtime for your Android, iOS, and Mac Catalyst apps. That was Preview 4 and we have been heads down since then. Preview 6 marks the next milestone where CoreCLR is now the only runtime for .NET MAUI mobile apps. Here is where we are, and our request to you.
Where We Are Now
The runtime work is functionally complete on Android, iOS, and Mac Catalyst. Your app builds and runs on CoreCLR, the same runtime behind ASP.NET Core, your cloud services, and desktop .NET. We have worked closely with first party .NET MAUI apps validating our progress, and have received feedback from several others. Based on this we are confident about meeting our goals for .NET 11 GA and have accelerated our timeline.
I said in the first post that I would be direct about performance. This is what you can expect for your apps in .NET 11.
- iOS and Mac Catalyst are generally faster than Mono.
- Android is within 10 percent of Mono on startup and app size
Debugging and Hot Reload have come a long way since Preview 4. Debugging works across Visual Studio and Visual Studio Code, and Hot Reload works in the IDEs and with dotnet watch. A few scenarios are still in progress, including XAML Hot Reload and some iOS paths, so expect a rough edge here and there while we finish the work.
You also get full .NET diagnostics on device. The same dotnet-trace and dotnet-counters you use on server and desktop now work against your mobile app. And the foundations for NativeAOT on Android are landing, with a trimmable type map for Android interop enabled by default for NativeAOT builds.
Mono Steps Aside
As of .NET 11 Preview 6, CoreCLR is the only runtime for .NET MAUI mobile apps. We are no longer surfacing a separate Mono path for Android, iOS, or Mac Catalyst. When you build for net11.0-android, net11.0-ios, or net11.0-maccatalyst, you are on CoreCLR. The previous build property to select Mono has been removed.
Note
Blazor WebAssembly is not affected. WebAssembly continues to use Mono, and that is not changing in .NET 11.
Mono carried .NET onto mobile for more than fifteen years and made all of this possible. Its DNA lives on in the CoreCLR mobile support the same engineers helped build. This is the next chapter of that story, not its ending.
Test Your App Today
Our request is that you build your app using Preview 6 and run it now. The preview window is exactly when your feedback changes what we prioritize before GA in November.
Install the .NET 11 Preview 6 SDK and the .NET MAUI workload:
dotnet workload install maui
Then run through a quick validation:
- Build and publish in Release against
net11.0-android,net11.0-ios, ornet11.0-maccatalyst. - Measure cold and warm startup on real devices, and compare against your .NET 10 baseline.
- Compare package size, APK or AAB on Android and IPA on iOS.
- Exercise your full app flow, including navigation, data loading, and platform integrations.
- Check Hot Reload in your normal development loop.
- Validate third-party libraries, especially any that use reflection or dynamic code generation.
Don’t assume universal improvement, and don’t assume universal regression either. Measure your app, then tell us what you see.
Send Us Feedback
We want to know the successes and the concerns you have. Two ways to reach us:
- Take a short survey. https://nam.dcv.ms/Mwf0d6JHr0
— OR —
- File an issue with your app type, package size, startup timings, and a repro if you can. Use dotnet/android for Android or dotnet/macios for iOS and Mac Catalyst. You can also browse known issues under the CoreCLR label for Android and iOS and Mac Catalyst.
Every issue filed, every benchmark shared, and every “this works great” confirmation shapes the GA release. Install Preview 6, run your app, and let us know how it goes. We are making this transition together.
The post CoreCLR Progress and the Mono Timeline for .NET MAUI appeared first on .NET Blog.