Created by real people: Every post we publish is written by our team. AI plays only a small role for adjustments and polishing. We don’t aim for generic SEO content; our focus is on delivering authentic, high-quality value for the community.

Welcome .NET 10 to .NET MAUI apps

Getting started

The wait is over. We have been diving into the early previews of .NET 10 to understand what’s new, what’s being deprecated, and what’s being replaced, keeping a clear mental map of these changes. Without further delay, we will unpack some of the most important features or breaking changes of this version, ensuring you are ready to leverage the power of .NET 10.

XAML Global Namespaces

The new global xmlns is a state-of-the-art feature in this MAUI update. Its main purpose is to consolidate multiple namespace definitions into a single file, which we can call GlobalXmlns.cs. It is an advancement designed to clean up our projects by reducing boilerplate.

//GlobalXmlns.cs

using Microsoft.Maui.Controls;
using XmlnsDefinitionAttribute = Microsoft.Maui.Controls.XmlnsDefinitionAttribute;

[assembly: XmlnsDefinition( "http://schemas.microsoft.com/dotnet/maui/global", "HorusStudio.Maui.Material")]

How It Helps

It directly eliminates the need for developers to copy and paste numerous xmlns declarations at the top of every single XAML file. Once the namespaces are declared globally, you can remove the redundant lines from your files. The associated prefixes can also be removed.

Implicit Namespaces Integration

This feature works in conjunction with the global namespace, but it is technically independent. This change allows the compiler to automatically inject the default MAUI namespace. To use this feature, you must configure a specific MSBuild property in your .csproj or Directory.props file:

<PropertyGroup>
  <DefineConstants>$(DefineConstants);MauiAllowImplicitXmlnsDeclaration</DefineConstants>
   <EnablePreviewFeatures>true</EnablePreviewFeatures>
</PropertyGroup>

How It Helps

By applying this, you can completely omit the standard root xmlns and xmlns:x declarations from your XAML page, making your files cleaner right from the first line.

// Before .NET 10
<ContentPage 
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:material="clr-namespace:HorusStudio.Maui.MaterialDesignControls;assembly=HorusStudio.Maui.MaterialDesignControls"
    x:Class="HorusStudio.Maui.MaterialDesignControls.Sample.Pages.MainPage">
    <material:MaterialButton Text="Horus Studio" />
</ContentPage>

// .NET 10

<ContentPage
x:Class="HorusStudio.Maui.MaterialDesignControls.Sample.Pages.MainPage">
    <MaterialButton Text="Horus Studio" />
</ContentPage>

Shifting Focus to CollectionView

The most significant change affecting UI composition is the deprecation of legacy list controls. Specifically, ListView and TableView controls have been officially deprecated. Alongside them, the related cell types are also deprecated, including EntryCell, ImageCell, SwitchCell, TextCell, and ViewCell. The base Cell has not been deprecated, however, it should be considered obsolete.

How It Helps

This move is great for the long-term health of MAUI, letting its team dedicate more resources and time enhancing the CollectionView, rather than older controls.

MessagingCenter deprecation

The class MessagingCenter is now internal. Developers have the option to use WeakReferenceMessenger in the CommunityToolkit.MVVM library, which is the official recommendation. However, to ease this migration, a community contribution called Plugin.Maui.MessagingCenter was released as a replacement. This plugin uses the public APIs of MessagingCenter but leverages the performance of WeakReferenceMessenger from the Community Toolkit under the hood. This results in minimal code changes.

How It Helps

Similar to the previous point, this change lets the .NET MAUI team dedicate more resources to enhancing WeakReferenceMessenger.

.NET MAUI Method and Property Changes

Popup

The synchronous popup methods are deprecated. DisplayAlert and DisplayActionSheet are obsolete, yielding to DisplayAlertAsync and DisplayActionSheetAsync, respectively.

Animations

Several animation methods have also been marked as deprecated and replaced with new async counterparts. These include: FadeTo, LayoutTo, RelRotateTo, RelScaleTo, RotateTo, RotateXTo, RotateYTo, ScaleTo, ScaleXTo, ScaleYTo, and TranslateTo. These were replaced by their asynchronous counterparts, forcing asynchronous handling for UI animations.

Page

The IsBusy property on the Page type is now deprecated as well.

How It Helps

In the case of Popups and Animations, they were replaced by their asynchronous counterparts, forcing asynchronous UI handling. On the other hand, the IsBusy property is not removed completely; however, it will be marked as an obsolete control.

Wrapping Up

Strategically, these collective changes feel like more than just a cleanup routine; they represent a maturation of the framework. .NET 10 is clearly positioned as a performance-driven, stabilization release that lays the groundwork for future mobile application development.

With these performance oriented shifts, .NET MAUI is now far more robust and enterprise ready. Given that this version is backed by long-term support, we strongly recommend developers begin preparing their applications for migration. Aligning with this stable, modern architecture is the clear path to ensuring applications remain performant and maintainable for the future. The mandate now is to test these new features, provide crucial feedback, and prepare for seamless adoption of this release.

Thank you for reading

Stay tuned and subscribe to the Mobile Dev Experiences Blog, where we share strategies, insights, and real-world lessons in cross-platform mobile development.