.NET MAUI 9.0.90 SR9 Release Notes
What's Changed
This service release includes 141+ commits focusing on testing improvements, infrastructure updates, and critical product fixes for the .NET MAUI 9.0 service release 9.
MAUI Product Fixes
- MauiScrollView resets ContentOffset on first layout pass - fix by @kubaflo in #30453 - Fixes #30147
- [iOS][Shell]Tab becomes blank after specific navigation pattern - fix by @kubaflo in #29825 - Fixes #29798, #30280
- [iOS] Assign PresentationController.Delegate to handle swipe-to-dismiss fallback by @bhavanesh2001 in #30289 - Fixes #30282
- [iOS] Fix for CarouselView ItemSpacing property in ItemsLayout not working with CV2 by @Ahamed-Ali in #27056 - Fixes #27025
- [Android] Fix OnIdiom threading issue by removing using statements in DeviceInfo by @Copilot in #30288 - Fixes #29853
- Skip useless handler mappings calls while connecting by @albyrock87 in #27259 - Fixes #17303
- Update Permissions.ios.tvos.watchos.cs by @kubaflo in #29180 - Fixes #29172
- [Android] Controls Disappear When WebView is Used with Hardware Acceleration Disabled by @praveenkumarkarunanithi in #28934 - Fixes #28902
- Fix for Handler not disconnected when removing a non-visible page from the navigation stack by @praveenkumarkarunanithi in #30049 - Fixes #29923
- [Android] Removing outdated menu items as Android can delete them after switching activities by @VitalyKnyazev in #28767 - Fixes #24357
- [iOS] SwipeView Closes when Content Changes - fix by @kubaflo in #29088 - Fixes #29086
- [Android, iOS] Fix for the Resize method does not dispose the original image, even when disposeOriginal is set to true by @SyedAbdulAzeemSF4852 in #29936 - Fixes #21886
- Revert "Fix up relevant CA1416 warnings - Set 3 (#26751)" by @PureWeen in #30421 - Fixes #30426, #30350
- [main] Revert "[Android, iOS] Dynamically setting SearchHandler Query property does not update text in the search box (#28400)" by @PureWeen in #30250
- Reinstate iOS13+ guards by @jfversluis in #30268 - Fixes #30266
- Fix CV1 GridItemsLayout centering single item AND Fix Empty view not resizing when bounds change by @albyrock87 in #29639 - Fixes #29634, #29595
- Revert - Fixed the Label not sized correctly on Android by @Ahamed-Ali in #30023
- [Android] Prevent Picker from Gaining Focus on Touch by @bhavanesh2001 in #29068 - Fixes #19739, #15394, #24862, #21704, #13503, #8546, #28121
- [iOS, Mac] Fix for downsized image retaining original dimensions in GraphicsView by @SyedAbdulAzeemSF4852 in #30007 - Fixes #30006
- Weak subscription to CanExecuteChange events by @PureWeen in #29837 - Fixes #16124
- Revert "Fixes Setting BackgroundColor to null does not actually changes BackgroundColor #22914 (#22917)" by @mattleibow in #30031 - Fixes #30024
- [Windows] Fixed runtime update issue for SearchBar PlaceholderColor and BackgroundColor by @Tamilarasan-Paranthaman in #29965 - Fixes #29962
- ScrollView's Background on iOS by @kubaflo in #25541 - Fixes #24016
- Update SetterSpecificity.cs Remove Extra Line From Bad Merge by @PureWeen in #29987
- Add defensive IsAlive check to Android ViewExtensions.OnUnloaded by @jfversluis in #29934 - Fixes #28051
- Optimize converters for GridLength, ColumnDefinition, and RowDefinition by @symbiogenesis in #20048
- Enabled-MultiTouch-iOS by @prakashKannanSf3972 in #29895 - Fixes #29461
- [android] Fallback to default icons in SearchHandler by @aheubusch in #25067
- Fixed the picker title's color by @kubaflo in #23075 - Fixes #16737
- Fixes Setting BackgroundColor to null does not actually changes BackgroundColor #22914 by @Jon2G in #22917 - Fixes #22914, #19576
- [iOS] CarouselView with CarouselViewHandler2 make app crash when Loop="False" and user scroll to the last position - fix by @kubaflo in #26868 - Fixes #26863
- [Windows] Implemented the Resize and Downsize functions in the W2DImage class by @HarishwaranVijayakumar in #29138 - Fixes #16767
- [iOS] Fix SwipeView programmatic open when background color is set by @Shalini-Ashokan in #29765 - Fixes #17204
- [iOS] FormattedText with text color causes stack overflow - fix by @kubaflo in #29874 - Fixes #29851
- [iOS] Fix AdaptiveTrigger not working as expected by @jsuarezruiz in #20987 - Fixes #19197
- Templated indicator view - improvements by @kubaflo in #25642 - Fixes #25598
- [iOS] Fix for Flyout title is not broken over multiple lines when you rotate your screen by @BagavathiPerumal in #29171 - Fixes #15154
- [Windows] Fix for Assigning null to the SelectedItem of the CollectionView in the SelectionChanged event does not clear the selection by @SyedAbdulAzeemSF4852 in #29288 - Fixes #10025
- Fix TapCoordinates method in Catalyst by @jsuarezruiz in #29775 - Fixes #19754
- Fixed ItemSpacing on CarouselView resizes items [Android] by @Dhivya-SF4094 in #29796 - Fixes #29609
- Perf : ButtonContentTypeConverter now using InvariantCulture to parse… by @jonathanantoine in #25393
- Update the comment for the test properties by @mattleibow in #27306
- ToolbarItem behavior with ImageSource iOS - fix by @kubaflo in #28833 - Fixes #28822
- [Android] Fixed Button Shadow Color Transparency Not Applied Correctly by @NanthiniMahalingam in #29371 - Fixes #29325
- Don't call NSAttributedString with HTML from a background thread by @kubaflo in #26153 - Fixes #25946
Dependency Updates
- Update Versions.props NET9 SR9 servicing bump by @PureWeen in #30519
- Update Versions.props 9.0.90 SR9 versioning by @PureWeen in #29909
- Bump to 1.7.250606001 of WindowsAppSDK by @PureWeen in #29915
- Update MicrosoftCodeAnalysisPublicApiAnalyzers and MicrosoftCodeAnalysisBannedApiAnalyzers to 4.14.0 by @Copilot in #30213
Testing
- [Testing] Disabling the Essentials Geocoding failing tests on Windows by @anandhan-rajagopal in #30508
- Fixed Test case(Issue28798) failure in PR 30306 - [6/30/2025] Candidate by @anandhan-rajagopal in #30413
- Fixed Test case failure in PR 30306 - [6/30/2025] Candidate by @anandhan-rajagopal in #30315
- [Testing] Feature Matrix UITest Cases for Switch Control by @jsuarezruiz in #29950
- [Testing] Feature matrix UITest Cases for Entry Control by @jsuarezruiz in #30033
- [Testing] Migration of Compatibility.Core platform-specific unit tests into device tests - 6 by @jsuarezruiz in #28399
- [Testing] Feature matrix UITest Cases for Image Control by @jsuarezruiz in #29832
- [Testing] Fix for flaky device test BlazorWebViewUsesStartPath on Windows by @jsuarezruiz in #29966
- [Testing] Feature matrix UITest Cases for ImageButton Control by @jsuarezruiz in #29968
- [Testing] Feature Matrix UITest Cases for ProgressBar Control by @jsuarezruiz in #29980
- [Testing] Add Validation Test For Issue28051 On Android by @jsuarezruiz in #30026
- [Testing] Fixed Test case failure in PR 30115 - [2025/06/23] Candidate by @anandhan-rajagopal in #30136
- [Testing] Enable HandlerDoesNotLeak for Button and ProgressBar by @jsuarezruiz in #29896
- [Testing] Feature matrix UITest Cases for BoxView Control by @jsuarezruiz in #29808
- [Testing] Feature Matrix UITest Cases for Button by @jsuarezruiz in #29803
- [Testing] Re-Fix for flaky UITests RotatingCollectionViewWithHTMLShouldNotHangOrCrash in CI that occasionally fails by @anandhan-rajagopal in #30239
- [Testing] Fix ADB Key Generation Failure on CI by @jsuarezruiz in #30092
- [Testing] Feature Matrix UITest Cases for RadioButton by @jsuarezruiz in #29744
- [Testing] Feature Matrix UITest Cases for CollectionView ItemsSource Feature by @jsuarezruiz in #29322
- [Testing] Feature Matrix UITest Cases for Stepper by @jsuarezruiz in #29731
- [Testing] Feature Matrix UITest Cases for CheckBox Control by @jsuarezruiz in #29739
- [Testing] Updated FlakyTestAttribute to allow retries by @jsuarezruiz in #27772
- [Testing] Recover the uitest-build task on Android cake by @jsuarezruiz in #28452
- Update Test HostApp to not use TableView by @jsuarezruiz in #28830
- Changes in provisioning to fix fails installing Appium on Linux by @jsuarezruiz in #29105
- Add retries to all tests related to checking for weak references by @PureWeen in #29957
- Fix for flaky tests by @anandhan-rajagopal in #30088
- Update Issue25946.xaml by @anandhan-rajagopal in #30025
- Fixed Test case failure in PR 26153 - iOS by @anandhan-rajagopal in #29906
- Fixed Test case failure in PR 25642 - snapshots by @anandhan-rajagopal in #29881
- Update Issue8870.cs by @anandhan-rajagopal in #30200
Docs
- Clean up unreferenced API Docs XML files by @jfversluis in #30141
- Update README.md with link to .NET MAUI for .NET 10 by @Copilot in #29578
- Add code formatting instructions to GitHub Copilot development guidelines by @Copilot in #30230
Housekeeping
- [ci] Fix issue with duplicate License on msi by @github-actions[bot] in #30569
- [ci] Fix issue with duplicate License on msi by @github-actions[bot] in #30568
- Merge June 30th Candidate into SR9 by @PureWeen in #30523
- [ci] Update dotnet eng arcade by @rmarinho in #30498
- [main] Workaround REVOCATION in .NET 10 by setting DOTNET_SYSTEM_NET_SECURITY_NOREVOCATIONCHECKBYDEFAULT by @github-actions[bot] in #30514
- [create-pull-request] automated change by @github-actions[bot] in #30232
- [create-pull-request] automated change by @github-actions[bot] in #30184
- [create-pull-request] automated change by @github-actions[bot] in #30150
- [ci] Remove reboot by @rmarinho in #30497
- [ci] Use new maui release variable group by @rmarinho in #30146
- Fix Appium Swipe actions on Mac by @jsuarezruiz in #30436
- [ci] Fix provision profiles by @rmarinho in #30470
- [ci] Small pipelines fixes by @rmarinho in #30419
- Pass tsaUploadEnabled along by @mattleibow in #30423
- [Copilot] Pull out copilot instructions updates from PR #30337 by @Copilot in #30396
- [ci] Add variable group to yaml and not on azdo UI by @rmarinho in #30391
- Clean up .NET versions in bug report template by @jfversluis in #30343
- [ci] Revert changes pushing with dotnet key by @rmarinho in #30346
- Update bug-report.yml 9.0.81 SR8.1 by @PureWeen in #30335
- Extract enhanced copilot instructions from PR #30300 by @Copilot in #30304
- Update bug-report.yml with 9.0.80 by @PureWeen in #30326
- Don't generate the typescript file locally by @mattleibow in #30258
- [copilot] Extract copilot instructions updates from PR 30291 for handling existing PRs by @Copilot in #30298
- [2025/06/23] Candidate - In Flight Branch by @PureWeen in #30115
- [housekeeping] Dispatch MainPage reset to UI thread to prevent crash in HostApp by @bhavanesh2001 in #30272
- Update Controls.TestCases.HostApp.csproj by @HarishKumarSF4517 in #30124
- [create-pull-request] automated change by @github-actions[bot] in #30078
- [create-pull-request] automated change by @github-actions[bot] in #30043
- [create-pull-request] automated change by @github-actions[bot] in #30019
- [houekeeping] update namespaces in hostapp and shared tests projects by @bhavanesh2001 in #29904
- [create-pull-request] automated change by @github-actions[bot] in #29875
- [create-pull-request] automated change by @github-actions[bot] in #29792
- [create-pull-request] automated change by @github-actions[bot] in #29760
- [create-pull-request] automated change by @github-actions[bot] in #29993
- Update copilot-setup-steps.yml to add the local dotnet to PATH by @mattleibow in #30042
- Setup Copilot development environment for .NET MAUI by @Copilot in #29991
- [create-pull-request] automated change by @github-actions[bot] in #29945
- [apis] Mark apis as shipped in the latest sr8 by @rmarinho in #29928
- [ai] Improve the release prompt by @rmarinho in #29867
- Update bug-report.yml by @PureWeen in #29912
- Build the project first before formatting by @mattleibow in #30233
- Update dotnet-format-daily.yml by @mattleibow in #30231
- [ci] Add a way to open insiders to cake by @rmarinho in #30211
- Fix update-cgmanifest.ps1 script to generate deterministic output by @Copilot in #30117
- Use the known working version of platform-tools by @mattleibow in #30173
- [create-pull-request] automated change by @github-actions[bot] in #30185
- [create-pull-request] automated change by @github-actions[bot] in #30151
- [ci] try do full build on dnceng by @rmarinho in #27456
- Update TSA area path configuration for .NET MAUI by @Copilot in #30142
- Update copilot-instructions.md with PR testing notes by @mattleibow in #30138
- Clean up copilot workspace after setup steps by @Copilot in #30113
- [2025/06/16] Candidate - In Flight Branch by @PureWeen in #29886
- Ping just David on breaking changes by @jfversluis in #30030
- Add overrides to Help with Obsoleting Compatibility.Layout by @PureWeen in #30058
Full Changelog: 9.0.82...9.0.90