Categories
.NET .NET 10 .NET 8 .NET 9 .NET MAUI Android Blazor C# Desktop Developer Getting Started Hybrid iOS macOS Mobile What's New Windows WinUI 3 Xamarin Xamarin.Forms XAML

What’s New in .NET MAUI 10 – A Comprehensive Overview

.NET 10, the next major version of .NET, will follow the annual release cadence. It is a Long-Term Support (LTS) release, set to launch during .NET Conf, an annual virtual developer event, scheduled from Nov 11-13, 2025. Support will last for 3 years from release.

This release is packed with a broad set of features. The theme is enhanced security, performance, diagnostics, and developer productivity.

Consult these articles on .NET 10 and C# 14 features:

The STS support policy has recently changed: from .NET 9 onwards, support will last for 2 years instead of 18 months. Support for both .NET 8 LTS and .NET 9 STS will continue until Nov 2026. Full details here.

It’s to be noted that .NET MAUI does not have concept of STS/LTS. Each major version is supported for 18 months after its release, so support for .NET MAUI 9 will be available only till mid-May, 2026. The official support policy is here.

To know more about the key features of .NET MAUI 9, consult this overview article.

Key Features:

In this article, we’ll explore the high-level features of .NET MAUI 10.

  • Global and Implicit Namespace
    • Clean and Concise XAML
    • Map CLR and XAML namespaces to a new Global MAUI namespace for easier type access without prefixes. No more messy root node.
      • To avoid name collisions, you can use a prefix.
    • Implicit works even without a namespace definition, taking it a step further. But still as a preview feature.
    • The only exception is the properties defined in the XAML 2009 Spec namespace, which use the x prefix. These include x:Class, x:DataType, and so on, as it is closely tied to the core logic.
    • In the featured image, the ViewModel type is from a different folder. That CLR namespace is part of the Global namespace definition. This inclusion allows it to be used like a local type without necessitating a prefix.
    • The All-in-One .NET MAUI Templates Pack v7.9 now supports the Global namespace feature for .NET MAUI 10 projects. For more details, consult this article.
    • This feature is discussed in a detailed article.
  • Binding support in CheckBox with Command and CommandParameter properties.
  • SwitchOffColor property – Spice up the app.
  • RefreshViewIsRefreshEnabled property
    • Granular control over the Refresh feature alone.
    • This is not the same as the IsEnabled property, which controls the view.
  • Nullable DatePicker and TimePicker
    • Clear the value by setting it to null.
  • SearchBarReturnType and SearchIconColor
  • Programmatic Control of Picker States via IsOpen property
    • Support for Opened and Closed events to define user logic
  • Intercept Web Requests – For BlazorWebView and HybridWebView
    • WebResourceRequested event
      • The event argument includes info about the requested resource. This includes Uri, Headers, Query Parameters, and Platform Arguments (if any). These help in handling it correctly.
  • HybridWebView – Initialization Events
    • WebViewInitializing
    • WebViewInitialized
    • Enables platform-specific customization before and after initialization.
  • Ability to call a JavaScript method without specifying a return value in HybridWebView using InvokeJavaScriptAsync().
  • Fine-tuned control over Window type in Desktop apps
    • IsActivated
    • IsMaximizable
    • IsMinimizable
  • async methods that return Task are suffixed with Async
    • DisplayAlertAsync and DisplayActionSheetAsync
    • All Animation methods like Rotation, Scaling, and Translation.
  • Control soft keyboard in SearchHandler
  • Source generation for XAML. (included in RC2)
    • Opt-in by defining this node as the project property.
    • <MauiXamlInflator>SourceGen</MauiXamlInflator>
  • The PointerGestureRecognizer now has a Buttons property to find the button that initiated the gesture. (included in RC2)
    • It is also included as part of PointerEventArgs.
  • The DisplayRotationStateTrigger to handle display rotation. (included in RC2)

App Startup:

  • Environment property for MauiAppBuilder
  • Aspire Integration
    • Consult the linked article to know more about this.
    • To support this, MauiAppBuilder type now implements the IHostApplicationBuilder interface.
    • AddServiceDefaults() builder extension method (defined to target the type that implements that interface).
      • Configures OpenTelemetry metrics and tracing.
      • Adds service discovery functionality.
      • Configures HttpClient to work with service discovery.
    • Template support for Aspire Integration is now released. Check out the What’s New in the All-in-One .NET MAUI Templates Pack v7.11 article for details.

