Post

Apple updated its Human Interface Guidelines for Sheets on March 24, 2026 to add guidance for button placement in the toolbar. "In iOS & iPadOS, the Cancel button belongs on the leading edge of the top toolbar." Time to update my apps 🙂 Documentation: developer.apple.com/design/human...

3 reposts12 likes

Seems like there’s a difference between “close” and “cancel” where “cancel” is a destructive action with an opposite confirm button. Close is non-destructive so it stays in the primary trailing spot

Yes, close is to my knowledge trailing in as it is usually the only toolbar button. However, the button in messages is actually labeled as a cancel button when using VoiceOver (makes sense, content gets lost when closing it).

I don’t think the position is determined by the ButtonRole. If I use the cancel role for example, it’s also positioned on the trailing edge of the navigation bar. Which seems to be opposite to the cancellationAction ToolbarItemPlacement.

It always puts the button on the leading edge. And Apple positions X button on the trailing edge. bsky.app/profile/alpe...

Axel Le Pennec@alpennec.com

In SwiftUI (UIKit too?), there is the semantic cancellationAction ToolbarItemPlacement. “In iOS, iPadOS, tvOS, and watchOS, the system places cancellationAction items on the leading edge of the navigation bar.” Maybe there should be a closeAction too? developer.apple.com/documentatio...

So, we have 2 cases here. 1. You have cancel(X) and done(checkmark) buttons. Then you place cancel on leading edge and done on trailing edge. 2. You have only cancel(X) and you display it on the trailing edge as a single possible action.