Liquid Glass — iOS 26 SwiftUI Skill
This skill teaches Claude how to design and implement UIs using Apple's Liquid Glass material system introduced with iOS 26 / Xcode 26 (WWDC25). It covers the full SwiftUI API surface, HIG principles, design tokens, motion, accessibility, performance, anti-patterns, and a library of full-screen examples.
Scope. SwiftUI only. iOS 26+ only. No legacy Material fallbacks — code stays clean and idiomatic.
When to activate
Load this skill automatically when any of these are true:
- Editing a
.swift file in a project with IPHONEOS_DEPLOYMENT_TARGET >= 26.0
- The user mentions: liquid glass, iOS 26, iPadOS 26, macOS Tahoe, glass effect, glassEffect, GlassEffectContainer, glass button, .glassProminent, tab bar minimize, glass material
- The user asks to "redesign", "modernize", "make it look like iOS 26", or "use the new Apple design"
- The user is implementing nav bars, tab bars, toolbars, sheets, or floating controls that should feel native to iOS 26
What this skill provides
- API reference for every Liquid Glass SwiftUI symbol with exact signatures →
references/01-api-reference.md
- HIG principles distilled to actionable rules →
references/02-hig-principles.md
- Design tokens (spacing, radius, tint conventions) →
references/03-design-tokens.md
- Motion & interaction patterns for morphing and interactive glass →
references/04-motion-and-interaction.md
- Accessibility — Reduce Transparency, Increase Contrast, VoiceOver →
references/05-accessibility.md
- Performance — GPU cost, layering rules, when glass is the wrong tool →
references/06-performance.md
- Anti-patterns with explicit ❌ / ✅ pairs →
references/07-anti-patterns.md
- Patterns library for common surfaces (nav bar, tab bar, toolbar, cards, sheets, search) →
patterns/
- Full-screen examples that compile in Xcode 26 →
examples/
- Pre-ship checklist →
checklists/pre-ship-checklist.md
How to use (reading order)
| Task |
Read first |
Then |
| Adding glass to a single control |
01-api-reference.md § glassEffect |
07-anti-patterns.md |
| Designing a new screen |
02-hig-principles.md → examples/ (closest match) |
03-design-tokens.md |
| Animating glass elements |
04-motion-and-interaction.md |
01-api-reference.md § GlassEffectContainer |
| Migrating an old screen |
07-anti-patterns.md |
patterns/ (per-surface) |
| Pre-submission review |
checklists/pre-ship-checklist.md |
05-accessibility.md |
Quick decision tree
Need glass on a thing?
│
├─ One control, no animation?
│ → .glassEffect() (simplest)
│
├─ Multiple glass things near each other?
│ → wrap them in GlassEffectContainer (required for blending + perf)
│
├─ They animate / appear / disappear together?
│ → GlassEffectContainer + @Namespace
│ + .glassEffectID() on each
│
├─ Two distant glass things should read as one?
│ → .glassEffectUnion(id:namespace:)
│
├─ Standard button?
│ → .buttonStyle(.glass) (secondary)
│ → .buttonStyle(.glassProminent) (primary)
│
└─ NavigationStack / TabView / Toolbar?
→ already glass by default in iOS 26. Don't double-apply.
Golden rules (memorize)
- Glass is the navigation layer. Reserve it for chrome floating above content — nav bars, tab bars, toolbars, floating buttons. Not for content backgrounds.
- Never glass-on-glass-on-glass. Maximum two layers. Glass cannot sample other glass.
- Group with
GlassEffectContainer whenever ≥ 2 glass elements live near each other. It's required for both blending and rendering performance.
- Use
.containerConcentric corners for nested glass shapes so radii stay concentric with the device / parent.
- Never use
.ultraThinMaterial or other legacy Material values in iOS 26+. They look out of place. Use Glass (.regular, .clear, .identity).
- Tint sparingly.
.tint() carries semantic meaning (prominence). Heavy color destroys refraction.
- Respect
accessibilityReduceTransparency — pass .identity to glassEffect to opt out.
- Verify on a real background. Glass over a flat color = blob. Always test over photos/scrolling content.
Mental model
Liquid Glass is not a blur. It is a lens. It refracts what's behind it, picks up specular highlights from device motion, casts adaptive shadows, and morphs fluidly between states. Treat every glass surface as a piece of glass you could pick up and move — it must catch light, bend the world behind it, and have an edge.
When in doubt, ask: "Does this element belong to the navigation/chrome layer, or to the content layer?" If content, do not glass it.
1---2name: liquid-glass3description: Build iOS 26+ SwiftUI interfaces with Apple's Liquid Glass design language. Use when writing SwiftUI for iOS 26 / iPadOS 26 / macOS Tahoe (26) / watchOS 26 / tvOS 26 / visionOS 26, when the user mentions Liquid Glass, `.glassEffect`, `GlassEffectContainer`, iOS 26 design, glass material, glass button, or asks to redesign / modernize a SwiftUI screen to the new system look.4---56# Liquid Glass — iOS 26 SwiftUI Skill78This skill teaches Claude how to design and implement UIs using Apple's **Liquid Glass** material system introduced with iOS 26 / Xcode 26 (WWDC25). It covers the full SwiftUI API surface, HIG principles, design tokens, motion, accessibility, performance, anti-patterns, and a library of full-screen examples.910> **Scope.** SwiftUI only. iOS 26+ only. No legacy `Material` fallbacks — code stays clean and idiomatic.1112---1314## When to activate1516Load this skill **automatically** when any of these are true:1718- Editing a `.swift` file in a project with `IPHONEOS_DEPLOYMENT_TARGET >= 26.0`19- The user mentions: *liquid glass*, *iOS 26*, *iPadOS 26*, *macOS Tahoe*, *glass effect*, *glassEffect*, *GlassEffectContainer*, *glass button*, *.glassProminent*, *tab bar minimize*, *glass material*20- The user asks to "redesign", "modernize", "make it look like iOS 26", or "use the new Apple design"21- The user is implementing nav bars, tab bars, toolbars, sheets, or floating controls that should feel native to iOS 262223---2425## What this skill provides26271. **API reference** for every Liquid Glass SwiftUI symbol with exact signatures → `references/01-api-reference.md`282. **HIG principles** distilled to actionable rules → `references/02-hig-principles.md`293. **Design tokens** (spacing, radius, tint conventions) → `references/03-design-tokens.md`304. **Motion & interaction** patterns for morphing and interactive glass → `references/04-motion-and-interaction.md`315. **Accessibility** — Reduce Transparency, Increase Contrast, VoiceOver → `references/05-accessibility.md`326. **Performance** — GPU cost, layering rules, when glass is the wrong tool → `references/06-performance.md`337. **Anti-patterns** with explicit ❌ / ✅ pairs → `references/07-anti-patterns.md`348. **Patterns library** for common surfaces (nav bar, tab bar, toolbar, cards, sheets, search) → `patterns/`359. **Full-screen examples** that compile in Xcode 26 → `examples/`3610. **Pre-ship checklist** → `checklists/pre-ship-checklist.md`3738---3940## How to use (reading order)4142| Task | Read first | Then |43|---|---|---|44| Adding glass to a single control | `01-api-reference.md` § glassEffect | `07-anti-patterns.md` |45| Designing a new screen | `02-hig-principles.md` → `examples/` (closest match) | `03-design-tokens.md` |46| Animating glass elements | `04-motion-and-interaction.md` | `01-api-reference.md` § GlassEffectContainer |47| Migrating an old screen | `07-anti-patterns.md` | `patterns/` (per-surface) |48| Pre-submission review | `checklists/pre-ship-checklist.md` | `05-accessibility.md` |4950---5152## Quick decision tree5354```55Need glass on a thing?56│57├─ One control, no animation?58│ → .glassEffect() (simplest)59│60├─ Multiple glass things near each other?61│ → wrap them in GlassEffectContainer (required for blending + perf)62│63├─ They animate / appear / disappear together?64│ → GlassEffectContainer + @Namespace65│ + .glassEffectID() on each66│67├─ Two distant glass things should read as one?68│ → .glassEffectUnion(id:namespace:)69│70├─ Standard button?71│ → .buttonStyle(.glass) (secondary)72│ → .buttonStyle(.glassProminent) (primary)73│74└─ NavigationStack / TabView / Toolbar?75 → already glass by default in iOS 26. Don't double-apply.76```7778---7980## Golden rules (memorize)81821. **Glass is the navigation layer.** Reserve it for chrome floating above content — nav bars, tab bars, toolbars, floating buttons. **Not for content backgrounds.**832. **Never glass-on-glass-on-glass.** Maximum two layers. Glass cannot sample other glass.843. **Group with `GlassEffectContainer`** whenever ≥ 2 glass elements live near each other. It's required for both blending *and* rendering performance.854. **Use `.containerConcentric` corners** for nested glass shapes so radii stay concentric with the device / parent.865. **Never use `.ultraThinMaterial` or other legacy `Material` values** in iOS 26+. They look out of place. Use `Glass` (`.regular`, `.clear`, `.identity`).876. **Tint sparingly.** `.tint()` carries semantic meaning (prominence). Heavy color destroys refraction.887. **Respect `accessibilityReduceTransparency`** — pass `.identity` to `glassEffect` to opt out.898. **Verify on a real background.** Glass over a flat color = blob. Always test over photos/scrolling content.9091---9293## Mental model9495> Liquid Glass is not a blur. It is a **lens**. It refracts what's behind it, picks up specular highlights from device motion, casts adaptive shadows, and morphs fluidly between states. Treat every glass surface as a piece of glass you could pick up and move — it must catch light, bend the world behind it, and have an edge.9697When in doubt, ask: *"Does this element belong to the navigation/chrome layer, or to the content layer?"* If content, do not glass it.