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 enprojectnment-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.4---56# SwiftUI Liquid Glass78## Overview9Use 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.1011## When to Use12- When the user wants to adopt or review Liquid Glass in SwiftUI UI.13- When you need correct API usage, fallback handling, or modifier ordering for Liquid Glass.1415## Workflow Decision Tree16Choose the path that matches the request:1718### 1) Review an existing feature19- Inspect where Liquid Glass should be used and where it should not.20- Verify correct modifier order, shape usage, and container placement.21- Check for iOS 26+ availability handling and sensible fallbacks.2223### 2) Improve a feature using Liquid Glass24- Identify target components for glass treatment (surfaces, chips, buttons, cards).25- Refactor to use `GlassEffectContainer` where multiple glass elements appear.26- Introduce interactive glass only for tappable or focusable elements.2728### 3) Implement a new feature using Liquid Glass29- Design the glass surfaces and interactions first (shape, prominence, grouping).30- Add glass modifiers after layout/appearance modifiers.31- Add morphing transitions only when the view hierarchy changes with animation.3233## Core Guidelines34- Prefer native Liquid Glass APIs over custom blurs.35- Use `GlassEffectContainer` when multiple glass elements coexist.36- Apply `.glassEffect(...)` after layout and visual modifiers.37- Use `.interactive()` for elements that respond to touch/pointer.38- Keep shapes consistent across related elements for a cohesive look.39- Gate with `#available(iOS 26, *)` and provide a non-glass fallback.4041## Review Checklist42- **Availability**: `#available(iOS 26, *)` present with fallback UI.43- **Composition**: Multiple glass views wrapped in `GlassEffectContainer`.44- **Modifier order**: `glassEffect` applied after layout/appearance modifiers.45- **Interactivity**: `interactive()` only where user interaction exists.46- **Transitions**: `glassEffectID` used with `@Namespace` for morphing.47- **Consistency**: Shapes, tinting, and spacing align across the feature.4849## Implementation Checklist50- Define target elements and desired glass prominence.51- Wrap grouped glass elements in `GlassEffectContainer` and tune spacing.52- Use `.glassEffect(.regular.tint(...).interactive(), in: .rect(cornerRadius: ...))` as needed.53- Use `.buttonStyle(.glass)` / `.buttonStyle(.glassProminent)` for actions.54- Add morphing transitions with `glassEffectID` when hierarchy changes.55- Provide fallback materials and visuals for earlier iOS versions.5657## Quick Snippets58Use these patterns directly and tailor shapes/tints/spacing.5960```swift61if #available(iOS 26, *) {62 Text("Hello")63 .padding()64 .glassEffect(.regular.interactive(), in: .rect(cornerRadius: 16))65} else {66 Text("Hello")67 .padding()68 .background(.ultraThinMaterial, in: RoundedRectangle(cornerRadius: 16))69}70```7172```swift73GlassEffectContainer(spacing: 24) {74 HStack(spacing: 24) {75 Image(systemName: "scribble.variable")76 .frame(width: 72, height: 72)77 .font(.system(size: 32))78 .glassEffect()79 Image(systemName: "eraser.fill")80 .frame(width: 72, height: 72)81 .font(.system(size: 32))82 .glassEffect()83 }84}85```8687```swift88Button("Confirm") { }89 .buttonStyle(.glassProminent)90```9192## Resources93- Reference guide: `references/liquid-glass.md`94- Prefer Apple docs for up-to-date API details.9596## Limitations97- Use this skill only when the task clearly matches the scope described above.98- Do not treat the output as a substitute for enprojectnment-specific validation, testing, or expert review.99- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.