Adopt Liquid Glass
Apple's Liquid Glass design language for SwiftUI, UIKit, and AppKit apps.
Language
Match user's language.
When to Use
- User is migrating an existing app to Liquid Glass
- User is building new UI and wants Liquid Glass best practices
- User asks about specific Liquid Glass APIs (
glassEffect, GlassEffectContainer, etc.)
- User needs to redesign app icons for the layered system
- User asks about platform-specific considerations (watchOS, tvOS)
Workflow
Step 1: Assess the user's situation
Determine what the user needs:
| Situation |
Action |
| Migrating existing app |
Walk through the adoption checklist (Step 2) |
| Building new custom glass UI |
Jump to custom glass effects guidance |
| Specific API question |
Read reference, give targeted answer with code |
| App icon redesign |
Guide through layered icon design |
| Platform-specific question |
Give platform-targeted advice |
Step 2: Adoption Checklist
For migration, work through these areas in order. Read references/liquid-glass-guide.md for detailed guidance on each.
Build & Review — Build with latest Xcode SDK, run on latest platform releases. Standard SwiftUI/UIKit/AppKit components auto-adopt Liquid Glass.
Visual Refresh — Remove custom backgrounds from navigation elements (NavigationStack, NavigationSplitView, titleBar, toolbars). Test with accessibility settings (Reduce Transparency, Reduce Motion).
App Icons — Redesign with layers (foreground/middle/background). Use Icon Composer. Simple, filled, semi-transparent shapes. Test against updated grids.
Controls — Don't hard-code layout metrics. Review color usage (use system colors). Adopt new button styles (.glass, .glassProminent). Use safeAreaBar for scroll edge effects. Use ConcentricRectangle for concentric shapes.
Navigation — Establish clear hierarchy. Consider sidebarAdaptable for tab→sidebar. Use NavigationSplitView for split layouts. Apply backgroundExtensionEffect() for edge-to-edge content.
Menus & Toolbars — Use standard selectors for icon auto-assignment. Group related toolbar items. Use icons over text. Hide entire toolbar items (not inner views).
Windows & Modals — Support arbitrary window sizes. Use split views for fluid resizing. Check sheet corner content. Set action sheet source anchor with confirmationDialog.
Layout — Title-style capitalization for section headers. Adopt grouped form style.
Search — Use Tab(role: .search) for semantic search tabs. Test keyboard layout.
Platform Testing — Test across iOS, iPadOS, macOS, tvOS, watchOS. Use GlassEffectContainer for performance. Profile with Instruments.
Step 3: Custom Glass Effects
When the user needs to apply Liquid Glass to custom views, guide them through:
- Basic:
glassEffect() / glassEffect(in: .rect(cornerRadius:)) / .tint() / .interactive()
- Containers:
GlassEffectContainer(spacing:) for multiple effects — controls blending behavior
- Unions:
glassEffectUnion(id:namespace:) for unified shapes across dynamic views
- Morphing:
glassEffectID(_:in:) + @Namespace for transition coordination
- Transitions:
matchedGeometry (within spacing) vs materialize (farther apart)
Always read references/liquid-glass-guide.md Section 10 for complete code examples before answering custom glass effect questions.
Step 4: Opt-out Path
If the user needs to ship with latest SDKs but keep previous appearance:
- Add
UIDesignRequiresCompatibility key to Info.plist
Key Principles
- Don't overuse Liquid Glass — Limit to the most important functional elements
- Let the system decide — Remove custom backgrounds, trust system framework defaults
- Test accessibility — Reduce Transparency, Reduce Motion, increased contrast
- Performance matters — Use
GlassEffectContainer, limit onscreen effects, profile regularly
- Apply glass effect last — After other appearance modifiers
Reference
Detailed guide with all code examples and complete API reference:
→ Read references/liquid-glass-guide.md
1---2name: adopt-liquid-glass3description: Guide for adopting Apple's Liquid Glass design language in SwiftUI/UIKit/AppKit apps. Covers visual refresh, app icons, controls, navigation, menus, toolbars, windows, modals, layout, search, platform considerations, and custom glass effects. Triggers: 'liquid glass', 'adopt liquid glass', 'glass effect', 'glassEffect', 'Liquid Glass migration', 'Liquid Glass adoption', 'iOS 26 UI update', 'macOS 26 design', 'new Apple design language', '适配 Liquid Glass', '毛玻璃效果'4---56# Adopt Liquid Glass78Apple's Liquid Glass design language for SwiftUI, UIKit, and AppKit apps.910## Language1112**Match user's language.**1314## When to Use1516- User is migrating an existing app to Liquid Glass17- User is building new UI and wants Liquid Glass best practices18- User asks about specific Liquid Glass APIs (`glassEffect`, `GlassEffectContainer`, etc.)19- User needs to redesign app icons for the layered system20- User asks about platform-specific considerations (watchOS, tvOS)2122## Workflow2324### Step 1: Assess the user's situation2526Determine what the user needs:2728| Situation | Action |29|-----------|--------|30| Migrating existing app | Walk through the adoption checklist (Step 2) |31| Building new custom glass UI | Jump to custom glass effects guidance |32| Specific API question | Read reference, give targeted answer with code |33| App icon redesign | Guide through layered icon design |34| Platform-specific question | Give platform-targeted advice |3536### Step 2: Adoption Checklist3738For migration, work through these areas in order. Read `references/liquid-glass-guide.md` for detailed guidance on each.39401. **Build & Review** — Build with latest Xcode SDK, run on latest platform releases. Standard SwiftUI/UIKit/AppKit components auto-adopt Liquid Glass.41422. **Visual Refresh** — Remove custom backgrounds from navigation elements (`NavigationStack`, `NavigationSplitView`, `titleBar`, toolbars). Test with accessibility settings (Reduce Transparency, Reduce Motion).43443. **App Icons** — Redesign with layers (foreground/middle/background). Use Icon Composer. Simple, filled, semi-transparent shapes. Test against updated grids.45464. **Controls** — Don't hard-code layout metrics. Review color usage (use system colors). Adopt new button styles (`.glass`, `.glassProminent`). Use `safeAreaBar` for scroll edge effects. Use `ConcentricRectangle` for concentric shapes.47485. **Navigation** — Establish clear hierarchy. Consider `sidebarAdaptable` for tab→sidebar. Use `NavigationSplitView` for split layouts. Apply `backgroundExtensionEffect()` for edge-to-edge content.49506. **Menus & Toolbars** — Use standard selectors for icon auto-assignment. Group related toolbar items. Use icons over text. Hide entire toolbar items (not inner views).51527. **Windows & Modals** — Support arbitrary window sizes. Use split views for fluid resizing. Check sheet corner content. Set action sheet source anchor with `confirmationDialog`.53548. **Layout** — Title-style capitalization for section headers. Adopt grouped form style.55569. **Search** — Use `Tab(role: .search)` for semantic search tabs. Test keyboard layout.575810. **Platform Testing** — Test across iOS, iPadOS, macOS, tvOS, watchOS. Use `GlassEffectContainer` for performance. Profile with Instruments.5960### Step 3: Custom Glass Effects6162When the user needs to apply Liquid Glass to custom views, guide them through:63641. **Basic**: `glassEffect()` / `glassEffect(in: .rect(cornerRadius:))` / `.tint()` / `.interactive()`652. **Containers**: `GlassEffectContainer(spacing:)` for multiple effects — controls blending behavior663. **Unions**: `glassEffectUnion(id:namespace:)` for unified shapes across dynamic views674. **Morphing**: `glassEffectID(_:in:)` + `@Namespace` for transition coordination685. **Transitions**: `matchedGeometry` (within spacing) vs `materialize` (farther apart)6970Always read `references/liquid-glass-guide.md` Section 10 for complete code examples before answering custom glass effect questions.7172### Step 4: Opt-out Path7374If the user needs to ship with latest SDKs but keep previous appearance:75- Add `UIDesignRequiresCompatibility` key to Info.plist7677## Key Principles7879- **Don't overuse Liquid Glass** — Limit to the most important functional elements80- **Let the system decide** — Remove custom backgrounds, trust system framework defaults81- **Test accessibility** — Reduce Transparency, Reduce Motion, increased contrast82- **Performance matters** — Use `GlassEffectContainer`, limit onscreen effects, profile regularly83- **Apply glass effect last** — After other appearance modifiers8485## Reference8687Detailed guide with all code examples and complete API reference:88→ Read `references/liquid-glass-guide.md`8990<!-- Keep under 200 lines. Detailed docs in references/. -->