Skip to content

[iOS 26] Fix Shell TitleView not resizing on device rotation - #35883

Merged
kubaflo merged 5 commits into
dotnet:inflight/currentfrom
SyedAbdulAzeemSF4852:fix-35844
Jun 17, 2026
Merged

[iOS 26] Fix Shell TitleView not resizing on device rotation#35883
kubaflo merged 5 commits into
dotnet:inflight/currentfrom
SyedAbdulAzeemSF4852:fix-35844

Conversation

@SyedAbdulAzeemSF4852

@SyedAbdulAzeemSF4852 SyedAbdulAzeemSF4852 commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

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

  • 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 Fix iOS 26 TitleView covering content in Shell and NavigationPage #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, NavigationRenderer.TraitCollectionDidChange, NavigationRenderer.UpdateTitleViewFrameForOrientation

Issues Fixed

Fixes #35844

Validated the behaviour in the following platforms

  • Windows
  • Android
  • iOS
  • Mac

Output

Before After
Before_Fix.mov
After_Fix.mov

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 35883

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 35883"

@dotnet-policy-service dotnet-policy-service Bot added the community ✨ Community Contribution label Jun 12, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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.

@dotnet-policy-service dotnet-policy-service Bot added the partner/syncfusion Issues / PR's with Syncfusion collaboration label Jun 12, 2026
@github-actions github-actions Bot added area-controls-shell Shell Navigation, Routes, Tabs, Flyout platform/ios platform/macos macOS / Mac Catalyst labels Jun 12, 2026
@kubaflo

kubaflo commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

/review -b feature/enhanced-reviewer

@github-actions github-actions Bot added the s/agent-review-in-progress AI review is currently running for this PR label Jun 12, 2026

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[major] iOS Shell layoutUpdateTitleViewFrameForOrientation() 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.

@MauiBot MauiBot added s/agent-fix-win AI found a better alternative fix than the PR s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) labels Jun 12, 2026
MauiBot

This comment was marked as outdated.

@MauiBot MauiBot removed the s/agent-review-in-progress AI review is currently running for this PR label Jun 12, 2026
@SyedAbdulAzeemSF4852 SyedAbdulAzeemSF4852 changed the title [WIP][iOS 26] Fix Shell TitleView not resizing on device rotation [iOS 26] Fix Shell TitleView not resizing on device rotation Jun 15, 2026
@sheiksyedm
sheiksyedm marked this pull request as ready for review June 15, 2026 17:03
@kubaflo

kubaflo commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

/review -b feature/enhanced-reviewer

@github-actions github-actions Bot added the s/agent-review-in-progress AI review is currently running for this PR label Jun 15, 2026
MauiBot

This comment was marked as outdated.

@MauiBot MauiBot removed the s/agent-review-in-progress AI review is currently running for this PR label Jun 15, 2026

@kubaflo kubaflo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please check the ai's suggestions?

@kubaflo

kubaflo commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

/review -b feature/enhanced-reviewer

@github-actions github-actions Bot added the s/agent-review-in-progress AI review is currently running for this PR label Jun 16, 2026

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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 MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Gate Passed Code Review In Review Confidence Low Platform iOS

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.yml
  • src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellPageRendererTracker.cs
  • src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRenderer.cs
  • src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRootRenderer.cs
  • src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt
  • src/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-35883 contains 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 TitleViewContainer during 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 Frame during orientation changes but does not update TitleViewContainer.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:391UpdateTitleViewFrameForOrientation() updates Frame but not Height; if navigation bar height changes, UIContainerView can 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 --required failed because gh is 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 stale Height.
  • 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.

@MauiBot MauiBot removed the s/agent-review-in-progress AI review is currently running for this PR label Jun 16, 2026

@kubaflo kubaflo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please check the ai's suggestions?

@SyedAbdulAzeemSF4852

Copy link
Copy Markdown
Contributor Author

Could you please check the ai's suggestions?

@kubaflo, Reviewed the MauiBot summary and addressed the valid concerns raised.

@kubaflo
kubaflo changed the base branch from main to inflight/current June 17, 2026 11:46
@kubaflo
kubaflo merged commit 048f94e into dotnet:inflight/current Jun 17, 2026
1 of 2 checks passed
@github-actions github-actions Bot added this to the .NET 10 SR9 milestone Jun 17, 2026
PureWeen pushed a commit that referenced this pull request Jun 22, 2026
<!-- 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>
kubaflo added a commit that referenced this pull request Jun 25, 2026
<!-- 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>
kubaflo added a commit that referenced this pull request Jul 3, 2026
<!-- 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>
@kubaflo kubaflo mentioned this pull request Jul 6, 2026
kubaflo added a commit that referenced this pull request Jul 6, 2026
<!-- 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>
PureWeen pushed a commit that referenced this pull request Jul 7, 2026
<!-- 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>
PureWeen pushed a commit that referenced this pull request Jul 7, 2026
<!-- 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>
kubaflo added a commit that referenced this pull request Jul 10, 2026
<!-- 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>
kubaflo added a commit that referenced this pull request Jul 15, 2026
<!-- 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>
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 18, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-controls-shell Shell Navigation, Routes, Tabs, Flyout community ✨ Community Contribution partner/syncfusion Issues / PR's with Syncfusion collaboration platform/ios platform/macos macOS / Mac Catalyst s/agent-fix-win AI found a better alternative fix than the PR s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[iOS 26] Shell.TitleView keeps portrait width after rotating iPad to landscape in MAUI 10.0.70

3 participants