SKILL.md
$2a
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
GlassEffectContainerwhen 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:
glassEffectapplied after layout/appearance modifiers.
- Interactivity:
interactive()only where user interaction exists.
- Transitions:
glassEffectIDused with@Namespacefor morphing.
- Consistency: Shapes, tinting, and spacing align across the feature.
Implementation Checklist
- Define target elements and desired glass prominence.
- Wrap grouped glass elements in
GlassEffectContainerand tune spacing.
- Use
.glassEffect(.regular.tint(...).interactive(), in: .rect(cornerRadius: ...))as needed.
- Use
.buttonStyle(.glass)/.buttonStyle(.glassProminent)for actions.
- Add morphing transitions with
glassEffectIDwhen 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.