What's Changed
.NET MAUI 10.0.40 introduces significant improvements across all platforms with focus on quality, performance, and developer experience. This release includes 143 commits with various improvements, bug fixes, and enhancements.
AI
-
Improve write-tests-agent with best practices by @sheiksyedm in #33860
-
[Sample] Add Microsoft.Maui.Essentials.AI sample app with multi-agent workflow by @mattleibow in #33610
Ai Agents
-
Add FileLoggingProvider for MacCatalyst UI test logging by @PureWeen in #33518
-
Improve verify-tests-fail-without-fix Skill by @kubaflo in #33513
-
Add find-reviewable-pr skill from existing PR by @PureWeen via @Copilot in #33349
-
Add learn-from-pr agent and enhance skills framework structure by @PureWeen via @Copilot in #33579
-
Fix PS1 scripts for Windows compatibility by @PureWeen in #33679
-
Improve skills and scripts for better agent workflows by @PureWeen in #33699
-
[XEXPR] Refactor test skills/agents to dispatcher pattern by @PureWeen via @Copilot in #33721
-
Add ai-summary-comment skill for automated PR review comments by @kubaflo in #33585
-
Add PR label management to test verification skill by @kubaflo in #33739
-
ai-summary-comment: Simplify PR finalize to two collapsible sections by @kubaflo in #33771
-
Improve issue-triage skill: Add gh CLI checks and fix workflow by @PureWeen in #33750
-
[ai] Add integration test runner skill by @rmarinho in #33654
-
Improve PR Agent Gate verification to prevent result fabrication by @PureWeen in #33806
-
Improve test report formatting and summary extraction by @kubaflo in #33793
-
Improve try-fix comment parsing and summary by @kubaflo in #33794
-
Enhance PR agent: multi-model workflow, blocker handling, shared rules extraction by @PureWeen in #33813
-
Enhance pr-finalize skill with code review phase and safety rules by @PureWeen in #33861
-
Remove Phase 2 (Tests) from PR agent workflow by @kubaflo in #33905
Blazor
-
Fix for BlazorWebView Back Navigation Issues on Android 13+ After Predictive Back Gesture Changes by @SuthiYuvaraj in #33213
BlazorWebView
- Add doc comment explaining EnableDefaultCssItems in Blazor templates by @akoeplinger in #33845
Button
Checkbox
-
[Android] Implement material3 support for CheckBox by @HarishwaranVijayakumar in #33339
π§ Fixes
CollectionView
- [Android] Fixed EmptyView doesnβt display when CollectionView is placed inside a VerticalStackLayout by @NanthiniMahalingam in #33134
-
[Android] Fix for CollectionView.EmptyView does not remeasure its height when the parent layout changes dynamically, causing incorrect sizing. by @BagavathiPerumal in #33559
-
[Android] Fixed CollectionView reordering last item by @vitalii-vov in #17825
Core Lifecycle
-
[Android] Skip DisposeWindowScope on Destroying to prevent ObjectDisposedException by @praveenkumarkarunanithi in #33765
DateTimePicker
Dialogalert
-
[iOS 26] Fix DisplayPromptAsync maxLength not enforced due to new multi-range delegate by @Shalini-Ashokan in #33616
Docs
-
Update build status badge in README.md by @rmarinho in #33503
-
Update build status links in README.md by @rmarinho in #33548
-
Migrate Core types API docs from external XML to inline by @jfversluis in #33631
-
Migrate Shell namespace API docs from external XML to inline by @jfversluis in #33628
-
Migrate Shapes namespace API docs from external XML to inline by @jfversluis in #33627
-
Migrate PlatformConfiguration API docs from external XML to inline by @jfversluis in #33629
-
Migrate Controls API docs from external XML to inline by @jfversluis in #33641
-
Delete remaining external XML documentation files by @jfversluis in #33663
-
Add API documentation to Maps and fix TimeChangedEventArgs placeholders by @jfversluis in #33666
-
Add API documentation to Controls.Foldable and enable CS1591 by @jfversluis in #33667
-
Add XML documentation to Controls.Xaml and enable CS1591 by @jfversluis in #33669
-
Enable CS1591 enforcement on projects with 100% doc coverage by @jfversluis in #33675
-
Add XML documentation to Controls.Core.Design and enable CS1591 by @jfversluis in #33680
-
readme tweaks by @davidortinau in #33830
Essentials
-
[Windows]Fix NullReferenceException in OpenReadAsync for FileResult created with full path by @devanathan-vaithiyanathan in #28238
Flyout
Fonts
- Hide obsolete FontSize values from IDE autocomplete by @noiseonwires in #33694
Gestures
-
Fix CustomSwipeControl sample - add missing event handler by @StephaneDelcroix in #33880
-
Android pan fixes by @BurningLights in #21547
Image
-
Fix Glide IllegalArgumentException in MauiCustomTarget.clear() for destroyed activities by @jfversluis via @Copilot in #29780
Label
-
[Android] Fix for Label WordWrap width issue causing HorizontalOptions misalignment by @praveenkumarkarunanithi in #33281
-
Fix to Improve Flyout Accessibility by Adjusting UITableViewController Labels by @SuthiYuvaraj in #31619
-
Update PreReleaseVersionLabel to 'servicing' by @PureWeen in #34001
Mediapicker
-
[Regression][iOS] Fix MediaPicker PickPhotosAsync getting file name in contentType property by @devanathan-vaithiyanathan in #33390
Navigation
-
Fix handler not disconnected when removing non visible pages using RemovePage() by @Vignesh-SF3580 in #32289
-
Shell: Add duplicate route validation for sibling elements by @SubhikshaSf4851 in #32296
Packaging
Picker
-
[Android] Fix Picker IsOpen not reset when picker is dismissed by @devanathan-vaithiyanathan in #33332
-
Improved Unfocus support for Picker on Mac Catalyst by @kubaflo in #33127
SafeArea
-
[Android] Fixed SafeAreaEdges issue during Shell Navigation Transition by @NirmalKumarYuvaraj in #33788
π§ Fixes
- SafeAreaEdges works correctly only on the first tab in Shell. Other tabs have content colliding with the display cutout in the landscape mode.
- Label Overlapped by Android Status Bar When Using SafeAreaEdges="Container" in .NET MAUI
- [MAUI 10] Layout breaks on first navigation (Shell // route) until soft keyboard appears/disappears (Android + iOS)
- Continuous GC logs on TabbedPage in MAUI 10.0.30
-
[iOS] SafeArea: Return Empty for non-ISafeAreaView views (opt-in model) by @praveenkumarkarunanithi in #33526
Shapes
-
[XSG] Fix inline StyleSheet CSS content with quotes by @StephaneDelcroix in #33874
Shell
-
[iOS & Catalyst ] Fixed IsEnabled property should work on Tabs by @SubhikshaSf4851 in #33369
-
[iOS,Windows] Fix navigation bar colors not resetting when switching ShellContent by @Vignesh-SF3580 in #33228
-
[iOS] Fixed Shell navigation on search handler suggestion selection by @SubhikshaSf4851 in #33406
-
[iOS 26 & Catalyst 26] [Follow-up PR] Fixed IsEnabled behavior on Tabs by @SubhikshaSf4851 in #33337
-
[iOS] Fix ObjectDisposedException in TraitCollectionDidChange on window disposal by @jeremy-visionaid in #33353
-
[Issue-Resolver] Explicit fallback for BackButtonBehavior lookup by @kubaflo in #33204
Templates
-
Update PatchVersion and Bug Report template by @PureWeen in #33521
-
[Templates] Add semantic description to CategoryChart for accessibility by @kubaflo in #33617
-
Fix VoiceOver doesnot announces the State of the ComboBox by @SuthiYuvaraj in #32286
-
[Templates] Remove redundant SemanticProperties.Description attribute by @kubaflo in #33621
Theme
-
[Windows] Fix runtime theme update for controls and TitleBar by @Tamilarasan-Paranthaman in #31714
π§ Fixes
- [Windows][MacOS?] Change title bar color when switching light/dark theme at runtime
- OS system components ignore app theme
- [Mac Catalyst][Windows] TitleBar not reacting on UserAppTheme changes
- In dark theme "Back" and "hamburger" button icon color contrast with background color is less than 3:1: A11y_.NET maui_User can get all the insights of Dashboard_Non text Contrast
Switchis invisible onPointOverwhen theme has changed
Theming
-
Fix SourceGen missing diagnostic for keyless ResourceDictionary items by @rmarinho in #33708
-
[XSG] Fix Style Setters referencing source-generated bindable properties by @simonrozsival in #33562
Titlebar
-
[Windows] Fix TitleBar.IsVisible = false the caption buttons become unresponsive by @devanathan-vaithiyanathan in #33256
WebView
-
Fix WebView JavaScript string escaping for backslashes and quotes by @StephaneDelcroix in #33726
-
Skip HybridWebView interception test on iOS/MacCatalyst by @rmarinho via @Copilot in #33981
Xaml
-
[XSG][BindingSourceGen] Add support for CommunityToolkit.Mvvm ObservablePropertyAttribute by @simonrozsival via @Copilot in #33028
-
[XSG] Fix invalid code generation for Setter with OnPlatform without Default by @StephaneDelcroix in #33681
-
[XEXPR] [Experimental] XAML C# Expressions by @StephaneDelcroix in #33693
-
[XSG] Fix NaN value in XAML generating invalid code by @StephaneDelcroix in #33533
-
Enable XAML Source Generator on ManualTests project by @StephaneDelcroix in #33036
-
[XSG] Fix expression binding TProperty type resolution for mismatched source/target types by @StephaneDelcroix in #33994
-
Fix XSG crash when Style Setter uses markup extension with source-generated BindableProperty by @simonrozsival in #33836
π§ Infrastructure (16)
- Localized file check-in by OneLocBuild Task: Build definition ID 13330: Build ID 13117289 by @dotnet-bot in #33580
- [main] Update dependencies from dotnet/xharness by @dotnet-maestro[bot] in #33588
- Restore OfficialBuildId for proper CI versioning by @jfversluis in #33209
- [ci] Move to use arm64 pool by @rmarinho in #33674
- Localized file check-in by OneLocBuild Task: Build definition ID 13330: Build ID 13165290 by @dotnet-bot in #33704
- Fix Android build failure by explicitly specifying build-tools 36.0.0 by @PureWeen via @Copilot in #33727
- [ci] MOVE to ACES dnceng by @rmarinho in #33723
- [ci] Don t try push results if they dont exist by @rmarinho in #33789
- [ci] Use AcesShared on uitests by @rmarinho in #33790
- [ci] Fix public vs internal aces by @rmarinho in #33816
- Localized file check-in by OneLocBuild Task: Build definition ID 13330: Build ID 13210800 by @dotnet-bot in #33807
- Fix build.ps1 to propagate exit codes by @PureWeen in #33896
- [ci] Fix the correct script by @rmarinho in #33941
- Add XcodeProject build system with cross-platform CI support by @mattleibow in #33541
- [ci] Run devicetests on ACES by @rmarinho in #33957
- [main] Update dependencies from dotnet/xharness by @dotnet-maestro[bot] in #33946
π§ͺ Testing (14)
-
[Testing] Disabled the flaky issues by @TamilarasanSF4853 in #33441
-
[ci] Add support for running device and uitests on internal by @rmarinho in #33494
-
[tests] Ignore failing test Issue18751Test on android by @rmarinho in #33620
-
[Testing] Fix for flaky test(SafeAreaShouldWorkOnAllShellTabs) in CI by @HarishKumarSF4517 in #33662
-
[testing] Test skipping tests on iOS 26 by @rmarinho in #33671
-
[testing] Add xaml and resizetizer tests to run on helix by @rmarinho in #33567
-
Fixed the 18751 and 18896 flaky tests by @Ahamed-Ali in #33737
-
Skip flaky BlazorWebView header interception test by @rmarinho in #33928
-
[Testing] Update iOS UITest baseline screenshots for ACES CI environment by @TamilarasanSF4853 in #33910
-
[Testing] Fixed Test case failure in PR 33779 - [02/02/2026] Candidate by @HarishKumarSF4517 in #33838
π¦ Other (26)
-
[main] LEGO: Pull request from lego/hb_aa4ddd3b-37ca-4d87-a058-1e95d9ca2d38_20251119194205808 to net10.0 by @github-actions[bot] in #33565
-
Migrate test cases from WhatToEat app by @CathyZhu0110 in #33440
-
Convert integration tests from NUnit to XUnit by @PureWeen via @Copilot in #33573
-
Clean up the -dev solution by @mattleibow in #33578
-
BindableObject micro-optimizations by @albyrock87 in #33460
-
[testing] Add iOS26 tests 26 - On Helix by @rmarinho in #33004
-
Apply Integration Tests logging fixes from PR #33624 by @PureWeen via @Copilot in #33638
-
[Windows] Migrate device tests to Helix queues by @PureWeen in #33328
-
[XSG] Improve diagnostic reporting during binding compilation by @simonrozsival via @Copilot in #32905
-
[Testing] Fixed Test case failure in PR 33574 - [01/19/2026] Candidate - 1 by @TamilarasanSF4853 in #33602
-
[tests] Fix for device tests internal runs by @rmarinho in #33710
-
Fix flaky UI tests with retryTimeout, crash recovery, and improved diagnostics by @PureWeen in #33705
-
try-fix skill: Apply multi-model review recommendations by @PureWeen via @Copilot in #33762
-
LEGO: Pull request from lego/hb_7241b85a-f216-4d55-a9fa-d8030c736df5_20260130203640718 to main by @csigs in #33803
-
Fix iOS integration test simulator boot race condition by @PureWeen in #33884
-
Fix Android emulator boot: launch once in fixture, not per-test by @PureWeen in #33901
-
Remove InternalsVisibleTo attributes for .NET MAUI Community Toolkit by @jfversluis via @Copilot in #33442
-
Fixed: Missing diagnostic in SourceGen when Setter references non-BindableProperty - Candidate Failure Feb 2nd by @Ahamed-Ali in #33854
-
Fall back to software acceleration when HVF is unavailable by @PureWeen in #33988
-
[XSG] Fix RelativeSource AncestorType x:Type resolution by @StephaneDelcroix in #33882
-
[XSG] Improve error message for missing event handlers by @StephaneDelcroix in #33881
-
[XSG] Handle NaN values in ThicknessConverter by @StephaneDelcroix in #33872
-
[XSG] Fix SourceGen typed binding setter for ObservableProperty by @StephaneDelcroix in #33914