.NET MAUI in .NET 10 RC 1 - Release Notes

September 9, 2025 · View on GitHub

Here's a summary of what's new in .NET MAUI in this release:

.NET MAUI updates in .NET 10:

Diagnostics

We've added comprehensive diagnostics and metrics tracking for .NET MAUI applications, focusing on layout performance monitoring with an extensible architecture for future observability needs.

.NET Aspire dashboard showing several .NET MAUI traces

.NET Aspire dashboard showing trace detail for an element

Core Diagnostics Infrastructure:

  • ActivitySource: "Microsoft.Maui" - Tracks layout operations with detailed timing
  • Metrics: "Microsoft.Maui" - Records counters and histograms for performance analysis
  • Feature Switch: System.Diagnostics.Metrics.Meter.IsSupported - Runtime enable/disable for AOT/trimming

Layout Performance Tracking:

  • Instruments IView.Measure() and IView.Arrange() operations
  • Records timing data and operation counts with rich contextual tags
  • Zero-allocation struct-based instrumentation using using pattern
Metric NameTypeDescription
maui.layout.measure_countCounterNumber of measure operations
maui.layout.measure_durationHistogramTime spent measuring (ns)
maui.layout.arrange_countCounterNumber of arrange operations
maui.layout.arrange_durationHistogramTime spent arranging (ns)

See pull request #31058 for more details.

HybridWebView events

Adds initialization events to HybridWebView following the same pattern as BlazorWebView, enabling platform-specific customization before and after initialization.

New Events

  • WebViewInitializing - Fired before WebView creation, allows configuration of platform-specific initialization parameters
  • WebViewInitialized - Fired after WebView creation, provides access to the native WebView instance and settings

RefreshView IsRefreshEnabled

Added IsRefreshEnabled property to be distinct from IsEnabled and make the behavior consistent across platforms.

<RefreshView IsRefreshEnabled="false">
    <!-- Login form remains usable -->
    <StackLayout>
        <Entry Placeholder="Username" />
        <Entry Placeholder="Password" />
        <Button Text="Login" />
    </StackLayout>
</RefreshView>

Deprecated APIs

Compressed layout APIs are now marked obsolete. Avoid unnecessary layout nesting instead.

Performance and IPerformanceProvider types are marked obsolete.

.NET for Android

This release includes continued integration with multiple .NET runtimes, and several bug fixes.

(Experimental) CoreCLR

Enables Android apps to run on the CoreCLR runtime (instead of Mono). To use it, add the following to your project file for Android builds:

<!-- Use CoreCLR on Android -->
<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">
    <UseMonoRuntime>false</UseMonoRuntime>
</PropertyGroup>

Please try this in your applications and report any issues; when filing feedback, state that you are using UseMonoRuntime=false. Expect that application size is currently larger than with Mono and that debugging and some runtime diagnostics are not fully functional yet; these areas are actively being improved. This is an experimental feature and not intended for production use.

A detailed list of Android changes can be found on the dotnet/android GitHub releases.

.NET for iOS, Mac Catalyst, macOS, tvOS

This release includes continued integration with multiple .NET runtimes, and several bug fixes.

Contributors

Thank you contributors! ❤️

@Ahamed-Ali, @anandhan-rajagopal, @Dhivya-SF4094, @davidnguyen-tech, @emaf, @grendello, @HarishwaranVijayakumar, @jfversluis, @jonathanpeppers, @jsuarezruiz, @kubaflo, @LogishaSelvarajSF4525, @mattleibow, @NafeelaNazhir, @NanthiniMahalingam, @nivetha-nagalingam, @PaulAndersonS, @pictos, @postalservice14, @prakashKannanSf3972, @PureWeen, @rmarinho, @rolfbjarne, @sheiksyedm, @SuthiYuvaraj, @Tamilarasan-Paranthaman, and @tj-devel709.