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