I’m seeing a visual glitch in SwiftUI List on iOS 26 when row order changes after a swipeActions action.
Setup:
List + ForEach of items Items are sorted dynamically by isSelected (unselected first, selected last) Swipe action toggles isSelected Row should animate to new position Problem:
On swipe select/unselect, the row sometimes appears to disappear briefly, then reappear in the new position Most visible when unselecting an item from the bottom selected group (it should move to top) Sometimes there is a temporary “empty gap” near the top during the move In some row styling setups, row corner masking also looks wrong during animation What I tried:
Different animations (default, easeInOut, spring) Adding/removing small dispatch delay before state change Moving section header content outside List Using custom row backgrounds/corners vs system row styling Keeping stable IDs in ForEach
Behavior still appears with native List + swipeActions on iOS 26.
So my question is:
Is this a known issue/regression with List row move animations on iOS 26? Recommended pattern to keep native swipe actions but avoid this visual artifact?
This worked smoothly on iOS 18 with the same approach, and the visual glitch appears only after moving to iOS 26.