Liquid Glass Design System (iOS 26)
Patterns for implementing Apple's Liquid Glass — a dynamic material that blurs content behind it, reflects color and light from surrounding content, and reacts to touch and pointer interactions. Covers SwiftUI, UIKit, and WidgetKit integration.
When to Activate
- Building or updating apps for iOS 26+ with the new design language
- Implementing glass-style buttons, cards, toolbars, or containers
- Creating morphing transitions between glass elements
- Applying Liquid Glass effects to widgets
- Migrating existing blur/material effects to the new Liquid Glass API
Core Pattern — SwiftUI
Basic Glass Effect
The simplest way to add Liquid Glass to any view:
Customizing Shape and Tint
Key customization options:
.regular— standard glass effect.tint(Color)— add color tint for prominence.interactive()— react to touch and pointer interactions- Shape:
.capsule(default),.rect(cornerRadius:),.circle
Glass Button Styles
GlassEffectContainer for Multiple Elements
Always wrap multiple glass views in a container for performance and morphing:
The spacing parameter controls merge distance — closer elements blend their glass shapes together.
Uniting Glass Effects
Combine multiple views into a single glass shape with glassEffectUnion:
Morphing Transitions
Create smooth morphing when glass elements appear/disappear:
Extending Horizontal Scrolling Under Sidebar
To allow horizontal scroll content to extend under a sidebar or inspector, ensure the ScrollView content reaches the leading/trailing edges of the container. The system automatically handles the under-sidebar scrolling behavior when the layout extends to the edges — no additional modifier is needed.
Core Pattern — UIKit
Basic UIGlassEffect
UIGlassContainerEffect for Multiple Elements
Scroll Edge Effects
Toolbar Glass Integration
Core Pattern — WidgetKit
Rendering Mode Detection
Accent Groups for Visual Hierarchy
Image Rendering in Accented Mode
Container Background
Key Design Decisions
Best Practices
- Always use GlassEffectContainer when applying glass to multiple sibling views — it enables morphing and improves rendering performance
- Apply
.glassEffect()after other appearance modifiers (frame, font, padding) - Use
.interactive()only on elements that respond to user interaction (buttons, toggleable items) - Choose spacing carefully in containers to control when glass effects merge
- Use
withAnimationwhen changing view hierarchies to enable smooth morphing transitions - Test across appearances — light mode, dark mode, and accented/tinted modes
- Ensure accessibility contrast — text on glass must remain readable
Anti-Patterns to Avoid
- Using multiple standalone
.glassEffect()views without a GlassEffectContainer - Nesting too many glass effects — degrades performance and visual clarity
- Applying glass to every view — reserve for interactive elements, toolbars, and cards
- Forgetting
clipsToBounds = truein UIKit when using corner radii - Ignoring accented rendering mode in widgets — breaks tinted Home Screen appearance
- Using opaque backgrounds behind glass — defeats the translucency effect
When to Use
- Navigation bars, toolbars, and tab bars with the new iOS 26 design
- Floating action buttons and card-style containers
- Interactive controls that need visual depth and touch feedback
- Widgets that should integrate with the system's Liquid Glass appearance
- Morphing transitions between related UI states

