A column has less room than a row, and the outer display in landscape overflows more often still. Without guidance the system cannot know that your compose button matters more than your sort button.
Assign visibility priority
.toolbar {
ToolbarItem { ComposeButton() }
.visibilityPriority(.high)
}
// UIKit
item.visibilityPriority = .high
Reserve .high for the few actions users reach for constantly. Marking everything high is the same as marking nothing.
Consolidate into the system overflow menu
Apps often grew their own ellipsis button next to the system one. On a vertical bar that reads as two identical menus. Move your items into the system menu:
.toolbar {
ToolbarOverflowMenu {
Button("Scan") { … }
Button("Connect") { … }
}
}
// UIKit
navigationItem.additionalOverflowItems = UIDeferredMenuElement({ provider in
provider(self.persistentOverflowItems())
})
Apple’s guidance is to reserve the ellipsis for overflow only.
Choose what compresses first
When space is tight, say whether bar items or toolbar items should win:
.toolbarVerticalCompressionBehavior(.prefersToolbarItems)
// UIKit
navigationItem.verticalBarCompressionBehavior = .prefersBarItems
Badges still work
Badges introduced in iOS 26 carry over, and are a good way to keep a signal visible on an item that has lost its text label:
InboxButton().badge(7)
// UIKit
item.badge = .count(7)
How to verify
Audit each screen’s bar in both axes — inner display landscape for the vertical bar, outer display landscape for heavier overflow. Confirm the actions you would put in a usability test are on screen rather than one tap deeper.