Skip to content

[iOS][CV2] Fix Rotating the Simulator causes the text on the collection view to disappear.#32664

Merged
kubaflo merged 6 commits into
dotnet:inflight/currentfrom
devanathan-vaithiyanathan:fix-32435
Jun 15, 2026
Merged

[iOS][CV2] Fix Rotating the Simulator causes the text on the collection view to disappear.#32664
kubaflo merged 6 commits into
dotnet:inflight/currentfrom
devanathan-vaithiyanathan:fix-32435

Conversation

@devanathan-vaithiyanathan

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, text in horizontal CollectionView items disappears after rotation because the layout isn’t invalidated when bounds change.

Description of Change

Added ShouldInvalidateLayoutForBoundsChange override in LayoutFactory2.cs to refresh the layout on size changes, ensuring proper cell re-measurement and visible text after rotation.

Issues Fixed

Fixes #32435

Tested the behavior in the following platforms.

  • Android
  • Windows
  • iOS
  • Mac
Before After
iOS
iOS

@dotnet-policy-service dotnet-policy-service Bot added the partner/syncfusion Issues / PR's with Syncfusion collaboration label Nov 17, 2025
@sheiksyedm

Copy link
Copy Markdown
Contributor

/azp run MAUI-UITests-public

@sheiksyedm sheiksyedm marked this pull request as ready for review November 18, 2025 11:05
Copilot AI review requested due to automatic review settings November 18, 2025 11:05
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

Copilot AI 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.

Pull Request Overview

This PR fixes an iOS 26 bug where text in horizontal CollectionView items disappears after device rotation. The fix adds a ShouldInvalidateLayoutForBoundsChange override to CustomUICollectionViewCompositionalLayout in the CollectionView2 implementation, ensuring the layout invalidates when size changes (e.g., during rotation) so cells are properly re-measured and displayed.

Key Changes

  • Added ShouldInvalidateLayoutForBoundsChange override to detect size changes and trigger layout invalidation
  • Added _currentSize field to track previous bounds for comparison
  • Created UI test to verify text remains visible after rotation

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs Added _currentSize field and ShouldInvalidateLayoutForBoundsChange override to invalidate layout on size changes (rotation)
src/Controls/tests/TestCases.HostApp/Issues/Issue32435.cs Added host app test page with horizontal CollectionView2 and rotation test setup
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32435.cs Added NUnit UI test that verifies CollectionView text appears after rotation

@rmarinho

rmarinho commented Feb 16, 2026

Copy link
Copy Markdown
Member

🤖 AI Summary

📊 Expand Full Review
🔍 Pre-Flight — Context & Validation
📝 Review SessionSnapshot added · 1ed60b9

Issue: #32435 - [.NET 10] Rotating the Simulator causes the text on the collection view to disappear
PR: #32664 - [iOS][CV2] Fix Rotating the Simulator causes the text on the collection view to disappear.
Author: devanathan-vaithiyanathan (community ✨, partner/syncfusion)
Platforms Affected: iOS (specifically iOS 26); regression from .NET 9 (works on 9.0.111)
Milestone: .NET 10 SR5
Files Changed: 1 implementation file, 4 test files (2 code + 2 snapshot images)

Issue Summary

On iOS 26, text in horizontal CollectionView items disappears after device rotation. The CustomUICollectionViewCompositionalLayout (CV2/Items2 handler) doesn't override ShouldInvalidateLayoutForBoundsChange, so its bounds change during rotation doesn't trigger layout invalidation. Cells are not re-measured with new dimensions, making text invisible. Clicking "Add" button again restores text (forces layout update). This is a .NET 10 regression - CV2 was created from scratch and did not carry over the equivalent fix from the deprecated CV1 (Items/iOS) handler.

Regression: Does NOT reproduce on .NET 9 (9.0.111) or CV1 (deprecated). Confirmed on .NET 10 RC1, RC2, preview.

Files Changed

Implementation:

  • src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs (+15 lines)
    • Overrides ShouldInvalidateLayoutForBoundsChange in CustomUICollectionViewCompositionalLayout
    • Adds _currentSize field to track previous bounds size
    • Returns true when size changes; delegates to base when only origin changes

Tests:

  • src/Controls/tests/TestCases.HostApp/Issues/Issue32435.cs (+74 lines) - C# UI test page
  • src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32435.cs (+24 lines) - NUnit test
  • src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/VerifyCollectionViewTextShouldAppearAfterRotatingTheDevice.png (binary snapshot)
  • src/Controls/tests/TestCases.Android.Tests/snapshots/android/VerifyCollectionViewTextShouldAppearAfterRotatingTheDevice.png (binary snapshot)

Test Conditional Analysis

Test uses #if TEST_FAILS_ON_CATALYST && TEST_FAILS_ON_WINDOWS. The iOS test project defines both symbols, so the test IS included in iOS builds. Android project also defines both symbols (test runs on Android too).