Essentials:

  • GeolocationIsEnabled property checks if location services are on.
  • The MediaPicker now automatically handles EXIF info (metadata) when working with images.
    • Auto-Rotate Images based on EXIF info
    • Preserve EXIF Info for images picked by MediaPicker
    • Pick by Size by specifying Maximum Width and/or Height.
  • SpeechOptions type now includes a Rate property that controls the speech rate.
  • Vibration and HapticFeedbackIsSupported read-only property to detect platform support.
  • WebAuthenticator‘s AuthenticateAsync method overload now accepts a CancellationToken to cancel the operation programmatically.
  • Microphone permission for Windows (included in RC2)

What’s Made Public:

  • StackNavigationManager on Android
  • TabbedPageManager
  • ShadowTypeConverter
  • GridLengthTypeConverter (included in RC2)

Platform-Specific Changes:

iOS:

  • New CollectionView and CarouselView handlers are now default in .NET MAUI 10.
  • Modal as Popover on iOS and Mac Catalyst
    • Use platform-specific SetModalPopover* method to define the view.
    • Then use Navigation.PushModalAsync() to navigate.
  • Secondary Toolbar Items
    • Modern iOS pattern
    • Automatic detection based on the Order property
    • Priority ordering based on the Priority property
    • Platform positioning – Menu appears on the far right (or left when RTL is enabled)
    • Customizable icon – By overriding the protected virtual method
  • SafeArea Enhancements with TypeConverter support
    • Enhanced SafeAreaEdges at various controls like Layout, ContentPage, ContentView, Border, and ScrollView.
    • iOS SafeArea fixes including extra bottom space in ScrollView
    • Improved defaults for a more consistent behavior
  • Preview support for Apple Xcode 26 beta release on .NET MAUI 9. .NET MAUI 10 support will come in a future release.
  • Build Binding Projects on Windows faster without needing a remote Mac.
  • Support for Apple Xcode 26 is available in both .NET MAUI 9 stable and the .NET MAUI 10 preview. Refer to this article on how to update.

Android:

  • RippleColor property for Button and ImageButton
  • JavaScriptEnabled property for WebView
  • Videos hosted in a WebView can now be played full screen by including allowfullscreen in the iframe.
  • The native view of Editor and Entry view have changed from AppCompatEditText to MauiAppCompatEditText. This change adds support for the SelectionChanged event.
  • dotnet run support for .NET for Android projects
    • Only for native platform project and not for .NET MAUI
  • The default supported OS version in the templates is now Android 24, preventing runtime crashes from Java’s Default Interface Methods. Although the minimum supported version remains as 21.
  • Experimental support for CoreCLR runtime instead of Mono runtime.
  • Marshall methods enabled by default.
  • SafeAreaEdges support akin to iOS (included in RC2)
  • Bindings support for Android API 36.1. This will be an opt-in feature. (included in RC2)
    • Update the Target Framework as net10.0-android36.1

What’s Removed:

  • Accelerator and AcceleratorTypeConverter
    • Use KeyboardAccelerator instead
    • But ToolbarItem lacks functionality
  • ClickGestureRecognizer and ClickedEventArgs
    • Use TapGestureRecognizer instead
  • MessagingCenter
    • Use WeakReferenceMessenger from the MVVM Toolkit instead.

What’s Obsolete:

  • ListView
  • Cells
  • TableView
  • Cell (since used internally, not marked as obsolete, but consider it done)
    • Use CollectionView instead of the four above
  • FontImageExtension
    • Use FontImageSource instead
  • Page’s IsBusy property

Further Reading:

Happy coding. Stay connected as we continue to learn and share the experiences from this exciting journey of being a .NET developer.

2 replies on “What’s New in .NET MAUI 10 – A Comprehensive Overview”

Comments are closed.

Discover more from Developer Thoughts

Subscribe now to keep reading and get access to the full archive.

Continue reading