github CommunityToolkit/Maui 10.0.0
10.0.0: .NET 9 support is here!

14 hours ago

It took some great effort from multiple people, but it's finally here! .NET 9 support for the .NET MAUI Community Toolkit!

Requirements

The following tools are now required for CommunityToolkit.Maui.:

  • Download/install .NET SDK v9.0.101
  • Install Xcode 16.1.0
    • Read the latest .NET MAUI Release wiki to always find the latest-supported version) of Xcode for .NET MAUI
    • We HIGHLY recommend using the open-source tool Xcodes to easily manage your installed Xcode versions
  • Update to the latest stable version of Visual Studio (or Jet Brains Rider)
  • After installing the latest stable .NET SDK, update to the latest stable version of the .NET MAUI workload:
    • On macOS, open the Terminal and enter the following command: sudo dotnet workload install maui
    • On Windows, open the command prompt (or Powershell) and enter the following command: dotnet workload install maui
  • Add a global.json file to your application with the following parameters to ensure you're not using a unsupported preview version of .NET (example below)
    • The .NET MAUI Community Toolkit does not support preview releases of .NET

global.json

{
  "sdk": {
    "version": "9.0.101", 
    "rollForward": "latestFeature",
    "allowPrerelease": false
  }
}

Breaking Changes

Major Breaking Changes

image
  • All CommunityToolkit.Maui.Behaviors no longer automatically assign Behavior.BindingContext for you

  • .NET 8 no longer supported

  • Xcode 16.1 Required

  • Increase minimum supported OS versions of CommunityToolkit.Maui.MediaElement

    • Android 26.0
    • iOS 15.0
    • MacCatalyst 15.0
  • Increase minimum supported versions of CommunityToolkit.Maui.Camera to 15.0:

    • iOS 15.0
    • MacCatalyst 15.0

Minor Breaking Changes

  • Expander is not trim safe
  • ValidationBehaviors are not trim safe
  • CommunityToolkit.Maui.Maps is not trim safe
  • Remove PopupService.ShowPopop(TViewModel)
    • Removes [Obsolete] method
    • Use PopupService.ShowPopup<T>() instead
  • Remove PopupService.ShowPopopAsync(TViewModel, CancellationToken)
    • Removes [Obsolete] method
    • Use PopupService.ShowPopupAsync<T>() instead
  • Remove ability to subclass BaseConverter<TFrom, TTo>
    • Subclassing from BaseConverter<TFrom, TTo> is not supported
    • Support requires documentation and complete unit tests
  • Remove ability to subclass BaseConverter<TFrom, TTo, TParam>
    • Subclassing from BaseConverter<TFrom, TTo, TParam> is not supported
    • Support requires documentation and complete unit tests
  • ValidationFlags.ValidateOnFocusing renamed to ValidationFlags.ValidateOnFocused
  • ValidationFlags.ValidateOnUnfocusing renamed to ValidationFlags.ValidateOnUnfocused
  • In CommunityToolkit.Maui.Camera, add linker.xml for net9.0-android to avoid the Linker removing Xamarin.AndroidX.Camera.Core, Xamarin.AndroidX.Camera.Lifecycle, Xamarin.AndroidX.Camera.Video, Xamarin.AndroidX.Camera.View, and Xamarin.AndroidX.Camera.Camera2
  • public static Task<bool> ShowKeyboardAsync(this ITextInput, CancellationToken) -> public static ValueTask<bool> ShowKeyboardAsync(this ITextInput, CancellationToken)
  • NuGet package will not support Microsoft.Maui.Controls .NET 10 until .NET 10 GA

And who doesn't love some numbers?! 📈

Analyzer Benchmarks

.NET 9.0 Mean Error StdDev Median Gen0 Gen1 Allocated
VerifyNoErrorsWhenUseMauiCommunityToolkit 8.863 ms 0.1748 ms 0.3240 ms 8.724 ms 62.5000 31.2500 1.59 MB
VerifyNoErrorsWhenUseMauiCommunityToolkitHasAdditionalWhitespace 8.695 ms 0.1654 ms 0.4358 ms 8.528 ms 62.5000 31.2500 1.59 MB
VerifyErrorsWhenMissingUseMauiCommunityToolkit 12.071 ms 0.3756 ms 1.0470 ms 11.546 ms 66.6667 - 2.29 MB
.NET 8.0 Mean Error StdDev Median Gen0 Allocated
VerifyNoErrorsWhenUseMauiCommunityToolkitMediaElement 9.763 ms 0.1928 ms 0.4765 ms 9.633 ms 31.2500 1.46 MB
VerifyNoErrorsWhenUseMauiCommunityToolkitMediaElementHasAdditonalWhitespace 9.565 ms 0.1862 ms 0.4637 ms 9.460 ms 31.2500 1.46 MB
VerifyErrorsWhenMissingUseMauiCommunityToolkitMediaElement 15.495 ms 0.3879 ms 1.0814 ms 15.058 ms 66.6667 2.24 MB

Mac Catalyst release build ILLinker failing

If you run into a build error while building your macOS/Mac Catalyst app, try opting out of the new type registrar. We did that for our sample app for the time being while this bug gets resolved. More information here: https://github.com/xamarin/xamarin-macios/wiki/.NET-9-release-notes#opting-out

What's Changed

New Contributors

Full Changelog: 9.1.1...10.0.0

Don't miss a new Maui release

NewReleases is sending notifications on new releases.