Releases: CommunityToolkit/Maui
10.0.0: .NET 9 support is here!
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
- On macOS, open the Terminal and enter the following command:
- 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
-
All
CommunityToolkit.Maui.Behavior
s no longer automatically assignBehavior.BindingContext
for you- .NET MAUI Behaviors do not automatically inherit their parent's BindingContext (a breaking change from Xamarin.Forms)
- Going forward, the .NET MAUI Community Toolkit will follow this implementation of Behaviors
- We have updated all of our documentation to demonstrate this new functionality: https://learn.microsoft.com/dotnet/communitytoolkit/maui/behaviors/
- If your Behavior has a Binding, it must manually assign the BindingContext, like so:
-
.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
- Removes
- Remove
PopupService.ShowPopopAsync(TViewModel, CancellationToken)
- Removes
[Obsolete]
method - Use
PopupService.ShowPopupAsync<T>()
instead
- Removes
- Remove ability to subclass
BaseConverter<TFrom, TTo>
- Subclassing from
BaseConverter<TFrom, TTo>
is not supported - Support requires documentation and complete unit tests
- Subclassing from
- Remove ability to subclass
BaseConverter<TFrom, TTo, TParam>
- Subclassing from
BaseConverter<TFrom, TTo, TParam>
is not supported - Support requires documentation and complete unit tests
- Subclassing from
ValidationFlags.ValidateOnFocusing
renamed toValidationFlags.ValidateOnFocused
ValidationFlags.ValidateOnUnfocusing
renamed toValidationFlags.ValidateOnUnfocused
- In
CommunityToolkit.Maui.Camera
, addlinker.xml
fornet9.0-android
to avoid the Linker removingXamarin.AndroidX.Camera.Core
,Xamarin.AndroidX.Camera.Lifecycle
,Xamarin.AndroidX.Camera.Video
,Xamarin.AndroidX.Camera.View
, andXamarin.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 |
ILLinker Failing on iPhone Device (non-simulator) and MacCatalyst Release Builds:
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
<!-- Fixes Static Registrar causing Linker error: https://github.com/xamarin/xamarin-macios/blob/main/docs/managed-static-registrar.md -->
<Target Name="SelectStaticRegistrar" AfterTargets="SelectRegistrar">
<PropertyGroup Condition="'$(Registrar)' == 'managed-static'">
<Registrar>static</Registrar>
</PropertyGroup>
</Target>
What's Changed
- Fix for #2050 [DOC] Update Sample Application to demonstrate correct way to initialize Maps in MauiProgram.cs to support Maps on all platforms. by @mikelor in #2325
- Fixes PopupService scopes problem by @bdovaz in #2333
- Create locker.yml by @VladislavAntonyuk in #2348
- Version Toolkit assemblies alike the NuGet package version by @jfversluis in #2328
- Support .NET 9.0 by @bijington in #2215 as part of this PR, these issues were fixed:
- [BUG] Wrong item is registered when pressing an item in a CollectionView using TouchBehavior
- [BUG][Regression][8.0.1] TouchBevavior binding not working in a CollectionView
- [BUG] Camera View - Zoom does not work when application is built in release mode
- [BUG] Toast Faults on Windows
- ImageResourceConverter fails to display image - .NET 9
- [BUG] Warning when including a ValueConverter starting in .NET MAUI 9
- [BUG] Net 9 Android - StatusBar Color overriden on modal pages
- [BUG] .Net 9 Android MediaElement stops playing video
- [BUG] TouchBehavior crash
- [BUG] Camera view with .NET 9 is causing crash on Android
- [BUG] System.MissingMethodException No constructor found for CommunityToolkit.Maui.Behaviors.TouchBehavior+AccessibilityListener
- [BUG] Buttons not firing inside Layout that has a TouchBehavior
- [BUG] Media Element cannot be disconnected
New Contributors
Full Changelog: 9.1.1...10.0.0
v5.0.0 MediaElement: .NET 9 support
Breaking Changes
Major Breaking Changes
- .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
What's Changed
- Support .NET 9.0 by @bijington in #2215
- [BUG] .Net 9 Android MediaElement stops playing video
Full Changelog: 2.0.4-maps...5.0.0-mediaelement
v3.0.0 Maps: .NET 9 support is here!
Breaking Changes
Major Breaking Changes
- .NET 8 no longer supported
- Xcode 16.1 Required
Minor Breaking Changes
CommunityToolkit.Maui.Maps
is not trim safe
What's Changed
- Support .NET 9.0 by @bijington in #2215
Full Changelog: 2.0.4-maps...3.0.0-maps
v2.0.0 Camera: .NET 9 support is here!
Breaking Changes
Major Breaking Changes
-
.NET 8 no longer supported
-
Xcode 16.1 Required
-
Increase minimum supported versions of
CommunityToolkit.Maui.Camera
to 15.0:- iOS 15.0
- MacCatalyst 15.0
Minor Breaking Changes
- In
CommunityToolkit.Maui.Camera
, addlinker.xml
fornet9.0-android
to avoid the Linker removingXamarin.AndroidX.Camera.Core
,Xamarin.AndroidX.Camera.Lifecycle
,Xamarin.AndroidX.Camera.Video
,Xamarin.AndroidX.Camera.View
, andXamarin.AndroidX.Camera.Camera2
What's Changed
- Support .NET 9.0 by @bijington in #2215
- [BUG] Camera View - Zoom does not work when application is built in release mode
- [BUG] Camera view with .NET 9 is causing crash on Android
Full Changelog: 2.0.4-maps...2.0.0-camera
9.1.1: A handful of bugfixes before the new major release
.NET 9 is almost upon us, just before the new major release that we will be introduction as part of there, here are a couple of bugfixes that you can use today!
A big thank you to @Bensley96 for the very first contribution to this project 👏
Requirements
The following tools are now required for CommunityToolkit.Maui.:
- Xcode 16.0.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)
- Download/install .NET SDK v8.0.403
- 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
- On macOS, open the Terminal and enter the following command:
- 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": "8.0.403",
"rollForward": "latestMajor",
"allowPrerelease": false
}
}
What's Changed
- Ensure
TouchBehavior.LongPressCompleted
event fires whenLongPressCommand is null
by @brminnick in #2239 - Fix FileSaver Progress by @VladislavAntonyuk in #2277
- Implement the ability to Close a popup by @bijington in #1688
- Fix animation behavior hot reload by @BretJohnson in #2288
- [MacCatalyst] [iOS] Fix IconTintColorBehavior ImageButton Disappearing and Crash On Source Change by @Bensley96 in #2317
🧼 Housekeeping 🧽
- Bump xunit from 2.9.1 to 2.9.2 in /samples by @dependabot in #2234
- [Housekeeping] Update NuGet Packages by @brminnick in #2254
- [housekeeping] Automated PR to fix formatting errors by @github-actions in #2285
- [housekeeping] Automated PR to fix formatting errors by @github-actions in #2292
- [housekeeping] Automated PR to fix formatting errors by @github-actions in #2295
- [housekeeping] Automated PR to fix formatting errors by @github-actions in #2318
New Contributors
- @Bensley96 made their first contribution in #2317
Full Changelog: 9.1.0...9.1.1
2.0.4 Windows Maps: zooming in on the bugs!
Just a small update to make the zoom work when you use MoveToRegion
on the Map
! Thanks @mikelor!
Requirements
The following tools are now required for CommunityToolkit.Maui.Maps:
- Xcode 16.0.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)
- Download/install .NET SDK v8.0.403
- 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
- On macOS, open the Terminal and enter the following command:
- 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": "8.0.403",
"rollForward": "latestMajor",
"allowPrerelease": false
}
}
What's Changed
Full Changelog: 4.1.2-mediaelement...2.0.4-maps
v4.1.2 MediaElement: MediaElement works in popups & CarouselView!
Breaking Changes
The following tools are now required for CommunityToolkit.Maui.MediaElement:
- Xcode 16.0.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)
- Download/install .NET SDK v8.0.403
- 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
- On macOS, open the Terminal and enter the following command:
- 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": "8.0.403",
"rollForward": "latestMajor",
"allowPrerelease": false
}
}
What's Changed
- Refactor URLs and improve logging consistency by @ne0rrmatrix in #2228
- Fix Crash on iOS when using MediaElement inside a CarouselView (again) by @brminnick in #2245
- Fix Windows Autoplay bug by @ne0rrmatrix in #2238
- [Sample App] Add Second CarouselView to
MediaElementCarouselViewPage.xaml
by @brminnick in #2248 - [Sample app] Add MediaElementMultipleWindowsPage by @brminnick in #2250
- Add Popup Support for MediaElement on iOS + MacCatalyst by @brminnick in #2251
Full Changelog: 9.1.0...4.1.2-mediaelement
9.1.0: AOT support is here!
Required Updates
The following tools are now required for .NET MAUI Community Toolkit v9.1.0
- Xcode 16.0.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)
- Download/install .NET SDK v8.0.403
- 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
- On macOS, open the Terminal and enter the following command:
- 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": "8.0.403",
"rollForward": "latestMajor",
"allowPrerelease": false
}
}
What's Changed
- Fix memory leak on touchBehavior android by @pictos in #2113
- Make iOS StatusBarBehavior more robust and not throw exceptions by @jfversluis in #2128
- Removed spare Element checking in OnDetachedFrom by @rafalka in #2132
- Improve the usage experience with IsInRangeConverter in XAML by @GeorgeLeithead in #1983
- Add closing process when tapping the outer area of Popup by @cat0363 in #2081
- Remove DisableAutoCancel to fix Android auto focus by @Jake-Derrick in #2169
- Fix System.Math.ThrowMinMaxException by @BaY1251 in #2072
- Add missing setter for AnimateCommand by @BretJohnson in #2174
- resolve [bug] CollectionView SelectionMode.Multiple doesn't work with TouchBehavior by @alex3696 in #2172
- Add AOT Compatibility by @simonrozsival in #1820
- Change the calling conditions of Popup's Dismiss method on Android by @cat0363 in #2159
- Remove Popup and ContentPage from LogicalChildren when Popup is closed on iOS by @cat0363 in #2166
- Adding constraints to Popup View on iOS by @cat0363 in #1979
- Update ColorToStringConverter.shared.cs by @cl2raul66 in #2093
- Only set the popup contents parent if it hasn't already been set before by @bijington in #2199
- Changed to call Popup's MapOnClosed method by @cat0363 in #2202
Housekeeping 🧹
- [housekeeping] Automated PR to fix formatting errors by @github-actions in #2129
- [housekeeping] Automated PR to fix formatting errors by @github-actions in #2134
- Fix failing test on Pipelines. Test only fails on Pipelines. by @ne0rrmatrix in #2141
- [housekeeping] Automated PR to fix formatting errors by @github-actions in #2146
- [housekeeping] Automated PR to fix formatting errors by @github-actions in #2175
- Bump Microsoft.NET.Test.Sdk from 17.11.0 to 17.11.1 in /samples by @dependabot in #2180
- [housekeeping] Automated PR to fix formatting errors by @github-actions in #2183
- [housekeeping] Automated PR to fix formatting errors by @github-actions in #2192
- Bump FluentAssertions from 6.12.0 to 6.12.1 in /samples by @dependabot in #2194
- [housekeeping] Automated PR to fix formatting errors by @github-actions in #2198
-
- Make test sdk match the test runner on the Mac build agent by @bijington in #2200
- [housekeeping] Automated PR to fix formatting errors by @github-actions in #2207
New Contributors
Big thank you to our community contributors 👏
- @rafalka made their first contribution in #2132
- @Jake-Derrick made their first contribution in #2169
- @BaY1251 made their first contribution in #2072
- @alex3696 made their first contribution in #2172
- @simonrozsival made their first contribution in #1820
- @cl2raul66 made their first contribution in #2093
Full Changelog: 9.0.3...9.0.4
v4.1.1 MediaElement: AOT Compatible & bugfixes
Breaking Changes
The following tools are now required for CommunityToolkit.Maui.MediaElement:
- Xcode 16.0.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)
- Download/install .NET SDK v8.0.403
- 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
- On macOS, open the Terminal and enter the following command:
- 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": "8.0.403",
"rollForward": "latestMajor",
"allowPrerelease": false
}
}
What's Changed
- Fix MediaElement CTD on Windows by @ne0rrmatrix in #2144
- Fix Android App Exit On Back button pressed by @ne0rrmatrix in #2145
- Remove log messages that were confusing and not required. by @ne0rrmatrix in #2140
- Fix MediaElement CTD in Windows by @ne0rrmatrix in #2152
- Add AOT Compatibility by @simonrozsival in #1820
- Fix Crash on iOS when using MediaElement inside a CarouselView by @brminnick in #2187
- Update GetPageRoute to use double slashes in route format by @ne0rrmatrix in #2190
- Add CollectionView sample to MediaElement by @ne0rrmatrix in #2188
New Contributors
- @simonrozsival made their first contribution in #1820
Full Changelog: 4.1.0-mediaelement...4.1.1-mediaelement
v1.0.5 Camera: Small bugfixes we don't want to keep from you!
What's Changed
- Add a failure reason to the MediaCaptureFailedEventArgs by @bijington in #2085
- Remove DisableAutoCancel to fix Android auto focus by @Jake-Derrick in #2169
New Contributors
- @Jake-Derrick made their first contribution in #2169
Full Changelog: 1.0.4-camera...1.0.5-camera