recipe
dialog
`.sheet`: system owns detents, drag-dismissal, focus.
dialogsheetmodalpresentationguidance

On iPad
The same installed source at a regular width. It adapts its layout without a separate design.


Install
Nothing to install
Copy the snippet below. The native API is the whole treatment.
Usage
@State private var isEditing = false
Button("Edit profile") { isEditing = true }
.sheet(isPresented: $isEditing) {
NavigationStack {
ProfileEditor()
.navigationTitle("Edit profile")
.toolbar {
ToolbarItem(placement: .confirmationAction) {
Button("Done") { isEditing = false }
}
}
}
}
.registryItem("dialog")Why native is enough
.sheet + NavigationStack: edit/detail → chrome gets title, confirmation. Grabber, dismiss, keyboard, Liquid Glass: system. No wrapper.
Accessibility contract
- Sheets: modal VoiceOver, swipe-escape dismiss.
- Toolbar: system semantics, Done-Cancel.
- Sheet content: registry items, any-screen.
Details
| Kind | recipe |
| Version | 0.1.1 |
| Platforms | iOS 26.0+ |
| Dependencies | none |
| Source | none (native guidance) |