macOS Liquid Glass Designer
Modernize macOS SwiftUI UI by using standard app structure and system materials first; add custom glass only for app-specific surfaces.
Workflow
- Inspect the scene/root view and identify the pattern: split view, tab, sheet, toolbar, inspector, custom floating controls.
- Remove custom opaque backgrounds, scrims, and toolbar/sheet fills that fight system material unless intentionally required.
- Update standard SwiftUI structure and controls first.
- Add
glassEffect only where standard controls do not cover the design.
- Validate grouping, transitions, icon treatment, pointer/keyboard usability, and foreground activation. Use
macos-runtime-debugger for SwiftPM GUI apps.
Rules
- Prefer
NavigationSplitView; let sidebars use system Liquid Glass material.
- Use
backgroundExtensionEffect for hero/media that should extend beyond safe area near floating chrome.
- Keep inspectors visually lighter than or equal to the content they inspect.
- Keep
TabView for persistent top-level sections; do not force iPhone tab/search patterns onto macOS.
- Remove old
presentationBackground imitation layers when the system sheet material is enough.
- Put hierarchy-wide search on
NavigationSplitView; use searchToolbarBehavior for compact secondary search.
- Assume toolbar items live on floating glass; use
ToolbarSpacer, sharedBackgroundVisibility, and badge instead of custom chrome.
- Tint icons/glass only for semantic meaning.
- Prefer standard controls and system glass/prominent button styles before custom translucent buttons.
- Use
controlSize, buttonBorderShape, slider step/ticks/neutralValue, and Label before custom controls.
- Use concentric rectangle/container corner configuration for custom shapes that must align with sheet/card/window corners.
Custom Glass
glassEffect defaults to a capsule-like shape and vibrant text; pass an explicit shape when needed.
- Use
.interactive() for custom controls/containers with interactive elements.
- Put nearby custom glass in one
GlassEffectContainer; separate containers cannot sample each other correctly.
- Use
glassEffectID with a local @Namespace for collapsed/expanded morphing with stable identity.
Guardrails
- Do not rebuild sidebars, toolbars, sheets, or controls from scratch when SwiftUI APIs provide the behavior.
- Do not leave opaque backgrounds behind
NavigationSplitView, toolbars, or sheets by default.
- Do not scatter related glass elements across containers.
- Do not tint for decoration alone.
- Do not review Liquid Glass behavior from a bare SwiftPM executable; launch a foreground
.app bundle.
Use macos-swiftui-architect for scene architecture, macos-view-architect for large-view structure, macos-appkit-bridge for AppKit-only behavior, and macos-runtime-debugger for launch/log verification.
1---2name: macos-liquid-glass-designer3description: macOS SwiftUI Liquid Glass UI: modernize or review system materials, toolbars, search, controls, and custom glass; prefer native structure over hand-built chrome.4---56# macOS Liquid Glass Designer78Modernize macOS SwiftUI UI by using standard app structure and system materials first; add custom glass only for app-specific surfaces.910## Workflow11121. Inspect the scene/root view and identify the pattern: split view, tab, sheet, toolbar, inspector, custom floating controls.132. Remove custom opaque backgrounds, scrims, and toolbar/sheet fills that fight system material unless intentionally required.143. Update standard SwiftUI structure and controls first.154. Add `glassEffect` only where standard controls do not cover the design.165. Validate grouping, transitions, icon treatment, pointer/keyboard usability, and foreground activation. Use `macos-runtime-debugger` for SwiftPM GUI apps.1718## Rules1920- Prefer `NavigationSplitView`; let sidebars use system Liquid Glass material.21- Use `backgroundExtensionEffect` for hero/media that should extend beyond safe area near floating chrome.22- Keep inspectors visually lighter than or equal to the content they inspect.23- Keep `TabView` for persistent top-level sections; do not force iPhone tab/search patterns onto macOS.24- Remove old `presentationBackground` imitation layers when the system sheet material is enough.25- Put hierarchy-wide search on `NavigationSplitView`; use `searchToolbarBehavior` for compact secondary search.26- Assume toolbar items live on floating glass; use `ToolbarSpacer`, `sharedBackgroundVisibility`, and `badge` instead of custom chrome.27- Tint icons/glass only for semantic meaning.28- Prefer standard controls and system glass/prominent button styles before custom translucent buttons.29- Use `controlSize`, `buttonBorderShape`, slider `step`/ticks/`neutralValue`, and `Label` before custom controls.30- Use concentric rectangle/container corner configuration for custom shapes that must align with sheet/card/window corners.3132## Custom Glass3334- `glassEffect` defaults to a capsule-like shape and vibrant text; pass an explicit shape when needed.35- Use `.interactive()` for custom controls/containers with interactive elements.36- Put nearby custom glass in one `GlassEffectContainer`; separate containers cannot sample each other correctly.37- Use `glassEffectID` with a local `@Namespace` for collapsed/expanded morphing with stable identity.3839## Guardrails4041- Do not rebuild sidebars, toolbars, sheets, or controls from scratch when SwiftUI APIs provide the behavior.42- Do not leave opaque backgrounds behind `NavigationSplitView`, toolbars, or sheets by default.43- Do not scatter related glass elements across containers.44- Do not tint for decoration alone.45- Do not review Liquid Glass behavior from a bare SwiftPM executable; launch a foreground `.app` bundle.4647Use `macos-swiftui-architect` for scene architecture, `macos-view-architect` for large-view structure, `macos-appkit-bridge` for AppKit-only behavior, and `macos-runtime-debugger` for launch/log verification.