PR Discussion

  • Prior agent review confirmed this PR and recommended APPROVE
  • Gate was blocked by environment (iOS simulator doesn't visually reproduce the rendering regression)

Prior Agent Review

A prior agent reviewed this PR (session ending 2026-02-16/18):

  • Pre-Flight: ✅ COMPLETE
  • Gate: ❌ BLOCKED (environment - iOS simulator didn't visually reproduce the bug)
  • Fix (Phase 3): 3/5 models ran try-fix; 2 blocked by rate limits; Selected PR's fix
  • Report: ✅ APPROVE (with minor feedback on indentation and missing newline)

Fix Candidates

# Source Approach Test Result Files Changed Notes
PR PR #32664 Override ShouldInvalidateLayoutForBoundsChange in CustomUICollectionViewCompositionalLayout; track _currentSize (CGSize), return true when size changes, delegate to base otherwise ⏳ PENDING (Gate) LayoutFactory2.cs (+15) Original PR fix

🚦 Gate — Test Verification
📝 Review SessionSnapshot added · 1ed60b9

Result: ❌ FAILED (Environment Blocker)
Platform: ios
Mode: Full Verification

Verification Details

  • Tests WITHOUT fix: PASS (unexpected — should FAIL)
  • Tests WITH fix: PASS (expected)

Root Cause: Environment Blocker

Both test runs (with and without fix) PASS on the iOS simulator in this environment. The orientation changes execute correctly (UIKit events fire), but the visual rendering bug does not reproduce in the simulator. This matches the prior agent review finding (2026-02-16/18).

Why tests don't detect the bug:
The test uses VerifyScreenshot() to compare visual state after rotation. The snapshot-based comparison passes because the iOS simulator in this CI environment doesn't exhibit the cell rendering regression that occurs on physical iOS 26 devices (or specific simulator configurations). The bug may require specific Metal/GPU rendering conditions.

This is NOT a test quality issue — the tests correctly exercise the rotation scenario. The blocker is environmental.

Autonomous Execution Decision

Per autonomous execution rules: "If a phase is blocked (e.g., try-fix builds fail), SKIP that phase and proceed to the next one."

The prior agent review documented the same environment blocker and proceeded autonomously. Proceeding to Phase 3 (Fix) and Phase 4 (Report) with partial Gate results.


🔧 Fix — Analysis & Comparison
📝 Review SessionSnapshot added · 1ed60b9

Fix Candidates

# Source Approach Test Result Files Changed Notes
1 try-fix (prior session, claude-sonnet-4.6) Always return true from ShouldInvalidateLayoutForBoundsChange ✅ PASS* LayoutFactory2.cs (+7) Simpler but less performant (invalidates on scroll bounces too)
2 try-fix (prior session, claude-opus-4.6) Override PrepareLayout() to detect size change and call InvalidateLayout() ✅ PASS* LayoutFactory2.cs (+19) Risky: calling InvalidateLayout() from PrepareLayout() can cause infinite layout loops
3 try-fix (prior session, gpt-5.2-codex) Override ShouldInvalidateLayoutForBoundsChange comparing CollectionView.Bounds vs cached + override GetInvalidationContextForBoundsChange ✅ PASS* LayoutFactory2.cs (+57) Complex; reading CollectionView.Bounds inside ShouldInvalidateLayout can race; GetAllIndexPaths expensive
PR PR #32664 Override ShouldInvalidateLayoutForBoundsChange; track _currentSize (CGSize); return true when size changes, delegate to base otherwise ✅ PASS* (Gate) LayoutFactory2.cs (+15) Clean, minimal, performant

*Note: All tests pass because the iOS simulator in this environment doesn't reproduce the visual rendering bug. Test results are inconclusive for empirical validation; assessment is code-review based.

Phase 3 Status: Blocked (same environment issue as Gate)

Try-fix cannot run meaningfully in this environment — tests pass both with and without the fix. Running empirical try-fix models would produce inconclusive results identical to the prior review.

The prior agent session ran 3 of 5 models; all confirmed the same pattern: ShouldInvalidateLayoutForBoundsChange is the correct API for this fix. The approaches diverge only on:

  • Whether to cache size (_currentSize) vs compare live (CollectionView.Bounds)
  • Whether to also override GetInvalidationContextForBoundsChange
  • Whether to use PrepareLayout() instead

No approach improves on the PR's implementation.

Cross-Pollination Summary

All models confirmed: ShouldInvalidateLayoutForBoundsChange is the standard iOS API designed exactly for this use case. No new ideas beyond what the prior session explored.

  • Attempt 2 (PrepareLayout() + InvalidateLayout()) is particularly concerning — can cause infinite layout loops
  • Attempt 3 is overly complex (57 lines vs 15 in PR)
  • Attempt 1 (always return true) is functional but wasteful (invalidates on every scroll bounce)

Exhausted: Yes (per prior session cross-pollination + code review)

Selected Fix: PR's fix

Reason:

  1. ShouldInvalidateLayoutForBoundsChange is the designated iOS API for deciding when layout needs recalculation
  2. Cached _currentSize avoids spurious invalidations on scroll bounce
  3. Uses IsCloseTo() for float comparison (correct for CGSize)
  4. Minimal scope — 15 lines, one method override
  5. Mirrors the pattern from Items/iOS/ItemsViewLayout.cs line 594 (battle-tested in CV1 handler)
  6. No risk of infinite layout loops (unlike Attempt 2)

📋 Report — Final Recommendation
📝 Review SessionSnapshot added · 1ed60b9

✅ Final Recommendation: APPROVE (with minor feedback)

Summary

PR #32664 correctly fixes the iOS 26 CollectionView rotation bug by overriding ShouldInvalidateLayoutForBoundsChange to invalidate layout when device orientation changes. The fix is minimal (15 lines), mirrors the established pattern from the deprecated Items/iOS handler, and includes screenshot verification tests for the rotation scenario.

Gate verification was blocked by an environment issue — the iOS simulator in CI doesn't visually reproduce the cell rendering regression. Code review confirms the implementation is correct and the PR's fix is the best among all candidates explored (by code analysis and prior session's try-fix results).


Root Cause

On iOS 26, when a device is rotated while displaying a horizontal CollectionView, the CustomUICollectionViewCompositionalLayout (CV2 handler, Items2/iOS) doesn't override ShouldInvalidateLayoutForBoundsChange. The base UICollectionViewCompositionalLayout doesn't auto-invalidate on all size changes, so cells are not re-measured with the new bounds. Text becomes invisible until the next forced layout update (e.g., adding an item).

Why CV2 only: Items2/iOS was created from scratch and this override was not carried over from the deprecated Items/iOS handler (ItemsViewLayout.cs:594), which already had the equivalent fix.


Fix Quality Assessment

✅ What the Fix Does Well

  1. Correct API choiceShouldInvalidateLayoutForBoundsChange is the designated iOS method for this use case
  2. Performance optimization — Caches _currentSize to avoid spurious invalidations on scroll bounces
  3. Proper float comparison — Uses IsCloseTo() extension (0.001 tolerance) instead of direct equality
  4. Minimal scope — 15 lines, one method override in the correct class
  5. Mirrors established patternItems/iOS/ItemsViewLayout.cs:594-602 has an identical override (battle-tested)
  6. Tests included — Rotation scenario test with VerifyScreenshot()

🟡 Minor Issues (Non-blocking)

1. Mixed indentation in ShouldInvalidateLayoutForBoundsChange:
The new method mixes 4-space indentation (for method braces) with tab indentation (for the body). The rest of the file uses tabs throughout. Should use consistent tab indentation.

 public override bool ShouldInvalidateLayoutForBoundsChange(CGRect newBounds)
-        {                                         // ← spaces (should be tab)
-            if (newBounds.Size.IsCloseTo(...))    // ← spaces (should be tab)
+		{                                          // ← tab (consistent)
+			if (newBounds.Size.IsCloseTo(...))     // ← tab (consistent)

2. Missing newline at end of Issue32435.cs test file:
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32435.cs ends with #endif and no trailing newline. Most editors and git tools expect files to end with a newline.

3. Difference from deprecated handler (informational):
The deprecated Items/iOS/ItemsViewLayout.cs uses CollectionView.AdjustedContentInset.InsetRect(newBounds).Size (accounting for safe area insets), while this PR directly returns true. For rotation cases, returning true is sufficient. The adjusted size approach would be marginally more precise for edge cases involving simultaneous safe area changes, but this is not a blocker.


Fix Comparison

# Source Approach Assessment
PR PR #32664 ShouldInvalidateLayoutForBoundsChange + _currentSize cache Best — clean, minimal, performant
1 try-fix Always return true Functional but invalidates on every scroll bounce (wasteful)
2 try-fix PrepareLayout() + InvalidateLayout() Risky — can cause infinite layout loops
3 try-fix Compare CollectionView.Bounds + GetInvalidationContextForBoundsChange Complex (57 lines), race condition risk

Selected Fix: PR's fix — correct, minimal, and consistent with the established pattern.


Platform Coverage

Platform Status Notes
iOS ✅ Fixed Primary platform affected; fix in CV2 iOS handler
MacCatalyst ✅ Should work Same code path (Items2/iOS compiles for both)
Android ✅ Not affected Items2 has no Android code
CV1 (deprecated) ✅ Not affected Items/iOS already has this fix

Gate Status

❌ BLOCKED by environment — iOS simulator doesn't reproduce the visual rendering regression. Both test runs (with and without fix) pass. This is not a fix quality issue — it's a simulator environment limitation.


Title & Description Review

Title: [iOS][CV2] Fix Rotating the Simulator causes the text on the collection view to disappear.

  • The text after "Fix" is a verbatim copy of the issue title rather than describing the fix
  • Trailing period should be removed
  • [CV2] is non-standard but acceptable

Suggested title: [iOS] CollectionView: Fix text disappearing after rotation by invalidating layout on bounds change

Description: Has the NOTE block and basic details. Could benefit from an explicit root cause section.


Recommendations for PR Author

  1. Fix indentation — Align new method body to use consistent tabs matching the rest of the file
  2. Add trailing newline to Issue32435.cs test file
  3. Optional title improvement — Describe the fix rather than repeating the issue title
  4. These are minor style issues; no correctness problems exist

Key Technical Insights (for future maintainers)

  • Always carry over ShouldInvalidateLayoutForBoundsChange when creating new UICollectionViewCompositionalLayout subclasses — the base class doesn't auto-invalidate on size changes in all orientations
  • CV2 vs CV1 parity: When implementing features in Items2/iOS, cross-check Items/iOS for existing solutions to similar problems
  • Don't use PrepareLayout() to call InvalidateLayout() — can cause infinite layout loops
  • Don't read CollectionView.Bounds inside ShouldInvalidateLayoutForBoundsChange — may race with layout system; use cached size instead

📋 Expand PR Finalization Review
Title: ⚠️ Needs Update

Current: [iOS][CV2] Fix Rotating the Simulator causes the text on the collection view to disappear.

Recommended: [iOS] CollectionView2: Invalidate layout on bounds size change to fix text disappearing after rotation

Description: ✅ Good

Description needs updates. See details below.

✨ Suggested PR Description

[!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!

Root Cause

CustomUICollectionViewCompositionalLayout (a subclass of UICollectionViewCompositionalLayout in the CV2 handler) did not override ShouldInvalidateLayoutForBoundsChange. The base implementation does not guarantee returning true when only the size changes (e.g., during device rotation), so cells were not re-measured after orientation change, causing their text to disappear.

This is a .NET 10 regression — the CV2 (Items2/) handler is new and does not include the invalidation logic that the older Items/ handler (which has ItemsViewLayout.ShouldInvalidateLayoutForBoundsChange) already provides. The issue does not reproduce on .NET 9 (9.0.111) which uses the Items/ handler for iOS.

Description of Change

Added ShouldInvalidateLayoutForBoundsChange override in CustomUICollectionViewCompositionalLayout (LayoutFactory2.cs) that:

  1. Tracks the last-known bounds size in a _currentSize field
  2. Returns true (forcing layout invalidation) when the size has changed — e.g., on rotation
  3. Falls back to the base implementation when the size is unchanged (e.g., scroll position change)

Uses the existing IsCloseTo(CGSize) extension from SizeExtensions for float-safe comparison.

File changed:

  • src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs — added 15 lines (one field, one method override)

Issues Fixed

Fixes #32435

Platforms Tested

  • iOS
  • Android
  • Windows
  • Mac
Code Review: ✅ Passed

Code Review — PR #32664

🟡 Suggestions


1. Mixed Tab/Space Indentation in New Method

File: src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs
Lines: 504–516

The existing class body uses tabs for indentation. The new ShouldInvalidateLayoutForBoundsChange method mixes tabs (for if condition and body) with spaces (for the braces and outer method body). This is visible in the diff:

// Method signature uses tabs (correct)
		public override bool ShouldInvalidateLayoutForBoundsChange(CGRect newBounds)
// Opening brace uses 8 spaces instead of tabs (incorrect)
        {

Recommendation: Replace spaces with tabs to match the surrounding code style. The full method should be indented with 2 tabs (since it's a member of a class that's inside a namespace):

		public override bool ShouldInvalidateLayoutForBoundsChange(CGRect newBounds)
		{
			if (newBounds.Size.IsCloseTo(_currentSize))
			{
				return base.ShouldInvalidateLayoutForBoundsChange(newBounds);
			}

			// Size has changed (e.g., rotation), so we need to invalidate the layout
			// to ensure cells are properly measured and displayed
			_currentSize = newBounds.Size;
			return true;
		}

2. Trailing Whitespace on Blank Line

File: src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs
Line: 511 (blank line between the if block and the comment)

The diff shows a single space character on this line. It should be a completely empty line.


3. _currentSize Initializes to CGSize.Empty — First Call Always Returns true

File: src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs
Line: 453, 507

_currentSize is a value-type CGSize field that defaults to (0, 0). On the very first call to ShouldInvalidateLayoutForBoundsChange, newBounds.Size.IsCloseTo(CGSize.Empty) will return false for any non-zero bounds, so the method unconditionally returns true and stores the initial size.

This is harmless (the initial layout invalidation is valid), but it means the base class is never consulted on the first call. If this ever needs to be predictable, a bool _initialized guard could be used. As-is, the behavior is acceptable.


4. Android Snapshot Added for an iOS-Only Fix

File: src/Controls/tests/TestCases.Android.Tests/snapshots/android/VerifyCollectionViewTextShouldAppearAfterRotatingTheDevice.png

The fix is in Items2/iOS/LayoutFactory2.cs (iOS/MacCatalyst only). The test is guarded by #if TEST_FAILS_ON_CATALYST && TEST_FAILS_ON_WINDOWS, which means it compiles and runs on both iOS and Android.

Since there's no bug on Android, the Android snapshot just records the baseline appearance. This is not incorrect, but it's slightly confusing — a reader might wonder why there's an Android snapshot for an iOS-only fix. A comment in the test explaining why Android is included would help.


5. Missing Newline at End of Test File

File: src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32435.cs

The file ends without a trailing newline (\ No newline at end of file in the diff). This is a minor style issue — most files in the repo end with a newline.


✅ Looks Good

  • Minimal, targeted fix: Only 15 lines added in a focused override. No collateral changes.
  • Uses existing extension method: IsCloseTo(CGSize) from SizeExtensions (in Items/iOS/) is already used elsewhere in the Items handlers for exactly this kind of comparison.
  • Test reproduces the bug correctly: The test rotates to landscape then back to portrait (mirrors the exact steps from the issue report) and verifies with a screenshot.
  • No impact on non-rotation paths: The guard if (newBounds.Size.IsCloseTo(_currentSize)) ensures only actual size changes (not scroll-position-driven bounds changes) trigger the invalidation, preventing performance regression.
  • PlatformAffected.iOS on HostApp [Issue] attribute is correct — the bug only affects iOS.

@rmarinho rmarinho added s/agent-approved AI agent recommends approval - PR fix is correct and optimal s/agent-gate-failed AI could not verify tests catch the bug s/agent-fix-lose Author adopted the agent's fix and it turned out to be bad s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) labels Feb 16, 2026
@kubaflo kubaflo added s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates and removed s/agent-fix-lose Author adopted the agent's fix and it turned out to be bad s/agent-gate-failed AI could not verify tests catch the bug labels Feb 20, 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 resolve conflicts?

@github-actions

github-actions Bot commented Mar 30, 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 -- 32664

Or

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

@devanathan-vaithiyanathan

Copy link
Copy Markdown
Contributor Author

Could you please resolve conflicts?

@kubaflo , I have resolved the conflicts

@MauiBot MauiBot added s/agent-changes-requested AI agent recommends changes - found a better alternative or issues and removed s/agent-approved AI agent recommends approval - PR fix is correct and optimal labels Mar 30, 2026
@dotnet dotnet deleted a comment from MauiBot Mar 30, 2026
@dotnet dotnet deleted a comment from MauiBot Mar 30, 2026
@dotnet dotnet deleted a comment from MauiBot May 24, 2026
@kubaflo

kubaflo commented May 24, 2026

Copy link
Copy Markdown
Contributor

/review -b feature/refactor-copilot-yml

1 similar comment
@kubaflo

kubaflo commented May 24, 2026

Copy link
Copy Markdown
Contributor

/review -b feature/refactor-copilot-yml

MauiBot

This comment was marked as outdated.

@kubaflo

kubaflo commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

/review -b feature/enhanced-reviewer -p ios

@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 — 3 findings

See inline comments for details.

@MauiBot MauiBot added s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates and removed s/agent-fix-win AI found a better alternative fix than the PR labels Jun 6, 2026
MauiBot

This comment was marked as outdated.

@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, and resolve conflicts?

@devanathan-vaithiyanathan

Copy link
Copy Markdown
Contributor Author

Could you please check the ai's suggestions, and resolve conflicts?

@kubaflo , I have addressed the AI suggestion and resolved the conflicts.

@kubaflo

kubaflo commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

/review -b feature/enhanced-reviewer -p ios

@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 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 — 3 findings

See inline comments for details.

// Size has changed (e.g., rotation), so we need to invalidate the layout
// to ensure cells are properly measured and displayed
_currentSize = newBounds.Size;
return true;

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] CollectionView iOS/MacCatalyst — Returning true invalidates the compositional layout, but it leaves CollectionViewHandler2’s MeasureFirstItem cache intact. TemplatedCell2 reuses that cached first-item size after a bounds change, so rotations or split-view resizes can still lay out cells with the pre-rotation measurement for the default MeasureFirstItem strategy. Please clear the cached first-item size when the bounds size changes before invalidating the layout.

App.Tap("AddButton");
App.SetOrientationLandscape();
App.SetOrientationPortrait();
VerifyScreenshot();

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.

[moderate] Regression Prevention — The screenshot is captured immediately after two orientation changes. SetOrientationPortrait() only sends the command; it does not wait for the rotation/layout pass to settle, and nearby rotation screenshot tests use VerifyScreenshot(..., retryTimeout: TimeSpan.FromSeconds(2)) for this reason. Without a retry this regression test can snapshot mid-rotation and become flaky on slower iOS simulators.

@@ -0,0 +1,24 @@
#if TEST_FAILS_ON_CATALYST && TEST_FAILS_ON_WINDOWS //Issue reproduce only when rotating device.

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.

[moderate] Regression Prevention — This guard also compiles the test into Android because the Android test project defines both TEST_FAILS_ON_CATALYST and TEST_FAILS_ON_WINDOWS, even though the product fix is iOS Items2-only and the issue is marked iOS. That adds an Android screenshot baseline for an unrelated platform and can fail on Android rendering/orientation differences which this PR does not change; scope the regression to #if IOS (or otherwise document why Android coverage is intentional).

@MauiBot MauiBot added s/agent-fix-win AI found a better alternative fix than the PR and removed s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates labels Jun 15, 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.

AI Review Summary

@devanathan-vaithiyanathan — new AI review results are available based on this last commit: 1353866. 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)
🖥️ Issue32435 Issue32435 ✅ FAIL — 225s ✅ PASS — 94s
🔴 Without fix — 🖥️ Issue32435: FAIL ✅ · 225s
  Determining projects to restore...
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 461 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 472 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Essentials/src/Essentials.csproj (in 4.46 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/Foldable/src/Controls.Foldable.csproj (in 5.15 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj (in 5.16 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Core/maps/src/Maps.csproj (in 5.16 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/BlazorWebView/src/Maui/Microsoft.AspNetCore.Components.WebView.Maui.csproj (in 5.16 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/Maps/src/Controls.Maps.csproj (in 5.16 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Xaml/Controls.Xaml.csproj (in 5.16 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 5.17 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Core/src/Core.csproj (in 5.17 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.14376862
  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.14376862
  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.14376862
  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.14376862
  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.14376862
  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.14376862
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14376862
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14376862
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14376862
  Controls.Maps -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.Maps/Debug/net10.0-ios26.0/Microsoft.Maui.Controls.Maps.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
  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:01:59.46
  Determining projects to restore...
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/UITest.Core/UITest.Core.csproj (in 515 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/VisualTestUtils/VisualTestUtils.csproj (in 515 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/tests/CustomAttributes/Controls.CustomAttributes.csproj (in 515 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 515 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 536 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Essentials/src/Essentials.csproj (in 542 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 566 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Core/src/Core.csproj (in 585 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/UITest.NUnit/UITest.NUnit.csproj (in 1.43 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/UITest.Appium/UITest.Appium.csproj (in 1.7 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/UITest.Analyzers/UITest.Analyzers.csproj (in 2.22 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/TestUtils/src/VisualTestUtils.MagickNet/VisualTestUtils.MagickNet.csproj (in 2.17 sec).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/tests/TestCases.iOS.Tests/Controls.TestCases.iOS.Tests.csproj (in 2.19 sec).
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14376862
  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.14376862
  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.14376862
  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.14376862
  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.05]   Discovering: Controls.TestCases.iOS.Tests
[xUnit.net 00:00:00.14]   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/15/2026 4:36:23 AM FixtureSetup for Issue32435(iOS)
>>>>> 6/15/2026 4:36:27 AM VerifyCollectionViewTextShouldAppearAfterRotatingTheDevice Start
>>>>> 6/15/2026 4:36:31 AM VerifyCollectionViewTextShouldAppearAfterRotatingTheDevice Stop
>>>>> 6/15/2026 4:36:31 AM Log types: syslog, crashlog, performance, safariConsole, safariNetwork, server
  Failed VerifyCollectionViewTextShouldAppearAfterRotatingTheDevice [3 s]
  Error Message:
   VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyCollectionViewTextShouldAppearAfterRotatingTheDevice.png (1.85% difference)
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

  Stack Trace:
     at VisualTestUtils.VisualRegressionTester.Fail(String message) in /_/src/TestUtils/src/VisualTestUtils/VisualRegressionTester.cs:line 162
   at VisualTestUtils.VisualRegressionTester.VerifyMatchesSnapshot(String name, ImageSnapshot actualImage, String environmentName, ITestContext testContext) in /_/src/TestUtils/src/VisualTestUtils/VisualRegressionTester.cs:line 123
   at Microsoft.Maui.TestCases.Tests.UITest.<VerifyScreenshot>g__Verify|13_0(String name, <>c__DisplayClass13_0&) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 477
   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 309
   at Microsoft.Maui.TestCases.Tests.Issues.Issue32435.VerifyCollectionViewTextShouldAppearAfterRotatingTheDevice() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32435.cs:line 21
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

NUnit Adapter 4.5.0.0: Test execution complete
Results File: /Users/cloudtest/vss/_work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue32435.trx

Test Run Failed.
Total tests: 1
     Failed: 1
 Total time: 1.1145 Minutes
>>> TRX_RESULT_FILE: /Users/cloudtest/vss/_work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue32435.trx

🟢 With fix — 🖥️ Issue32435: PASS ✅ · 94s
  Determining projects to restore...
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 313 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 321 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Essentials/src/Essentials.csproj (in 325 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 354 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Core/src/Core.csproj (in 367 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.14376862
  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.14376862
  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.14376862
  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.14376862
  Controls.BindingSourceGen -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
  Maps -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/Maps/Debug/net10.0-ios26.0/Microsoft.Maui.Maps.dll
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14376862
  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.14376862
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14376862
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14376862
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14376862
  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
  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:00:46.42
  Determining projects to restore...
  Restored /Users/cloudtest/vss/_work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 378 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Essentials/src/Essentials.csproj (in 379 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 369 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 398 ms).
  Restored /Users/cloudtest/vss/_work/1/s/src/Core/src/Core.csproj (in 422 ms).
  8 of 13 projects are up-to-date for restore.
  ##vso[build.updatebuildnumber]10.0.90-ci+azdo.14376862
  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.14376862
  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.14376862
  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.14376862
  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
  UITest.Appium -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/UITest.Appium/Debug/net10.0/UITest.Appium.dll
  VisualTestUtils.MagickNet -> /Users/cloudtest/vss/_work/1/s/artifacts/bin/VisualTestUtils.MagickNet/Debug/netstandard2.0/VisualTestUtils.MagickNet.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.04]   Discovering: Controls.TestCases.iOS.Tests
[xUnit.net 00:00:00.15]   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/15/2026 4:37:59 AM FixtureSetup for Issue32435(iOS)
>>>>> 6/15/2026 4:38:03 AM VerifyCollectionViewTextShouldAppearAfterRotatingTheDevice Start
>>>>> 6/15/2026 4:38:05 AM VerifyCollectionViewTextShouldAppearAfterRotatingTheDevice Stop
  Passed VerifyCollectionViewTextShouldAppearAfterRotatingTheDevice [2 s]
NUnit Adapter 4.5.0.0: Test execution complete
Results File: /Users/cloudtest/vss/_work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue32435.trx

Test Run Successful.
Total tests: 1
     Passed: 1
 Total time: 21.4433 Seconds
>>> TRX_RESULT_FILE: /Users/cloudtest/vss/_work/1/s/CustomAgentLogsTmp/UITests/TestResults/Issue32435.trx

📁 Fix files reverted (2 files)
  • eng/pipelines/ci-copilot.yml
  • src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs

UI Tests — CollectionView

Detected UI test categories: CollectionView

Deep UI tests — 331 passed, 87 failed across 1 category on platform-pool agent (replaces in-process counts above).

🧪 UI Test Execution Results (deep, platform pool)

Category Tests Snapshot diffs
CollectionView 331/421 (87 ❌) 85 diff PNGs
CollectionView — 87 failed tests
VerifyDataTemplateParentIsNotNull
System.InvalidOperationException : 
Snapshot different than baseline: VerifyDataTemplateParentIsNotNull.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: VerifyDataTemplateParentIsNotNull.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
...
BottomSheetDetentHeightIsCorrectWhenCollectionViewIsMeasuredBeforeMount
System.InvalidOperationException : 
Snapshot different than baseline: BottomSheetDetentHeightIsCorrectWhenCollectionViewIsMeasuredBeforeMount.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: BottomSheetDetentHeightIsCorrectWhenCollectionViewIsMeasuredBeforeMount.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baselin
...
VerticalItemsRemainFullyVisibleAfterChangingSpacing
System.InvalidOperationException : 
Snapshot different than baseline: VerticalItemsRemainFullyVisibleAfterChangingSpacing.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: VerticalItemsRemainFullyVisibleAfterChangingSpacing.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then
...
VerifyScrollToByItemWithCenterPositionAndVerticalList_Carrot
System.InvalidOperationException : 
Snapshot different than baseline: VerifyScrollToByItemWithCenterPositionAndVerticalList_Carrot.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: VerifyScrollToByItemWithCenterPositionAndVerticalList_Carrot.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this is
...
Issue18751Test
System.InvalidOperationException : 
Snapshot different than baseline: Issue18751Test.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: Issue18751Test.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 arti
...
RightToLeftFlowDirectionShouldWork
System.InvalidOperationException : 
Snapshot different than baseline: RightToLeftFlowDirectionShouldWork.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: RightToLeftFlowDirectionShouldWork.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
...
VerifyScrollToByItemWithEndPositionAndVerticalList_Carrot
System.InvalidOperationException : 
Snapshot different than baseline: VerifyScrollToByItemWithEndPositionAndVerticalList_Carrot.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: VerifyScrollToByItemWithEndPositionAndVerticalList_Carrot.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a 
...
VerifyScrollToByItemWithMakeVisiblePositionAndVerticalList_Carrot
System.InvalidOperationException : 
Snapshot different than baseline: VerifyScrollToByItemWithMakeVisiblePositionAndVerticalList_Carrot.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: VerifyScrollToByItemWithMakeVisiblePositionAndVerticalList_Carrot.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has change
...
CollectionViewPreSelectionShouldUpdate
System.InvalidOperationException : 
Snapshot different than baseline: CollectionViewPreSelectionShouldUpdate.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: CollectionViewPreSelectionShouldUpdate.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
...
VerifyModelItemsObservableCollectionWhenMultipleModePreSelection
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.CollectionView_ItemsSourceFeatureTests.VerifyModelItemsObservableCollectionWhenMultipleModePreSelection() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/CollectionView_ItemsSourceFeatureTests.cs:line 674
   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.MethodBaseInvok
...
CollectionViewWithFallbackVauleShouldUpdateAtRunTime
System.InvalidOperationException : 
Snapshot different than baseline: CollectionViewWithFallbackVauleShouldUpdateAtRunTime.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: CollectionViewWithFallbackVauleShouldUpdateAtRunTime.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), th
...
CollectionViewAddGroupWhenViewIsEmpty
System.InvalidOperationException : 
Snapshot different than baseline: CollectionViewAddGroupWhenViewIsEmpty.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: CollectionViewAddGroupWhenViewIsEmpty.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.

...
VerifyCustomEmptyViewDisplaysCorrectly_WithLeftToRightFlowDirection
System.InvalidOperationException : 
Snapshot different than baseline: VerifyCustomEmptyViewDisplaysCorrectly_WithLeftToRightFlowDirection.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: VerifyCustomEmptyViewDisplaysCorrectly_WithLeftToRightFlowDirection.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has ch
...
VerifyModelItemsObservableCollectionWhenSingleModePreSelection
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.CollectionView_ItemsSourceFeatureTests.VerifyModelItemsObservableCollectionWhenSingleModePreSelection() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/CollectionView_ItemsSourceFeatureTests.cs:line 652
   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
...
VerifyFlowDirectionLTRAndMeasureAllItemsWithGroupedList
System.InvalidOperationException : 
Snapshot different than baseline: VerifyFlowDirectionLTRAndMeasureAllItemsWithGroupedList.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: VerifyFlowDirectionLTRAndMeasureAllItemsWithGroupedList.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bu
...
VerifySelectionModeMultipleWhenProgrammaticSelectionWorksWithVerticalList
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.CollectionView_SelectionFeatureTests.VerifySelectionModeMultipleWhenProgrammaticSelectionWorksWithVerticalList() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/CollectionView_SelectionFeatureTests.cs:line 533
   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.MethodBase
...
VerifyModelItemsGroupedListWhenMultipleModePreSelection
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.CollectionView_ItemsSourceFeatureTests.VerifyModelItemsGroupedListWhenMultipleModePreSelection() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/CollectionView_ItemsSourceFeatureTests.cs:line 774
   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.Interp
...
SingleItemAlignmentInCollectionViewHorizontalGridLayout
System.InvalidOperationException : 
Snapshot different than baseline: SingleItemAlignmentInCollectionViewHorizontalGridLayout.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: SingleItemAlignmentInCollectionViewHorizontalGridLayout.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bu
...
VerifyCollectionViewEmptyView
System.InvalidOperationException : 
Snapshot different than baseline: VerifyCollectionViewEmptyView.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: VerifyCollectionViewEmptyView.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 attachm
...
CollectionViewMeasureFirstItem
System.InvalidOperationException : 
Snapshot different than baseline: CollectionViewMeasureFirstItem.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: CollectionViewMeasureFirstItem.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
...
CollectionViewSelectionChangesVisualState
System.InvalidOperationException : 
Snapshot different than baseline: CollectionViewSelectionChangesVisualState.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: CollectionViewSelectionChangesVisualState.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
...
RefreshShouldNotChangeSize
System.InvalidOperationException : 
Snapshot different than baseline: RefreshShouldNotChangeSize.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: RefreshShouldNotChangeSize.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
...
CollectionViewHeaderSizewithIsVisibleBinding
System.InvalidOperationException : 
Snapshot different than baseline: CollectionViewHeaderSizewithIsVisibleBinding.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: CollectionViewHeaderSizewithIsVisibleBinding.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 ba
...
VerifyScrollToByIndexWithCenterPositionAndVerticalList_Carrot
System.InvalidOperationException : 
Snapshot different than baseline: VerifyScrollToByIndexWithCenterPositionAndVerticalList_Carrot.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: VerifyScrollToByIndexWithCenterPositionAndVerticalList_Carrot.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this 
...
CollectionViewDuplicateViewsWhenAddItemToGroup
System.InvalidOperationException : 
Snapshot different than baseline: CollectionViewDuplicateViewsWhenAddItemToGroup.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: CollectionViewDuplicateViewsWhenAddItemToGroup.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 th
...
FooterWithEmptyCVShouldHaveCorrectSize
System.InvalidOperationException : 
Snapshot different than baseline: FooterWithEmptyCVShouldHaveCorrectSize.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: FooterWithEmptyCVShouldHaveCorrectSize.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
...
CollectionViewShouldChangeItemsLayout
System.InvalidOperationException : 
Snapshot different than baseline: CollectionViewShouldChangeItemsLayout.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: CollectionViewShouldChangeItemsLayout.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.

...
VerifyCustomSizedEmptyViewDisplaysCorrectly_WithRightToLeftFlowDirection
System.InvalidOperationException : 
Snapshot different than baseline: VerifyCustomSizedEmptyViewDisplaysCorrectly_WithRightToLeftFlowDirection.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: VerifyCustomSizedEmptyViewDisplaysCorrectly_WithRightToLeftFlowDirection.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct basel
...
CheckEmptyViewMargin
System.InvalidOperationException : 
Snapshot different than baseline: CheckEmptyViewMargin.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: CheckEmptyViewMargin.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 th
...
HeaderAndFooterShouldBeVisible
System.InvalidOperationException : 
Snapshot different than baseline: HeaderAndFooterShouldBeVisible.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: HeaderAndFooterShouldBeVisible.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
...

(+57 more — see TRX in artifact)

📎 Download drop-deep-uitests artifact (TRX + snapshot diffs)


Pre-Flight — Context & Validation

Issue: #32435 - [.NET 10]I1_Add_Items_Linear_Layout - Rotating the Simulator causes the text on the collection view to disappear.
PR: #32664 - [iOS][CV2] Fix Rotating the Simulator causes the text on the collection view to disappear.
Platforms Affected: iOS
Files Changed: 1 implementation, 5 test/snapshot

Key Findings

  • Issue #32435 repros on iOS 26 with CollectionView2 horizontal layout: after adding an item and rotating, item text disappears until another item update forces layout work.
  • PR production fix modifies src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs, the active iOS/MacCatalyst Items2 CollectionView handler path.
  • Gate was already completed before this phase: without fix the iOS Issue32435 test fails; with the PR fix it passes.
  • Code review found the regression test still includes Android even though the production fix is iOS-only.
  • Code review also found the PR's layout invalidation does not clear the MeasureFirstItem first-item size cache on bounds-size changes.

Code Review Summary

Verdict: NEEDS_CHANGES
Confidence: low
Errors: 1 | Warnings: 2 | Suggestions: 0

Key code review findings:

  • src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32435.cs:1 — regression test runs on Android for an iOS-only Items2/iOS production fix.
  • ⚠️ src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32435.cs:19-21 — screenshot is captured immediately after orientation changes and may be flaky before layout settles.
  • ⚠️ src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs:569 — size-change invalidation does not clear the MeasureFirstItem cached first item size.

Fix Candidates

# Source Approach Test Result Files Changed Notes
PR PR #32664 Override CustomUICollectionViewCompositionalLayout.ShouldInvalidateLayoutForBoundsChange and return true when bounds size changes. ✅ PASSED (Gate) LayoutFactory2.cs Original PR fix; does not clear first-item measurement cache.

Code Review — Deep Analysis

Code Review — PR #32664

Independent Assessment

What this changes: Adds an iOS/MacCatalyst UICollectionViewCompositionalLayout.ShouldInvalidateLayoutForBoundsChange override for the Items2 CollectionView layout so size changes, such as rotation, invalidate layout. Adds a regression HostApp page, Appium screenshot test, and Android/iOS baselines.

Inferred motivation: Fix a CollectionView2 rotation regression where horizontally laid-out item text disappears until another item update forces layout work.

Reconciliation with PR Narrative

Author claims: The PR fixes iOS 26 text disappearance after simulator rotation by invalidating layout on bounds changes, with issue #32435 coverage.

Agreement/disagreement: The production change matches the stated root cause at a high level. The test coverage does not fully match the claimed iOS-only fix because it also runs on Android, where this production code is not used.

Prior Review Reconciliation

Prior ❌ Error Finding Source Status Evidence
Missing ios-26 screenshot baseline MauiBot review / inline comments ✅ Fixed Current PR includes src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/VerifyCollectionViewTextShouldAppearAfterRotatingTheDevice.png.
Gate/test did not reliably validate the fix; Android passed without the iOS fix / with-fix run failed MauiBot review summaries ❌ Unresolved Current test still uses #if TEST_FAILS_ON_CATALYST && TEST_FAILS_ON_WINDOWS, includes Android, and still snapshots immediately after rotation.
Android scope for an iOS-only Items2/iOS production fix MauiBot inline comments ❌ Unresolved Issue32435.cs:1 still compiles outside iOS and an Android snapshot is still added.

Blast Radius Assessment

  • Runs for all instances: Yes, for Items2 iOS/MacCatalyst CollectionView list/grid layouts and vertical CarouselView snap layouts using CustomUICollectionViewCompositionalLayout; every bounds-size change can now invalidate layout.
  • Startup impact: No direct startup path; runs during collection layout/bounds changes.
  • Static/shared state: No static state. _currentSize is instance state scoped to the layout.

CI Status

  • Required-check result: undetermined via required-check command.
  • Classification: gh pr checks 32664 --repo dotnet/maui --required failed because gh is unauthenticated. Public check-run API for head SHA 13538663d66b... shows maui-pr and related check runs completed successfully, but required-check status could not be verified with the mandated command.
  • Action taken: capped confidence due required-check tool unavailability.

Findings

❌ Error — Regression test runs on Android for an iOS-only fix

src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32435.cs:1

The production fix is only in src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs, and the issue is marked PlatformAffected.iOS, but the test conditional is #if TEST_FAILS_ON_CATALYST && TEST_FAILS_ON_WINDOWS. Existing usage means this includes mobile platforms such as Android, and this PR also adds an Android snapshot.

That makes the regression gate invalid: Android can pass with or without the iOS layout fix, so the test does not prove the changed code catches the bug. Prior reviews already observed this gate failure mode, and it remains unresolved. Scope this test to iOS, e.g. #if IOS, unless Android behavior is intentionally being fixed too.

⚠️ Warning — Screenshot is captured before rotation layout is allowed to settle

src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32435.cs:19-21

The test calls SetOrientationLandscape(), SetOrientationPortrait(), then immediately VerifyScreenshot(). Rotation and compositional layout invalidation are asynchronous enough that this can capture during transition/relayout rather than after the final layout. Prefer re-waiting for a stable element and using VerifyScreenshot(retryTimeout: TimeSpan.FromSeconds(2)), consistent with newer orientation screenshot tests.

⚠️ Warning — Size-change invalidation does not clear MeasureFirstItem cache

src/Controls/src/Core/Handlers/Items2/iOS/LayoutFactory2.cs:569

When bounds size changes, the new override updates _currentSize and returns true, but it does not clear CollectionViewHandler2’s cached first item size used by ItemSizingStrategy.MeasureFirstItem. TemplatedCell2 reuses that cached size even when constraints change. A rotation/window resize with MeasureFirstItem can therefore keep stale dimensions after the new invalidation path runs. The legacy Items1 layout updates constraints and clears sizing caches on bounds changes.

Failure-Mode Probing

  • What happens on platforms not using Items2/iOS? The test can still run on Android, but the production fix cannot affect Android, so the regression proof is invalid.
  • What happens during rotation before layout settles? The screenshot can be taken before the final CollectionView layout pass, making the test flaky or falsely failing.
  • What happens with MeasureFirstItem after size changes? Layout invalidates, but the first-item measured size cache can remain stale.
  • What happens on handler reconnect/disconnect? No new subscriptions or static state are introduced; layout state is instance-scoped.

Verdict: NEEDS_CHANGES

Confidence: low, because required-check status could not be collected through authenticated gh pr checks --required, and prior gate failures remain relevant.

Summary: The production approach is plausible for the reported iOS rotation issue, but the regression test still runs where the fix cannot apply and can pass without validating the changed code. The test should be scoped to iOS and stabilized after rotation before this is ready.


Fix — Analysis & Comparison

Fix Candidates

# Source Approach Test Result Files Changed Notes
1 maui-expert-reviewer Detect Items2 iOS CollectionView.Bounds.Size changes in ItemsViewController2, clear MeasureFirstItem cache, and invalidate layout. ✅ PASS 1 file Addresses stale first-item measurement cache; broader controller lifecycle invalidation.
PR PR #32664 Override CustomUICollectionViewCompositionalLayout.ShouldInvalidateLayoutForBoundsChange when bounds size changes. ✅ PASSED (Gate) 1 file Original PR; layout-local but leaves measurement cache intact.

Cross-Pollination

Model Round New Ideas? Details
gpt-5.5 / maui-expert-reviewer 1 Yes Controller-level bounds-size detection with cache clear.

Exhausted: No — stopped because candidate #1 passed all targeted iOS tests and is demonstrably stronger than the PR fix for the stale MeasureFirstItem cache failure mode.
Selected Fix: Candidate #1 — It passes the same iOS regression test as the PR fix and additionally clears MAUI measurement cache state on bounds-size changes.


Report — Final Recommendation

Comparative Candidate Report — PR #32664

Inputs Compared

Candidate Source Regression result Summary
pr Raw PR #32664 ✅ Passed gate Adds layout invalidation from CustomUICollectionViewCompositionalLayout.ShouldInvalidateLayoutForBoundsChange on bounds-size changes.
pr-plus-reviewer PR plus expert reviewer feedback in sandbox copy Not re-run; composed from passing PR fix plus reviewer feedback Keeps PR layout invalidation, adds controller-level MeasureFirstItem cache clearing on bounds-size changes, scopes the UI test to iOS, and adds screenshot retry.
try-fix-1 STEP 5a candidate ✅ Passed targeted iOS test Moves the bounds-size response to ItemsViewController2.ViewWillLayoutSubviews(), clears MeasureFirstItem cache, and invalidates layout.

No candidate in the available STEP 5a results failed regression tests. If any failed candidate existed, it would rank below the passing candidates per the requested rule.

Candidate Analysis

pr

Strengths:

  • Minimal and localized to LayoutFactory2.cs.
  • Gate evidence shows the iOS Issue32435 test fails without the fix and passes with it.

Weaknesses:

  • Does not clear CollectionViewHandler2's first-item measurement cache for ItemSizingStrategy.MeasureFirstItem.
  • The regression test runs outside the iOS Items2 production path and can snapshot immediately after rotation, making the test weaker than the production claim.

Rank: 3

try-fix-1

Strengths:

  • Passed the same targeted iOS regression test.
  • Directly addresses the stronger root-cause model by clearing the cached first-item size when bounds size changes.
  • Does not depend solely on UIKit calling ShouldInvalidateLayoutForBoundsChange.

Weaknesses:

  • Broader invalidation point: ViewWillLayoutSubviews() runs for every Items2 iOS/MacCatalyst CollectionView controller.
  • Does not include the reviewer-applied test scope and screenshot stabilization improvements as part of the candidate diff.

Rank: 2

pr-plus-reviewer

Strengths:

  • Preserves the PR's already gate-passing layout invalidation.
  • Adds the key technical improvement from try-fix-1: clear MeasureFirstItem cache on real bounds-size changes and invalidate the active collection layout.
  • Fixes the expert reviewer's test-quality findings by making the regression iOS-only and adding screenshot retry after rotation.

Weaknesses:

  • It has slightly more invalidation overlap than try-fix-1 because both the layout override and controller hook can invalidate on a size change.
  • The combined sandbox candidate was not gate-run per the instruction not to re-run gate verification; only patch-shape validation was performed.

Rank: 1

Winner

pr-plus-reviewer is the winning candidate.

It retains the raw PR's proven gate behavior while addressing all actionable expert-review findings. It is stronger than try-fix-1 because it includes the same cache-clear improvement plus the test-scope and screenshot-stability fixes, and it is stronger than pr because it closes the stale MeasureFirstItem cache gap.


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 15, 2026
@kubaflo kubaflo changed the base branch from main to inflight/current June 15, 2026 14:11
@kubaflo kubaflo merged commit d69cd21 into dotnet:inflight/current Jun 15, 2026
37 of 40 checks passed
@github-actions github-actions Bot added this to the .NET 10 SR9 milestone Jun 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

community ✨ Community Contribution partner/syncfusion Issues / PR's with Syncfusion collaboration 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.

[.NET 10]I1_Add_Items_Linear_Layout - Rotating the Simulator causes the text on the collection view to disappear.

9 participants