[iOS 26] Fix Shell TitleView not resizing on device rotation - #35883
Conversation
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 35883Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 35883" |
|
Hey there @@SyedAbdulAzeemSF4852! Thank you so much for your PR! Someone from the team will get assigned to your PR shortly and we'll get it reviewed. |
|
/review -b feature/enhanced-reviewer |
MauiBot
left a comment
There was a problem hiding this comment.
Expert Review — 1 findings
See inline comments for details.
| var navigationBarFrame = ViewController?.NavigationController?.NavigationBar.Frame; | ||
| if (navigationBarFrame.HasValue) | ||
| { | ||
| titleViewContainer.Frame = new CGRect(0, 0, navigationBarFrame.Value.Width, navigationBarFrame.Value.Height); |
There was a problem hiding this comment.
[major] iOS Shell layout — UpdateTitleViewFrameForOrientation() resizes the native TitleViewContainer.Frame, but it does not refresh the container's Height value used by UIContainerView.LayoutSubviews() when MatchHeight is true. On iPhone rotation the navigation bar height can change between portrait and landscape, so the container frame can match the new bar while the MAUI title view is still measured/arranged with the previous bar height, causing vertical clipping or stale layout. Please update the stored height together with the frame, or route this through a helper that keeps Frame and Height in sync, and cover the rotated height/clipping case in the regression test.
|
/review -b feature/enhanced-reviewer |
kubaflo
left a comment
There was a problem hiding this comment.
Could you please check the ai's suggestions?
|
/review -b feature/enhanced-reviewer |
MauiBot
left a comment
There was a problem hiding this comment.
Expert Review — 2 findings
See inline comments for details.
| @@ -0,0 +1,48 @@ | |||
| #if TEST_FAILS_ON_WINDOWS && TEST_FAILS_ON_CATALYST // SetOrientationLandscape/Portrait is only supported on iOS and Android. | |||
There was a problem hiding this comment.
[major] Regression Prevention - This preprocessor guard also includes the test in the Android test project: Android defines TEST_FAILS_ON_WINDOWS and TEST_FAILS_ON_CATALYST. The HostApp issue is marked PlatformAffected.iOS, so Android issue navigation can fail to find this sample. Scope the test to iOS explicitly, e.g. #if IOS / #if IOSUITEST, unless Android coverage is intentionally added.
| var navigationBarFrame = ViewController?.NavigationController?.NavigationBar.Frame; | ||
| if (navigationBarFrame.HasValue) | ||
| { | ||
| titleViewContainer.Frame = new CGRect(0, 0, navigationBarFrame.Value.Width, navigationBarFrame.Value.Height); |
There was a problem hiding this comment.
[major] Layout Measure-Arrange - The orientation helper updates the native Frame but does not synchronize TitleViewContainer.Height, even though the constructor sets Height because UIContainerView uses it for MatchHeight measurement/arrange. On rotations where the navigation bar height changes, the MAUI TitleView can be arranged with stale height. Set titleViewContainer.Height = navigationBarFrame.Value.Height before LayoutIfNeeded().
MauiBot
left a comment
There was a problem hiding this comment.
AI Review Summary
@SyedAbdulAzeemSF4852 — new AI review results are available based on this last commit:
8e342fb. To request a fresh review after new comments or commits, comment/review rerun.
Review Sessions — click to expand
Gate — Test Before & After Fix
Gate Result: ✅ PASSED
Platform: IOS · Base: main · Merge base: bb4e7040
| Test | Without Fix (expect FAIL) | With Fix (expect PASS) |
|---|---|---|
🖥️ Issue35844 Issue35844 |
✅ FAIL — 332s | ✅ PASS — 125s |
🔴 Without fix — 🖥️ Issue35844: FAIL ✅ · 332s
Determining projects to restore...
Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 880 ms).
Restored /Users/cloudtest/vss/_work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 901 ms).
Restored /Users/cloudtest/vss/_work/1/s/src/Essentials/src/Essentials.csproj (in 5.91 sec).
Restored /Users/cloudtest/vss/_work/1/s/src/Controls/Foldable/src/Controls.Foldable.csproj (in 7.09 sec).
Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 7.11 sec).
Restored /Users/cloudtest/vss/_work/1/s/src/Core/maps/src/Maps.csproj (in 7.11 sec).
Restored /Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj (in 7.11 sec).
Restored /Users/cloudtest/vss/_work/1/s/src/BlazorWebView/src/Maui/Microsoft.AspNetCore.Components.WebView.Maui.csproj (in 7.11 sec).
Restored /Users/cloudtest/vss/_work/1/s/src/Controls/Maps/src/Controls.Maps.csproj (in 7.11 sec).
Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Xaml/Controls.Xaml.csproj (in 7.13 sec).
Restored /Users/cloudtest/vss/_work/1/s/src/Core/src/Core.csproj (in 6.2 sec).
/Users/cloudtest/vss/_work/1/s/.dotnet/packs/Microsoft.iOS.Sdk.net10.0_26.0/26.0.11017/targets/Xamarin.Shared.Sdk.targets(309,3): warning : RuntimeIdentifier was set on the command line, and will override the value for RuntimeIdentifiers set in the project file. [/Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj::TargetFramework=net10.0-ios]
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Graphics -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Graphics/Debug/net10.0-ios26.0/Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Essentials -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Essentials/Debug/net10.0-ios26.0/Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Core/Debug/net10.0-ios26.0/Microsoft.Maui.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Maps -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Maps/Debug/net10.0-ios26.0/Microsoft.Maui.Maps.dll
Controls.BindingSourceGen -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Controls.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Core/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Microsoft.AspNetCore.Components.WebView.Maui -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Microsoft.AspNetCore.Components.WebView.Maui/Debug/net10.0-ios26.0/Microsoft.AspNetCore.Components.WebView.Maui.dll
Controls.Maps -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Maps/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Maps.dll
Controls.Foldable -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Foldable/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Foldable.dll
Controls.Xaml -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Xaml/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Xaml.dll
Detected signing identity:
Code Signing Key: "" (-)
Provisioning Profile: "" () - no entitlements
Bundle Id: com.microsoft.maui.uitests
App Id: com.microsoft.maui.uitests
Controls.TestCases.HostApp -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-ios/iossimulator-arm64/Controls.TestCases.HostApp.dll
Optimizing assemblies for size may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink
Optimizing assemblies for size. This process might take a while.
Build succeeded.
/Users/cloudtest/vss/_work/1/s/.dotnet/packs/Microsoft.iOS.Sdk.net10.0_26.0/26.0.11017/targets/Xamarin.Shared.Sdk.targets(309,3): warning : RuntimeIdentifier was set on the command line, and will override the value for RuntimeIdentifiers set in the project file. [/Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj::TargetFramework=net10.0-ios]
1 Warning(s)
0 Error(s)
Time Elapsed 00:03:03.20
Determining projects to restore...
Restored /Users/cloudtest/vss/_work/1/s/src/Controls/tests/CustomAttributes/Controls.CustomAttributes.csproj (in 849 ms).
Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 852 ms).
Restored /Users/cloudtest/vss/_work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 851 ms).
Restored /Users/cloudtest/vss/_work/1/s/src/Essentials/src/Essentials.csproj (in 855 ms).
Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/UITest.Core/UITest.Core.csproj (in 1 ms).
Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/VisualTestUtils/VisualTestUtils.csproj (in 5 ms).
Restored /Users/cloudtest/vss/_work/1/s/src/Core/src/Core.csproj (in 1 sec).
Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 1.02 sec).
Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/UITest.NUnit/UITest.NUnit.csproj (in 2.49 sec).
Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/UITest.Appium/UITest.Appium.csproj (in 2.49 sec).
Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/UITest.Analyzers/UITest.Analyzers.csproj (in 4.73 sec).
Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/VisualTestUtils.MagickNet/VisualTestUtils.MagickNet.csproj (in 6.46 sec).
Restored /Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.iOS.Tests/Controls.TestCases.iOS.Tests.csproj (in 7.37 sec).
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Controls.CustomAttributes -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.CustomAttributes/Debug/net10.0/Controls.CustomAttributes.dll
Graphics -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Graphics/Debug/net10.0/Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Essentials -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Essentials/Debug/net10.0/Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Core/Debug/net10.0/Microsoft.Maui.dll
Controls.BindingSourceGen -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Controls.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Core/Debug/net10.0/Microsoft.Maui.Controls.dll
UITest.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Core/Debug/net10.0/UITest.Core.dll
VisualTestUtils -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/VisualTestUtils/Debug/netstandard2.0/VisualTestUtils.dll
UITest.NUnit -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.NUnit/Debug/net10.0/UITest.NUnit.dll
VisualTestUtils.MagickNet -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/VisualTestUtils.MagickNet/Debug/netstandard2.0/VisualTestUtils.MagickNet.dll
UITest.Appium -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Appium/Debug/net10.0/UITest.Appium.dll
UITest.Analyzers -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Analyzers/Debug/netstandard2.0/UITest.Analyzers.dll
Controls.TestCases.iOS.Tests -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll
Test run for /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (arm64)
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.08] Discovering: Controls.TestCases.iOS.Tests
[xUnit.net 00:00:00.23] Discovered: Controls.TestCases.iOS.Tests
NUnit Adapter 4.5.0.0: Test execution started
Running selected tests in /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll
NUnit3TestExecutor discovered 1 of 1 NUnit test cases using Current Discovery mode, Non-Explicit run
>>>>> 6/16/2026 4:16:16 AM FixtureSetup for Issue35844(iOS)
>>>>> 6/16/2026 4:16:20 AM ShellTitleViewResizesOnRotation Start
>>>>> 6/16/2026 4:16:22 AM ShellTitleViewResizesOnRotation Stop
>>>>> 6/16/2026 4:16:22 AM Log types: syslog, crashlog, performance, safariConsole, safariNetwork, server
Failed ShellTitleViewResizesOnRotation [2 s]
Error Message:
Shell TitleView width should expand after rotating to landscape on iOS 26+
Assert.That(landscapeWidth, Is.Not.EqualTo(portraitWidth).Within(50))
Expected: not equal to 343 +/- 50
But was: 344
Stack Trace:
at Microsoft.Maui.TestCases.Tests.Issues.Issue35844.ShellTitleViewResizesOnRotation() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue35844.cs:line 33
1) at Microsoft.Maui.TestCases.Tests.Issues.Issue35844.ShellTitleViewResizesOnRotation() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue35844.cs:line 33
NUnit Adapter 4.5.0.0: Test execution complete
Results File: /Users/cloudtest/vss/_work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue35844.trx
Test Run Failed.
Total tests: 1
Failed: 1
Total time: 1.5018 Minutes
>>> TRX_RESULT_FILE: /Users/cloudtest/vss/_work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue35844.trx
🟢 With fix — 🖥️ Issue35844: PASS ✅ · 125s
Determining projects to restore...
Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 466 ms).
Restored /Users/cloudtest/vss/_work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 433 ms).
Restored /Users/cloudtest/vss/_work/1/s/src/Essentials/src/Essentials.csproj (in 485 ms).
Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 534 ms).
Restored /Users/cloudtest/vss/_work/1/s/src/Core/src/Core.csproj (in 550 ms).
6 of 11 projects are up-to-date for restore.
/Users/cloudtest/vss/_work/1/s/.dotnet/packs/Microsoft.iOS.Sdk.net10.0_26.0/26.0.11017/targets/Xamarin.Shared.Sdk.targets(309,3): warning : RuntimeIdentifier was set on the command line, and will override the value for RuntimeIdentifiers set in the project file. [/Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj::TargetFramework=net10.0-ios]
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Graphics -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Graphics/Debug/net10.0-ios26.0/Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Essentials -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Essentials/Debug/net10.0-ios26.0/Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Core/Debug/net10.0-ios26.0/Microsoft.Maui.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Maps -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Maps/Debug/net10.0-ios26.0/Microsoft.Maui.Maps.dll
Controls.BindingSourceGen -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Controls.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Core/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Controls.Maps -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Maps/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Maps.dll
Controls.Xaml -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Xaml/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Xaml.dll
Controls.Foldable -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Foldable/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Foldable.dll
Microsoft.AspNetCore.Components.WebView.Maui -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Microsoft.AspNetCore.Components.WebView.Maui/Debug/net10.0-ios26.0/Microsoft.AspNetCore.Components.WebView.Maui.dll
Detected signing identity:
Code Signing Key: "" (-)
Provisioning Profile: "" () - no entitlements
Bundle Id: com.microsoft.maui.uitests
App Id: com.microsoft.maui.uitests
Controls.TestCases.HostApp -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.HostApp/Debug/net10.0-ios/iossimulator-arm64/Controls.TestCases.HostApp.dll
Optimizing assemblies for size may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink
Optimizing assemblies for size. This process might take a while.
Build succeeded.
/Users/cloudtest/vss/_work/1/s/.dotnet/packs/Microsoft.iOS.Sdk.net10.0_26.0/26.0.11017/targets/Xamarin.Shared.Sdk.targets(309,3): warning : RuntimeIdentifier was set on the command line, and will override the value for RuntimeIdentifiers set in the project file. [/Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj::TargetFramework=net10.0-ios]
1 Warning(s)
0 Error(s)
Time Elapsed 00:01:03.26
Determining projects to restore...
Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 446 ms).
Restored /Users/cloudtest/vss/_work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 465 ms).
Restored /Users/cloudtest/vss/_work/1/s/src/Essentials/src/Essentials.csproj (in 460 ms).
Restored /Users/cloudtest/vss/_work/1/s/src/Core/src/Core.csproj (in 484 ms).
Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 510 ms).
8 of 13 projects are up-to-date for restore.
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Controls.CustomAttributes -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.CustomAttributes/Debug/net10.0/Controls.CustomAttributes.dll
Graphics -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Graphics/Debug/net10.0/Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Essentials -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Essentials/Debug/net10.0/Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Core/Debug/net10.0/Microsoft.Maui.dll
Controls.BindingSourceGen -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
##vso[build.updatebuildnumber]10.0.90-ci+azdo.14388807
Controls.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Core/Debug/net10.0/Microsoft.Maui.Controls.dll
VisualTestUtils -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/VisualTestUtils/Debug/netstandard2.0/VisualTestUtils.dll
UITest.Core -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Core/Debug/net10.0/UITest.Core.dll
VisualTestUtils.MagickNet -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/VisualTestUtils.MagickNet/Debug/netstandard2.0/VisualTestUtils.MagickNet.dll
UITest.NUnit -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.NUnit/Debug/net10.0/UITest.NUnit.dll
UITest.Appium -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Appium/Debug/net10.0/UITest.Appium.dll
UITest.Analyzers -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Analyzers/Debug/netstandard2.0/UITest.Analyzers.dll
Controls.TestCases.iOS.Tests -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll
Test run for /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (arm64)
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.06] Discovering: Controls.TestCases.iOS.Tests
[xUnit.net 00:00:00.20] Discovered: Controls.TestCases.iOS.Tests
NUnit Adapter 4.5.0.0: Test execution started
Running selected tests in /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.TestCases.iOS.Tests/Debug/net10.0/Controls.TestCases.iOS.Tests.dll
NUnit3TestExecutor discovered 1 of 1 NUnit test cases using Current Discovery mode, Non-Explicit run
>>>>> 6/16/2026 4:18:20 AM FixtureSetup for Issue35844(iOS)
>>>>> 6/16/2026 4:18:25 AM ShellTitleViewResizesOnRotation Start
>>>>> 6/16/2026 4:18:28 AM ShellTitleViewResizesOnRotation Stop
Passed ShellTitleViewResizesOnRotation [3 s]
NUnit Adapter 4.5.0.0: Test execution complete
Results File: /Users/cloudtest/vss/_work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue35844.trx
Test Run Successful.
Total tests: 1
Passed: 1
Total time: 27.6310 Seconds
>>> TRX_RESULT_FILE: /Users/cloudtest/vss/_work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue35844.trx
📁 Fix files reverted (6 files)
eng/pipelines/ci-copilot.ymlsrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellPageRendererTracker.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRenderer.cssrc/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRootRenderer.cssrc/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txtsrc/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt
UI Tests — Shell
Detected UI test categories: Shell
❌ Deep UI tests — 190 passed, 103 failed across 1 category on platform-pool agent (replaces in-process counts above).
🧪 UI Test Execution Results (deep, platform pool)
| Category | Tests | Snapshot diffs |
|---|---|---|
Shell |
190/308 (103 ❌) | 102 diff PNGs |
❌ Shell — 103 failed tests
EnsureCustomFlyoutIconColor
System.InvalidOperationException :
Snapshot different than baseline: EnsureCustomFlyoutIconColor.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: EnsureCustomFlyoutIconColor.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment
...
VerifyShellFlyout_DisplayOptionsWithHeaderTemplateAndFooterTemplate
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ShellFeatureTests.VerifyShellFlyout_DisplayOptionsWithHeaderTemplateAndFooterTemplate() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 914
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Objec
...
FlyoutMenuShouldNotDisappearWhenNavigateUsingServices
System.InvalidOperationException :
Snapshot different than baseline: FlyoutMenuShouldNotDisappearWhenNavigateUsingServices.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: FlyoutMenuShouldNotDisappearWhenNavigateUsingServices.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug),
...
ShellPages_PresentationModeModalAnimated
System.InvalidOperationException :
Snapshot different than baseline: ShellPages_PresentationModeModalAnimated.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: ShellPages_PresentationModeModalAnimated.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline i
...
DynamicTabSectionVisibility
System.InvalidOperationException :
Snapshot different than baseline: DynamicTabSectionVisibility.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: DynamicTabSectionVisibility.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment
...
VerifyNavBarStatusAtRuntime
System.InvalidOperationException :
Snapshot different than baseline: VerifyNavBarStatusAtRuntime.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyNavBarStatusAtRuntime.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment
...
VerifyShellFlyoutBackgroundImageSetNull
System.TimeoutException : Timed out waiting for element...
at UITest.Appium.HelperExtensions.Wait(Func`1 query, Func`2 satisfactory, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2757
at UITest.Appium.HelperExtensions.WaitForAtLeastOne(Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 2784
at UITest.Appium.HelperExtensions.WaitForElement(IApp app, String marked, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout) in /_/src/TestUtils/src/UITest.Appium/HelperExtensions.cs:line 793
at Microsoft.Maui.TestCases.Tests.Issues.Issue21472.VerifyShellFlyoutBackgroundImageSetNull() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue21472.cs:line 29
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandle
...
VerifyFlyoutSelectedCurrentItem
System.InvalidOperationException :
Snapshot different than baseline: VerifyFlyoutSelectedCurrentItem.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyFlyoutSelectedCurrentItem.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test att
...
VerifyTemplateViewMarginOnInitialDisplay
System.InvalidOperationException :
Snapshot different than baseline: VerifyTemplateViewMarginOnInitialDisplay.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyTemplateViewMarginOnInitialDisplay.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline i
...
ShellPages_IsVisibleTrue
System.InvalidOperationException :
Snapshot different than baseline: ShellPages_IsVisibleTrue.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: ShellPages_IsVisibleTrue.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or dow
...
ToolbarItemsShouldWork
System.InvalidOperationException :
Snapshot different than baseline: ToolbarItemsShouldWork.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: ToolbarItemsShouldWork.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or downloa
...
VerifyShellFlyoutBackgroundImage
System.InvalidOperationException :
Snapshot different than baseline: VerifyShellFlyoutBackgroundImage.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyShellFlyoutBackgroundImage.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test a
...
TabBarVisibilityHidesOnPage1UsingDirectSet
System.InvalidOperationException :
Snapshot different than baseline: TabBarVisibilityHidesOnPage1UsingDirectSet.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: TabBarVisibilityHidesOnPage1UsingDirectSet.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseli
...
ShouldUpdateSearchHandlerOnPageNavigation
System.InvalidOperationException :
Snapshot different than baseline: ShouldUpdateSearchHandlerOnPageNavigation.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: ShouldUpdateSearchHandlerOnPageNavigation.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline
...
VerifyShellFlyout_Width
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ShellFeatureTests.VerifyShellFlyout_Width() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 460
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection
...
VerifyFlyoutContentHasNoDefaultCornerRadius
System.InvalidOperationException :
Snapshot different than baseline: VerifyFlyoutContentHasNoDefaultCornerRadius.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyFlyoutContentHasNoDefaultCornerRadius.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the base
...
EnsureFlyoutIconWithForegroundColor
System.InvalidOperationException :
Snapshot different than baseline: EnsureFlyoutIconWithForegroundColor.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: EnsureFlyoutIconWithForegroundColor.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See
...
VerifyShellFlyout_FlyoutIcon
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ShellFeatureTests.FlyoutScreenshot() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 1018
at Microsoft.Maui.TestCases.Tests.ShellFeatureTests.VerifyShellFlyout_FlyoutIcon() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 759
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, Objec
...
VerifyExistingTabTitle
System.InvalidOperationException :
Snapshot different than baseline: VerifyExistingTabTitle.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyExistingTabTitle.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or downloa
...
ShellFlyoutIconShouldNotBeBlack
System.InvalidOperationException :
Snapshot different than baseline: ShellFlyoutIconShouldNotBeBlack.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: ShellFlyoutIconShouldNotBeBlack.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test att
...
VerifyShellFlyoutContentAlignedInRTL
System.InvalidOperationException :
Snapshot different than baseline: VerifyShellFlyoutContentAlignedInRTL.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: VerifyShellFlyoutContentAlignedInRTL.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
Se
...
ShellPages_ShowTitleViewHidden
System.InvalidOperationException :
Snapshot different than baseline: ShellPages_ShowTitleViewHidden.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: ShellPages_ShowTitleViewHidden.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attac
...
UpdateSearchHandlerMenuItemForTabNavigation
System.InvalidOperationException :
Snapshot different than baseline: UpdateSearchHandlerMenuItemForTabNavigation.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: UpdateSearchHandlerMenuItemForTabNavigation.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the base
...
VerifyShellFlyout_BackgroundImageAndBackDrop
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ShellFeatureTests.VerifyShellFlyout_BackgroundImageAndBackDrop() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 619
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
...
ShellPages_PresentationModeNotAnimated
System.InvalidOperationException :
Snapshot different than baseline: ShellPages_PresentationModeNotAnimated.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: ShellPages_PresentationModeNotAnimated.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image
...
PaddingWithoutSafeArea
Assert.That(somePaddingValue, Is.GreaterThan(zeroPaddingValue))
Expected: greater than 316
But was: 316
at Microsoft.Maui.TestCases.Tests.Issues.ShellInsets.PaddingWithoutSafeArea() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/XFIssue/ShellInsets.cs:line 140
1) at Microsoft.Maui.TestCases.Tests.Issues.ShellInsets.PaddingWithoutSafeArea() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/XFIssue/ShellInsets.cs:line 140
VerifyShellFlyout_BackgroundColor
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ShellFeatureTests.VerifyShellFlyout_BackgroundColor() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 497
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.
...
TabBarShouldBeVisibleOnMacCatalyst
System.InvalidOperationException :
Snapshot different than baseline: TabBarShouldBeVisibleOnMacCatalyst.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: TabBarShouldBeVisibleOnMacCatalyst.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See te
...
VerifyShellFlyout_HeightAndWidthWithBackgroundColor
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
at Microsoft.Maui.TestCases.Tests.ShellFeatureTests.VerifyShellFlyout_HeightAndWidthWithBackgroundColor() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ShellFeatureMatrixTests.cs:line 938
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* a
...
Shell_Issue21916
System.InvalidOperationException :
Snapshot different than baseline: Shell_Issue21916.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.
More info: https://aka.ms/visual-test-workflow
iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0
Then run the tests targeting the new simulator.
----> VisualTestUtils.VisualTestFailedException :
Snapshot different than baseline: Shell_Issue21916.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build
...
(+73 more — see TRX in artifact)
📎 Download drop-deep-uitests artifact (TRX + snapshot diffs)
Pre-Flight — Context & Validation
Issue: #35844 - Shell TitleView does not resize after rotation on iOS 26+
PR: #35883 - PR #35883 local review branch
Platforms Affected: iOS, MacCatalyst
Files Changed: 17 implementation/infrastructure, 2 test
Key Findings
- GitHub CLI is unauthenticated in this environment, so remote PR body, comments, linked issue comments, reviews, and required-check status could not be fetched. Local branch
pr-review-35883contains the squashed PR changes and was used for context. - The MAUI product change updates Shell iOS TitleView sizing on iOS/MacCatalyst 26+ by explicitly resizing
TitleViewContainerduring rotation and trait collection changes. - The regression coverage is an Appium UI test for issue #35844, categorized as
Shell, using iOS orientation changes. - The independent code review found one unresolved error: the PR updates the native
Frameduring orientation changes but does not updateTitleViewContainer.Height, leaving possible stale MAUI layout height state.
Code Review Summary
Verdict: NEEDS_CHANGES
Confidence: low
Errors: 1 | Warnings: 0 | Suggestions: 0
Key code review findings:
- ❌
src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellPageRendererTracker.cs:391—UpdateTitleViewFrameForOrientation()updatesFramebut notHeight; if navigation bar height changes,UIContainerViewcan continue measuring/arranging the MAUI TitleView with stale height.
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| PR | PR #35883 | On iOS/MacCatalyst 26+, set the Shell TitleView container frame from the navigation bar during rotation/trait changes. | ✅ PASSED (Gate) | ShellPageRendererTracker.cs, ShellSectionRenderer.cs, ShellSectionRootRenderer.cs, UI test files, PublicAPI files |
Original PR; gate result supplied by caller. |
Code Review — Deep Analysis
Code Review — PR #35883
Independent Assessment
What this changes: Adds iOS/MacCatalyst 26+ Shell TitleView frame refresh during rotation/size-class changes, plus a regression UI test.
Inferred motivation: Prevent Shell TitleView from retaining portrait width after rotation.
Reconciliation with PR Narrative
Author claims: Fixes iOS 26+ Shell TitleView width after rotation, modeled after NavigationRenderer.
Agreement/disagreement: The width fix matches the code, but the resize helper leaves TitleViewContainer.Height stale.
Prior Review Reconciliation
| Prior Finding | Source | Status | Evidence |
|---|---|---|---|
[major] UpdateTitleViewFrameForOrientation() updates Frame but not Height |
MauiBot inline @ ShellPageRendererTracker.cs:391 |
❌ Unresolved | No changes to this file after efc0ac5; current line still only sets Frame and calls LayoutIfNeeded(). |
Blast Radius Assessment
- Runs for all instances: No — gated to iOS/MacCatalyst 26+ Shell title views.
- Startup impact: No.
- Static/shared state: No.
CI Status
- Required-check result: undetermined
- Classification: undetermined
- Action taken:
gh pr checks 35883 --repo dotnet/maui --requiredfailed becauseghis unauthenticated; confidence capped low.
Findings
❌ Error — TitleView height state remains stale after rotation
src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellPageRendererTracker.cs:391
TitleViewContainer inherits UIContainerView, whose layout uses Height when MatchHeight is true. The initial constructor sets both Frame and Height, but UpdateTitleViewFrameForOrientation() only updates Frame. If the navigation bar height changes during rotation, the native container frame can be correct while the MAUI title view is still measured/arranged with the previous height, causing clipping or stale vertical layout. Update Height together with Frame, or route through a helper that keeps both in sync.
Failure-Mode Probing
- Rotation changes width only: current code likely fixes the reported horizontal gap.
- Rotation changes nav-bar height:
UIContainerView.LayoutSubviews()can continue using staleHeight. - Handler disposal/reconnect: no new subscriptions; no accumulation found.
Verdict: NEEDS_CHANGES
Confidence: low
Summary: The main width fix is plausible, but a prior major layout issue remains unresolved and can produce stale/clipped title-view layout. CI state could not be verified due unavailable gh auth.
Fix — Analysis & Comparison
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| 1 | try-fix-1 | Make TitleViewContainer self-correct on iOS/MacCatalyst 26+ by registering for horizontal/vertical trait changes, walking up to the containing UINavigationBar, and updating both Frame and Height. |
✅ PASS | 1 file | Different from PR's external renderer callbacks; addresses stale-height review concern; avoids new public override API entries. |
| PR | PR #35883 | External ViewWillTransitionToSize/TraitCollectionDidChange callbacks in Shell section renderers push navigation-bar frame updates into ShellPageRendererTracker.UpdateTitleViewFrameForOrientation(). |
✅ PASSED (Gate) | 5 MAUI fix/API files + 2 UI test files | Original PR; gate result supplied by caller. Code review found stale Height risk in helper. |
Candidate 1 Narrative
See CustomAgentLogsTmp/PRState/35883/PRAgent/try-fix-1/content.md.
Approach: Instead of pushing frame updates from ShellSectionRenderer and ShellSectionRootRenderer, TitleViewContainer observes iOS 26+ trait changes directly. On rotation/size-class change, it locates the ancestor UINavigationBar, reads its updated frame, and synchronizes both native frame and MAUI Height state.
Diff: Stored in CustomAgentLogsTmp/PRState/35883/PRAgent/try-fix/attempt-1/fix.diff.
Test Result: ✅ PASS — ShellTitleViewResizesOnRotation passed via pwsh .github/scripts/BuildAndRunHostApp.ps1 -Platform ios -TestFilter "FullyQualifiedName~Issue35844" as reported by the try-fix agent.
Failure Analysis: N/A; candidate passed. Earlier internal iterations within the attempt rejected superview-bounds LayoutSubviews, ancestor lookup in LayoutSubviews, and Auto Layout/no-intrinsic strategies before landing on trait-change observation.
Cross-Pollination
| Model | Round | New Ideas? | Details |
|---|---|---|---|
| claude-opus-4.6 | 1 | Yes | Produced passing candidate #1. |
Exhausted: No — stopped because candidate #1 passed the issue-specific iOS UI test and is demonstrably better than the PR's current fix by reducing files/API surface and resolving the stale Height issue.
Selected Fix: Candidate #1 — one-file encapsulated TitleViewContainer trait-observer approach; passes the same regression test and fixes the code-review concern not handled by the PR helper.
Report — Final Recommendation
Comparative Report: PR #35883
Candidates Compared
| Rank | Candidate | Regression result | Assessment |
|---|---|---|---|
| 1 | pr-plus-reviewer |
PASS, inherited from PR gate with targeted reviewer fixes applied | Best balance: preserves the PR's ViewWillTransitionToSize coverage for rotations/window-size changes, fixes stale Height, and scopes the iOS-only UI test correctly. |
| 2 | try-fix-1 |
PASS | Strong alternative with smaller production surface and no new public override API entries. However, it relies on size-class trait notifications inside TitleViewContainer; that can miss rotations or size changes where horizontal/vertical size class does not change, especially iPad/MacCatalyst-style environments. |
| 3 | pr |
PASS | The raw PR passes the gate but leaves two major review findings unresolved: stale TitleView Height during orientation updates and an iOS-only test guard that includes Android. |
Analysis
The raw PR fix correctly targets the observed iOS 26+ failure mode by explicitly resizing the Shell TitleView container during rotation and trait-collection changes. Its main production bug is that UpdateTitleViewFrameForOrientation() only updates the native Frame; because the initial iOS 26+ constructor also sets Height for UIContainerView.MatchHeight, later rotations can leave MAUI measure/arrange using stale height. The test also needs an iOS-only preprocessor guard because the associated HostApp issue is marked PlatformAffected.iOS.
pr-plus-reviewer applies the expert review feedback surgically: synchronize Height alongside Frame, and change the UI test guard to #if IOS. This preserves the PR's broader transition callback strategy, including size changes that may not produce size-class changes, while resolving the actionable correctness issues.
try-fix-1 is attractive because it encapsulates the fix in TitleViewContainer and avoids renderer overrides/public API entries. It also updates both Frame and Height and passed the issue-specific iOS test. The concern is coverage: registering only horizontal/vertical size-class trait changes is less robust for rotations or window-size changes that keep the same size classes, so it has a higher risk of missing non-phone or MacCatalyst scenarios than the PR's transition-callback approach.
Winner
Winner: pr-plus-reviewer
It ranks above the raw PR because it fixes the expert review findings, and above try-fix-1 because it keeps the more comprehensive size-transition trigger path while preserving the passing regression behavior.
Future Action — review latest findings
No alternative fix was selected for this run. Review the session findings and CI results before merging.
kubaflo
left a comment
There was a problem hiding this comment.
Could you please check the ai's suggestions?
@kubaflo, Reviewed the MauiBot summary and addressed the valid concerns raised. |
<!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Issue Details - On iOS 26+, Shell pages with Shell.TitleView set do not resize correctly after device rotation — the TitleView retains its portrait-orientation width in landscape, leaving visible empty space on both sides of the navigation bar. ### Root Cause - PR #32341 introduced an explicit initial frame on TitleViewContainer at creation time and switched to FlexibleWidth | FlexibleHeight autoresizing masks on iOS 26+ to handle sizing. However the pre-existing UpdateFrame() only ever updates Height, never Width, and on iOS 26+ the autoresizing mask does not propagate width changes for NavigationItem.TitleView - so after rotation to landscape, the TitleViewContainer retains its portrait-orientation width. ### Description of Change **Navigation bar and TitleView resizing:** - Added UpdateTitleViewFrameForOrientation() to ShellPageRendererTracker, which explicitly updates the TitleViewContainer frame to match the navigation bar dimensions during device rotation. - Updated ShellSectionRenderer and ShellSectionRootRenderer to call UpdateTitleViewFrameForOrientation() via AnimateAlongsideTransition inside ViewWillTransitionToSize on iOS 26+ and Mac Catalyst 26+, ensuring the TitleView resizes correctly during rotation. - Added TraitCollectionDidChange to ShellSectionRenderer and ShellSectionRootRenderer to handle size class transitions. - Registered the new ViewWillTransitionToSize override in the public API files for both iOS and Mac Catalyst. **Reference** : [NavigationRenderer.ViewWillTransitionToSize](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1715-L1734), [NavigationRenderer.TraitCollectionDidChange](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1735-L1749), [NavigationRenderer.UpdateTitleViewFrameForOrientation](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1754-L1765) ### Issues Fixed Fixes #35844 ### Validated the behaviour in the following platforms - [ ] Windows - [ ] Android - [x] iOS - [x] Mac ### Output | Before | After | |----------|----------| | <video src="https://github.com/user-attachments/assets/3e256735-51f2-47fe-980b-dd858e11afff"> | <video src="https://github.com/user-attachments/assets/4bfc1f67-0a06-44f7-a423-359cd020f66a"> | --------- Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
<!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Issue Details - On iOS 26+, Shell pages with Shell.TitleView set do not resize correctly after device rotation — the TitleView retains its portrait-orientation width in landscape, leaving visible empty space on both sides of the navigation bar. ### Root Cause - PR #32341 introduced an explicit initial frame on TitleViewContainer at creation time and switched to FlexibleWidth | FlexibleHeight autoresizing masks on iOS 26+ to handle sizing. However the pre-existing UpdateFrame() only ever updates Height, never Width, and on iOS 26+ the autoresizing mask does not propagate width changes for NavigationItem.TitleView - so after rotation to landscape, the TitleViewContainer retains its portrait-orientation width. ### Description of Change **Navigation bar and TitleView resizing:** - Added UpdateTitleViewFrameForOrientation() to ShellPageRendererTracker, which explicitly updates the TitleViewContainer frame to match the navigation bar dimensions during device rotation. - Updated ShellSectionRenderer and ShellSectionRootRenderer to call UpdateTitleViewFrameForOrientation() via AnimateAlongsideTransition inside ViewWillTransitionToSize on iOS 26+ and Mac Catalyst 26+, ensuring the TitleView resizes correctly during rotation. - Added TraitCollectionDidChange to ShellSectionRenderer and ShellSectionRootRenderer to handle size class transitions. - Registered the new ViewWillTransitionToSize override in the public API files for both iOS and Mac Catalyst. **Reference** : [NavigationRenderer.ViewWillTransitionToSize](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1715-L1734), [NavigationRenderer.TraitCollectionDidChange](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1735-L1749), [NavigationRenderer.UpdateTitleViewFrameForOrientation](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1754-L1765) ### Issues Fixed Fixes #35844 ### Validated the behaviour in the following platforms - [ ] Windows - [ ] Android - [x] iOS - [x] Mac ### Output | Before | After | |----------|----------| | <video src="https://github.com/user-attachments/assets/3e256735-51f2-47fe-980b-dd858e11afff"> | <video src="https://github.com/user-attachments/assets/4bfc1f67-0a06-44f7-a423-359cd020f66a"> | --------- Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
<!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Issue Details - On iOS 26+, Shell pages with Shell.TitleView set do not resize correctly after device rotation — the TitleView retains its portrait-orientation width in landscape, leaving visible empty space on both sides of the navigation bar. ### Root Cause - PR #32341 introduced an explicit initial frame on TitleViewContainer at creation time and switched to FlexibleWidth | FlexibleHeight autoresizing masks on iOS 26+ to handle sizing. However the pre-existing UpdateFrame() only ever updates Height, never Width, and on iOS 26+ the autoresizing mask does not propagate width changes for NavigationItem.TitleView - so after rotation to landscape, the TitleViewContainer retains its portrait-orientation width. ### Description of Change **Navigation bar and TitleView resizing:** - Added UpdateTitleViewFrameForOrientation() to ShellPageRendererTracker, which explicitly updates the TitleViewContainer frame to match the navigation bar dimensions during device rotation. - Updated ShellSectionRenderer and ShellSectionRootRenderer to call UpdateTitleViewFrameForOrientation() via AnimateAlongsideTransition inside ViewWillTransitionToSize on iOS 26+ and Mac Catalyst 26+, ensuring the TitleView resizes correctly during rotation. - Added TraitCollectionDidChange to ShellSectionRenderer and ShellSectionRootRenderer to handle size class transitions. - Registered the new ViewWillTransitionToSize override in the public API files for both iOS and Mac Catalyst. **Reference** : [NavigationRenderer.ViewWillTransitionToSize](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1715-L1734), [NavigationRenderer.TraitCollectionDidChange](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1735-L1749), [NavigationRenderer.UpdateTitleViewFrameForOrientation](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1754-L1765) ### Issues Fixed Fixes #35844 ### Validated the behaviour in the following platforms - [ ] Windows - [ ] Android - [x] iOS - [x] Mac ### Output | Before | After | |----------|----------| | <video src="https://github.com/user-attachments/assets/3e256735-51f2-47fe-980b-dd858e11afff"> | <video src="https://github.com/user-attachments/assets/4bfc1f67-0a06-44f7-a423-359cd020f66a"> | --------- Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
<!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Issue Details - On iOS 26+, Shell pages with Shell.TitleView set do not resize correctly after device rotation — the TitleView retains its portrait-orientation width in landscape, leaving visible empty space on both sides of the navigation bar. ### Root Cause - PR #32341 introduced an explicit initial frame on TitleViewContainer at creation time and switched to FlexibleWidth | FlexibleHeight autoresizing masks on iOS 26+ to handle sizing. However the pre-existing UpdateFrame() only ever updates Height, never Width, and on iOS 26+ the autoresizing mask does not propagate width changes for NavigationItem.TitleView - so after rotation to landscape, the TitleViewContainer retains its portrait-orientation width. ### Description of Change **Navigation bar and TitleView resizing:** - Added UpdateTitleViewFrameForOrientation() to ShellPageRendererTracker, which explicitly updates the TitleViewContainer frame to match the navigation bar dimensions during device rotation. - Updated ShellSectionRenderer and ShellSectionRootRenderer to call UpdateTitleViewFrameForOrientation() via AnimateAlongsideTransition inside ViewWillTransitionToSize on iOS 26+ and Mac Catalyst 26+, ensuring the TitleView resizes correctly during rotation. - Added TraitCollectionDidChange to ShellSectionRenderer and ShellSectionRootRenderer to handle size class transitions. - Registered the new ViewWillTransitionToSize override in the public API files for both iOS and Mac Catalyst. **Reference** : [NavigationRenderer.ViewWillTransitionToSize](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1715-L1734), [NavigationRenderer.TraitCollectionDidChange](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1735-L1749), [NavigationRenderer.UpdateTitleViewFrameForOrientation](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1754-L1765) ### Issues Fixed Fixes #35844 ### Validated the behaviour in the following platforms - [ ] Windows - [ ] Android - [x] iOS - [x] Mac ### Output | Before | After | |----------|----------| | <video src="https://github.com/user-attachments/assets/3e256735-51f2-47fe-980b-dd858e11afff"> | <video src="https://github.com/user-attachments/assets/4bfc1f67-0a06-44f7-a423-359cd020f66a"> | --------- Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
<!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Issue Details - On iOS 26+, Shell pages with Shell.TitleView set do not resize correctly after device rotation — the TitleView retains its portrait-orientation width in landscape, leaving visible empty space on both sides of the navigation bar. ### Root Cause - PR #32341 introduced an explicit initial frame on TitleViewContainer at creation time and switched to FlexibleWidth | FlexibleHeight autoresizing masks on iOS 26+ to handle sizing. However the pre-existing UpdateFrame() only ever updates Height, never Width, and on iOS 26+ the autoresizing mask does not propagate width changes for NavigationItem.TitleView - so after rotation to landscape, the TitleViewContainer retains its portrait-orientation width. ### Description of Change **Navigation bar and TitleView resizing:** - Added UpdateTitleViewFrameForOrientation() to ShellPageRendererTracker, which explicitly updates the TitleViewContainer frame to match the navigation bar dimensions during device rotation. - Updated ShellSectionRenderer and ShellSectionRootRenderer to call UpdateTitleViewFrameForOrientation() via AnimateAlongsideTransition inside ViewWillTransitionToSize on iOS 26+ and Mac Catalyst 26+, ensuring the TitleView resizes correctly during rotation. - Added TraitCollectionDidChange to ShellSectionRenderer and ShellSectionRootRenderer to handle size class transitions. - Registered the new ViewWillTransitionToSize override in the public API files for both iOS and Mac Catalyst. **Reference** : [NavigationRenderer.ViewWillTransitionToSize](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1715-L1734), [NavigationRenderer.TraitCollectionDidChange](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1735-L1749), [NavigationRenderer.UpdateTitleViewFrameForOrientation](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1754-L1765) ### Issues Fixed Fixes #35844 ### Validated the behaviour in the following platforms - [ ] Windows - [ ] Android - [x] iOS - [x] Mac ### Output | Before | After | |----------|----------| | <video src="https://github.com/user-attachments/assets/3e256735-51f2-47fe-980b-dd858e11afff"> | <video src="https://github.com/user-attachments/assets/4bfc1f67-0a06-44f7-a423-359cd020f66a"> | --------- Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
<!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Issue Details - On iOS 26+, Shell pages with Shell.TitleView set do not resize correctly after device rotation — the TitleView retains its portrait-orientation width in landscape, leaving visible empty space on both sides of the navigation bar. ### Root Cause - PR #32341 introduced an explicit initial frame on TitleViewContainer at creation time and switched to FlexibleWidth | FlexibleHeight autoresizing masks on iOS 26+ to handle sizing. However the pre-existing UpdateFrame() only ever updates Height, never Width, and on iOS 26+ the autoresizing mask does not propagate width changes for NavigationItem.TitleView - so after rotation to landscape, the TitleViewContainer retains its portrait-orientation width. ### Description of Change **Navigation bar and TitleView resizing:** - Added UpdateTitleViewFrameForOrientation() to ShellPageRendererTracker, which explicitly updates the TitleViewContainer frame to match the navigation bar dimensions during device rotation. - Updated ShellSectionRenderer and ShellSectionRootRenderer to call UpdateTitleViewFrameForOrientation() via AnimateAlongsideTransition inside ViewWillTransitionToSize on iOS 26+ and Mac Catalyst 26+, ensuring the TitleView resizes correctly during rotation. - Added TraitCollectionDidChange to ShellSectionRenderer and ShellSectionRootRenderer to handle size class transitions. - Registered the new ViewWillTransitionToSize override in the public API files for both iOS and Mac Catalyst. **Reference** : [NavigationRenderer.ViewWillTransitionToSize](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1715-L1734), [NavigationRenderer.TraitCollectionDidChange](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1735-L1749), [NavigationRenderer.UpdateTitleViewFrameForOrientation](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1754-L1765) ### Issues Fixed Fixes #35844 ### Validated the behaviour in the following platforms - [ ] Windows - [ ] Android - [x] iOS - [x] Mac ### Output | Before | After | |----------|----------| | <video src="https://github.com/user-attachments/assets/3e256735-51f2-47fe-980b-dd858e11afff"> | <video src="https://github.com/user-attachments/assets/4bfc1f67-0a06-44f7-a423-359cd020f66a"> | --------- Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
<!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Issue Details - On iOS 26+, Shell pages with Shell.TitleView set do not resize correctly after device rotation — the TitleView retains its portrait-orientation width in landscape, leaving visible empty space on both sides of the navigation bar. ### Root Cause - PR #32341 introduced an explicit initial frame on TitleViewContainer at creation time and switched to FlexibleWidth | FlexibleHeight autoresizing masks on iOS 26+ to handle sizing. However the pre-existing UpdateFrame() only ever updates Height, never Width, and on iOS 26+ the autoresizing mask does not propagate width changes for NavigationItem.TitleView - so after rotation to landscape, the TitleViewContainer retains its portrait-orientation width. ### Description of Change **Navigation bar and TitleView resizing:** - Added UpdateTitleViewFrameForOrientation() to ShellPageRendererTracker, which explicitly updates the TitleViewContainer frame to match the navigation bar dimensions during device rotation. - Updated ShellSectionRenderer and ShellSectionRootRenderer to call UpdateTitleViewFrameForOrientation() via AnimateAlongsideTransition inside ViewWillTransitionToSize on iOS 26+ and Mac Catalyst 26+, ensuring the TitleView resizes correctly during rotation. - Added TraitCollectionDidChange to ShellSectionRenderer and ShellSectionRootRenderer to handle size class transitions. - Registered the new ViewWillTransitionToSize override in the public API files for both iOS and Mac Catalyst. **Reference** : [NavigationRenderer.ViewWillTransitionToSize](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1715-L1734), [NavigationRenderer.TraitCollectionDidChange](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1735-L1749), [NavigationRenderer.UpdateTitleViewFrameForOrientation](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1754-L1765) ### Issues Fixed Fixes #35844 ### Validated the behaviour in the following platforms - [ ] Windows - [ ] Android - [x] iOS - [x] Mac ### Output | Before | After | |----------|----------| | <video src="https://github.com/user-attachments/assets/3e256735-51f2-47fe-980b-dd858e11afff"> | <video src="https://github.com/user-attachments/assets/4bfc1f67-0a06-44f7-a423-359cd020f66a"> | --------- Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
<!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Issue Details - On iOS 26+, Shell pages with Shell.TitleView set do not resize correctly after device rotation — the TitleView retains its portrait-orientation width in landscape, leaving visible empty space on both sides of the navigation bar. ### Root Cause - PR #32341 introduced an explicit initial frame on TitleViewContainer at creation time and switched to FlexibleWidth | FlexibleHeight autoresizing masks on iOS 26+ to handle sizing. However the pre-existing UpdateFrame() only ever updates Height, never Width, and on iOS 26+ the autoresizing mask does not propagate width changes for NavigationItem.TitleView - so after rotation to landscape, the TitleViewContainer retains its portrait-orientation width. ### Description of Change **Navigation bar and TitleView resizing:** - Added UpdateTitleViewFrameForOrientation() to ShellPageRendererTracker, which explicitly updates the TitleViewContainer frame to match the navigation bar dimensions during device rotation. - Updated ShellSectionRenderer and ShellSectionRootRenderer to call UpdateTitleViewFrameForOrientation() via AnimateAlongsideTransition inside ViewWillTransitionToSize on iOS 26+ and Mac Catalyst 26+, ensuring the TitleView resizes correctly during rotation. - Added TraitCollectionDidChange to ShellSectionRenderer and ShellSectionRootRenderer to handle size class transitions. - Registered the new ViewWillTransitionToSize override in the public API files for both iOS and Mac Catalyst. **Reference** : [NavigationRenderer.ViewWillTransitionToSize](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1715-L1734), [NavigationRenderer.TraitCollectionDidChange](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1735-L1749), [NavigationRenderer.UpdateTitleViewFrameForOrientation](https://github.com/dotnet/maui/blob/bb4e7040aeac43502dc7d07133f615cee8e51dc3/src/Controls/src/Core/Compatibility/Handlers/NavigationPage/iOS/NavigationRenderer.cs#L1754-L1765) ### Issues Fixed Fixes #35844 ### Validated the behaviour in the following platforms - [ ] Windows - [ ] Android - [x] iOS - [x] Mac ### Output | Before | After | |----------|----------| | <video src="https://github.com/user-attachments/assets/3e256735-51f2-47fe-980b-dd858e11afff"> | <video src="https://github.com/user-attachments/assets/4bfc1f67-0a06-44f7-a423-359cd020f66a"> | --------- Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
Note
Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!
Issue Details
Root Cause
Description of Change
Navigation bar and TitleView resizing:
Reference : NavigationRenderer.ViewWillTransitionToSize, NavigationRenderer.TraitCollectionDidChange, NavigationRenderer.UpdateTitleViewFrameForOrientation
Issues Fixed
Fixes #35844
Validated the behaviour in the following platforms
Output
Before_Fix.mov
After_Fix.mov