SwiftUI Liquid Glass
Overview
Use this skill to build or review SwiftUI features that fully align with the iOS 26+ Liquid Glass API. Prioritize native APIs (glassEffect, GlassEffectContainer, glass button styles) and Apple design guidance. Keep usage consistent, interactive where needed, and performance aware.
When to Use
- When the user wants to adopt or review Liquid Glass in SwiftUI UI.
- When you need correct API usage, fallback handling, or modifier ordering for Liquid Glass.
Workflow Decision Tree
Choose the path that matches the request:
1) Review an existing feature
- Inspect where Liquid Glass should be used and where it should not.
- Verify correct modifier order, shape usage, and container placement.
- Check for iOS 26+ availability handling and sensible fallbacks.
2) Improve a feature using Liquid Glass
- Identify target components for glass treatment (surfaces, chips, buttons, cards).
- Refactor to use
GlassEffectContainer where multiple glass elements appear.
- Introduce interactive glass only for tappable or focusable elements.
3) Implement a new feature using Liquid Glass
- Design the glass surfaces and interactions first (shape, prominence, grouping).
- Add glass modifiers after layout/appearance modifiers.
- Add morphing transitions only when the view hierarchy changes with animation.
Core Guidelines
- Prefer native Liquid Glass APIs over custom blurs.
- Use
GlassEffectContainer when multiple glass elements coexist.
- Apply
.glassEffect(...) after layout and visual modifiers.
- Use
.interactive() for elements that respond to touch/pointer.
- Keep shapes consistent across related elements for a cohesive look.
- Gate with
#available(iOS 26, *) and provide a non-glass fallback.
Review Checklist
- Availability:
#available(iOS 26, *) present with fallback UI.
- Composition: Multiple glass views wrapped in
GlassEffectContainer.
- Modifier order:
glassEffect applied after layout/appearance modifiers.
- Interactivity:
interactive() only where user interaction exists.
- Transitions:
glassEffectID used with @Namespace for morphing.
- Consistency: Shapes, tinting, and spacing align across the feature.
Implementation Checklist
- Define target elements and desired glass prominence.
- Wrap grouped glass elements in
GlassEffectContainer and tune spacing.
- Use
.glassEffect(.regular.tint(...).interactive(), in: .rect(cornerRadius: ...)) as needed.
- Use
.buttonStyle(.glass) / .buttonStyle(.glassProminent) for actions.
- Add morphing transitions with
glassEffectID when hierarchy changes.
- Provide fallback materials and visuals for earlier iOS versions.
Quick Snippets
Use these patterns directly and tailor shapes/tints/spacing.
if #available(iOS 26, *) {
Text("Hello")
.padding()
.glassEffect(.regular.interactive(), in: .rect(cornerRadius: 16))
} else {
Text("Hello")
.padding()
.background(.ultraThinMaterial, in: RoundedRectangle(cornerRadius: 16))
}
GlassEffectContainer(spacing: 24) {
HStack(spacing: 24) {
Image(systemName: "scribble.variable")
.frame(width: 72, height: 72)
.font(.system(size: 32))
.glassEffect()
Image(systemName: "eraser.fill")
.frame(width: 72, height: 72)
.font(.system(size: 32))
.glassEffect()
}
}
Button("Confirm") { }
.buttonStyle(.glassProminent)
Resources
- Reference guide:
references/liquid-glass.md
- Prefer Apple docs for up-to-date API details.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
1---2name: swiftui-liquid-glass3description: Implement or review SwiftUI Liquid Glass APIs with correct fallbacks and modifier order.4license: MIT5---67# SwiftUI Liquid Glass89## Overview10Use this skill to build or review SwiftUI features that fully align with the iOS 26+ Liquid Glass API. Prioritize native APIs (`glassEffect`, `GlassEffectContainer`, glass button styles) and Apple design guidance. Keep usage consistent, interactive where needed, and performance aware.1112## When to Use13- When the user wants to adopt or review Liquid Glass in SwiftUI UI.14- When you need correct API usage, fallback handling, or modifier ordering for Liquid Glass.1516## Workflow Decision Tree17Choose the path that matches the request:1819### 1) Review an existing feature20- Inspect where Liquid Glass should be used and where it should not.21- Verify correct modifier order, shape usage, and container placement.22- Check for iOS 26+ availability handling and sensible fallbacks.2324### 2) Improve a feature using Liquid Glass25- Identify target components for glass treatment (surfaces, chips, buttons, cards).26- Refactor to use `GlassEffectContainer` where multiple glass elements appear.27- Introduce interactive glass only for tappable or focusable elements.2829### 3) Implement a new feature using Liquid Glass30- Design the glass surfaces and interactions first (shape, prominence, grouping).31- Add glass modifiers after layout/appearance modifiers.32- Add morphing transitions only when the view hierarchy changes with animation.3334## Core Guidelines35- Prefer native Liquid Glass APIs over custom blurs.36- Use `GlassEffectContainer` when multiple glass elements coexist.37- Apply `.glassEffect(...)` after layout and visual modifiers.38- Use `.interactive()` for elements that respond to touch/pointer.39- Keep shapes consistent across related elements for a cohesive look.40- Gate with `#available(iOS 26, *)` and provide a non-glass fallback.4142## Review Checklist43- **Availability**: `#available(iOS 26, *)` present with fallback UI.44- **Composition**: Multiple glass views wrapped in `GlassEffectContainer`.45- **Modifier order**: `glassEffect` applied after layout/appearance modifiers.46- **Interactivity**: `interactive()` only where user interaction exists.47- **Transitions**: `glassEffectID` used with `@Namespace` for morphing.48- **Consistency**: Shapes, tinting, and spacing align across the feature.4950## Implementation Checklist51- Define target elements and desired glass prominence.52- Wrap grouped glass elements in `GlassEffectContainer` and tune spacing.53- Use `.glassEffect(.regular.tint(...).interactive(), in: .rect(cornerRadius: ...))` as needed.54- Use `.buttonStyle(.glass)` / `.buttonStyle(.glassProminent)` for actions.55- Add morphing transitions with `glassEffectID` when hierarchy changes.56- Provide fallback materials and visuals for earlier iOS versions.5758## Quick Snippets59Use these patterns directly and tailor shapes/tints/spacing.6061```swift62if #available(iOS 26, *) {63 Text("Hello")64 .padding()65 .glassEffect(.regular.interactive(), in: .rect(cornerRadius: 16))66} else {67 Text("Hello")68 .padding()69 .background(.ultraThinMaterial, in: RoundedRectangle(cornerRadius: 16))70}71```7273```swift74GlassEffectContainer(spacing: 24) {75 HStack(spacing: 24) {76 Image(systemName: "scribble.variable")77 .frame(width: 72, height: 72)78 .font(.system(size: 32))79 .glassEffect()80 Image(systemName: "eraser.fill")81 .frame(width: 72, height: 72)82 .font(.system(size: 32))83 .glassEffect()84 }85}86```8788```swift89Button("Confirm") { }90 .buttonStyle(.glassProminent)91```9293## Resources94- Reference guide: `references/liquid-glass.md`95- Prefer Apple docs for up-to-date API details.9697## Limitations98- Use this skill only when the task clearly matches the scope described above.99- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.100- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.