ios-liquid-glass — Claude Code skill: Liquid Glass API reference
An API reference for the Liquid Glass design system in iOS 26+. Covers glassEffect modifiers, containers, morphing transitions and navigation patterns.
npx skills add Prisma-Labs-Dev/apple-skills --skill ios-liquid-glass -a claude-codeWhat ios-liquid-glass does
The skill answers questions about Liquid Glass: how to apply glassEffect, which variant to pick (.regular, .clear, .identity), how to build a GlassEffectContainer, and how to morph between elements with glassEffectID and @Namespace. Code samples are SwiftUI — tinting, interactive behaviour, custom shapes such as .rect(cornerRadius: .containerConcentric).
Navigation and system effects get their own sections. A floating tab bar, toolbar grouping with ToolbarSpacer, sheets using .navigationTransition(.zoom), SF Symbols effects, and UIKit haptics. There is also a table of Apple's stated principles — hierarchy, harmony, consistency — flagged as a reference rather than a mandate.
One constraint matters before you start: glass cannot sample other glass. Put the effect on a content surface instead of the navigation layer and the sampling model breaks, which is why multiple elements go inside a GlassEffectContainer. The skill runs in a forked context with the Explore agent, so it does not load your main session.
What it helps with
- apply a glass effect to a button or toolbar in SwiftUI
- group several glass elements into one container
- morph between buttons using
glassEffectID - set up a floating tab bar and toolbar grouping
- check how glass reacts to Reduce Transparency
Example prompts for the agent
- Show me how to apply
glassEffectto a button with a tint and interactive behaviour - Build a
GlassEffectContainerthat morphs between three action buttons - How do I present a sheet with
.navigationTransition(.zoom)from a toolbar button?
How to install ios-liquid-glass
1Skills CLI (Vercel)
npx skills add Prisma-Labs-Dev/apple-skills --skill ios-liquid-glass -a claude-code2Manually: put the files in place
~/.claude/skills/ios-liquid-glass/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/ios-liquid-glass/
1Skills CLI (Vercel)
npx skills add Prisma-Labs-Dev/apple-skills --skill ios-liquid-glass -a codex2Manually: put the files in place
.agents/skills/ios-liquid-glass/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add Prisma-Labs-Dev/apple-skills --skill ios-liquid-glass -a cursor2Manually: put the files in place
.cursor/skills/ios-liquid-glass/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install Prisma-Labs-Dev/apple-skills ios-liquid-glass2Manually: put the files in place
.github/skills/ios-liquid-glass/SKILL.md1Skills CLI (Vercel)
npx skills add Prisma-Labs-Dev/apple-skills --skill ios-liquid-glass -a gemini-cli2Platform CLI
gemini skills install https://github.com/Prisma-Labs-Dev/apple-skills --path skills/ios-liquid-glassManually: put the files in place
.devin/skills/ios-liquid-glass/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add Prisma-Labs-Dev/apple-skills --skill ios-liquid-glass -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about ios-liquid-glass
How do I install ios-liquid-glass in Claude?
Run npx skills add Prisma-Labs-Dev/apple-skills --skill ios-liquid-glass -a claude-code. The skill lands in ~/.claude/skills/ios-liquid-glass/SKILL.md.
What does ios-liquid-glass do?
It gives your agent a reference for the Liquid Glass API in iOS 26+: glassEffect modifiers, GlassEffectContainer, morphing transitions, navigation patterns and haptics. Answers come from documented examples instead of guesswork.
Why can't glass be applied to content surfaces?
Liquid Glass is built for the navigation and control layer. On a content surface its sampling model does not hold up, so multiple glass elements belong inside a GlassEffectContainer.
Source text
SKILL.md · MIT
---
name: ios-liquid-glass
user-invocable: true
description: "API reference: Liquid Glass (iOS 26+). Query for glass effects, navigation patterns, GlassEffect modifiers, design principles."
context: fork
agent: Explore
---
# iOS Liquid Glass Reference
API reference for the Liquid Glass design system (iOS 26+): glass effects, containers, morphing transitions, and related system behaviors. This documents what the system provides — design direction is yours.
## When to Use
- Implementing glass materials, `glassEffect` modifiers, or `GlassEffectContainer`
- Navigation surfaces that use system glass (tabs, toolbars, sheets)
- Checking how glass adapts to accessibility settings
- Creating app icons with Icon Composer
## Apple's Stated Design Principles
Apple describes Liquid Glass with three principles (reference, not a mandate):
| Principle | Description |
|-----------|-------------|
| **Hierarchy** | Controls float above content. Glass frames content rather than obscuring it. |
| **Harmony** | Software design aligns with hardware — concentric corners, fluid gestures. |
| **Consistency** | Adapts across iPhone, iPad, Mac — same identity, contextual expression. |
One functional constraint worth knowing: glass is designed for the navigation/control layer. Applying it to content surfaces defeats its sampling model (see containers below).
## Liquid Glass Core API
### Basic Glass Effect
```swift
import SwiftUI
// Simple glass application
Text("Action")
.padding()
.glassEffect() // .regular variant, .capsule shape
// With explicit parameters
Button("Confirm") { }
.padding()
.glassEffect(.regular, in: RoundedRectangle(cornerRadius: 12), isEnabled: true)
```
### Glass Variants
| Variant | Use Case |
|---------|----------|
| `.regular` | Toolbars, nav bars, tab bars, standard controls |
| `.clear` | Floating controls over media (photos, maps, video) |
| `.identity` | Conditional disable: `glassEffect(isActive ? .regular : .identity)` |
### Glass Modifiers
```swift
// Semantic tinting
.glassEffect(.regular.tint(.accentColor))
// Interactive behaviors (scaling, shimmer, touch illumination)
.glassEffect(.regular.interactive())
// Combined
.glassEffect(.regular.tint(.blue).interactive())
```
### Custom Shapes
```swift
// Standard shapes
.glassEffect(.regular, in: .capsule)
.glassEffect(.regular, in: .circle)
.glassEffect(.regular, in: RoundedRectangle(cornerRadius: 16))
// Container-concentric (matches device/container corners)
.glassEffect(.regular, in: .rect(cornerRadius: .containerConcentric))
```
## GlassEffectContainer & Morphing
### Container Setup
Glass cannot sample other glass. Use containers for multiple glass elements:
```swift
GlassEffectContainer(spacing: 30) {
HStack(spacing: 20) {
ForEach(actions) { action in
Button(action.title, systemImage: action.icon) { }
.frame(width: 44, height: 44)
.glassEffect(.regular.interactive())
}
}
}
```
### Morphing Transitions
```swift
struct ExpandableActions: View {
@State private var isExpanded = false
@Namespace private var namespace
var body: some View {
GlassEffectContainer(spacing: 30) {
VStack(spacing: 30) {
if isExpanded {
ActionButton(icon: "rotate.right")
.glassEffectID("rotate", in: namespace)
}
HStack(spacing: 30) {
if isExpanded {
ActionButton(icon: "slider.horizontal.3")
.glassEffectID("adjust", in: namespace)
}
Button {
withAnimation(.bouncy) { isExpanded.toggle() }
} label: {
Image(systemName: isExpanded ? "xmark" : "plus")
.frame(width: 56, height: 56)
}
.glassEffect(.regular.tint(.accentColor).interactive())
.glassEffectID("toggle", in: namespace)
if isExpanded {
ActionButton(icon: "crop")
.glassEffectID("crop", in: namespace)
}
}
if isExpanded {
ActionButton(icon: "wand.and.stars")
.glassEffectID("enhance", in: namespace)
}
}
}
}
}
```
## Navigation Patterns
### Tab Bar (Floating)
```swift
TabView {
Tab("Home", systemImage: "house") {
HomeView()
}
Tab("Search", systemImage: "magnifyingglass") {
SearchView()
}
Tab("Profile", systemImage: "person") {
ProfileView()
}
}
// Tab bar now floats, reacts to background, collapses on scroll
```
### Toolbar with Grouping
```swift
.toolbar {
ToolbarItemGroup(placement: .topBarTrailing) {
Button("Edit", systemImage: "pencil") { }
Button("Share", systemImage: "square.and.arrow.up") { }
}
ToolbarSpacer(.flexible, placement: .topBarTrailing)
ToolbarItem(placement: .topBarTrailing) {
Button("Done", systemImage: "checkmark") { }
.tint(.accentColor)
}
}
```
### Sheets with Morphing
```swift
struct ContentView: View {
@State private var showSettings = false
@Namespace private var namespace
var body: some View {
NavigationStack {
ContentView()
.toolbar {
ToolbarItem(placement: .topBarTrailing) {
Button("Settings", systemImage: "gear") {
showSettings = true
}
.matchedTransitionSource(id: "settings", in: namespace)
}
}
.sheet(isPresented: $showSettings) {
SettingsView()
.navigationTransition(.zoom(sourceID: "settings", in: namespace))
.presentationDetents([.medium, .large])
}
}
}
}
```
## SF Symbols Effects
```swift
Image(systemName: "checkmark.circle")
.symbolEffect(.drawOn, value: isComplete)
Image(systemName: "heart.fill")
.symbolEffect(.bounce, value: isFavorite)
```
## Haptics API
```swift
import UIKit
// Impact feedback
let generator = UIImpactFeedbackGenerator(style: .medium)
generator.impactOccurred()
// Selection feedback
let selection = UISelectionFeedbackGenerator()
selection.selectionChanged()
// Success/error
let notification = UINotificationFeedbackGenerator()
notification.notificationOccurred(.success)
```
## Accessibility Behaviors
### Automatic Glass Adaptations
Glass automatically adapts to:
- **Reduce Transparency**: More frosting
- **Increase Contrast**: Stark borders
- **Reduce Motion**: Tones down animation
### Manual Checks
```swift
@Environment(\.accessibilityReduceTransparency) var reduceTransparency
@Environment(\.accessibilityReduceMotion) var reduceMotion
var animation: Animation? {
reduceMotion ? nil : .bouncy
}
```
System expectations: minimum 44x44pt touch targets, accessibility labels, Dynamic Type support.
## Reference
For official Apple documentation links, WWDC session IDs, and API quick reference tables, see [reference.md](reference.md).
© Prisma-Labs-Dev · MIT · Prisma-Labs-Dev/apple-skills