SwiftUI Reordering Beyond List

Published August 17, 2026
Abstract SwiftUI reordering illustration

SwiftUI's new reordering APIs let you add drag-to-reorder to stacks, grids, and custom layouts, as well as List. Apple introduced them at WWDC26, and its SwiftUI guide also notes that reordering is coming to watchOS for the first time.

This is a welcome addition. If a photo collection suits a grid, or a queue works better as a horizontal stack, rearranging its contents should fit that layout. Having framework support across those containers gives you more room to choose the interface that makes sense for your app.

Apple's reordering guide explains how the pieces fit together. Add reorderable() to the ForEach that generates the views, then apply the reorderContainer modifier to the enclosing container. Your items need identifiers that conform to Hashable and Sendable. When a drag finishes, the modifier's move closure receives a ReorderDifference describing the move. Your code uses that information to update the underlying collection.

There are also variants for multiple collections. For example, you can let someone rearrange photos within an album or move them between albums, using collection identifiers to track where they belong. These modifiers handle reordering within the container; dragging to another window or app needs separate drag-and-drop support.

I like that the same approach can cover a simple list and a more custom interface. If you've put off adding reordering to a grid because of the extra implementation work, these APIs look worth trying. Apple's guide includes examples for both single and multiple collections.

Availability note, 12 September 2026: These APIs require iOS 27, iPadOS 27, Mac Catalyst 27, macOS 27, visionOS 27, or watchOS 27 or later. Apps supporting earlier systems still need an alternative there.