@mmerterden/multi-agent-pipeline 20.7.0 → 20.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/LICENSE +0 -10
- package/docs/facts.json +1 -1
- package/manifest.json +266 -267
- package/package.json +2 -2
- package/pipeline/scripts/_notices.mjs +1 -1
- package/pipeline/skills/.skill-manifest.json +68 -68
- package/pipeline/skills/shared/README.md +70 -70
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +373 -381
- package/pipeline/skills/shared/external/alarmkit/evals/evals.json +23 -18
- package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +328 -378
- package/pipeline/skills/shared/external/app-clips/SKILL.md +260 -160
- package/pipeline/skills/shared/external/app-clips/evals/evals.json +27 -27
- package/pipeline/skills/shared/external/app-clips/references/data-handoff-notifications-location.md +150 -83
- package/pipeline/skills/shared/external/app-clips/references/routing-and-experiences.md +135 -83
- package/pipeline/skills/shared/external/app-clips/references/size-capabilities-and-promotion.md +143 -85
- package/pipeline/skills/shared/external/app-intents/SKILL.md +302 -304
- package/pipeline/skills/shared/external/app-intents/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +594 -894
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +339 -277
- package/pipeline/skills/shared/external/app-store-optimization/evals/evals.json +27 -23
- package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +105 -122
- package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +143 -166
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +307 -326
- package/pipeline/skills/shared/external/app-store-review/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +105 -67
- package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +114 -101
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +333 -360
- package/pipeline/skills/shared/external/apple-on-device-ai/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +215 -322
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +161 -256
- package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +277 -387
- package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +196 -210
- package/pipeline/skills/shared/external/authentication/SKILL.md +265 -381
- package/pipeline/skills/shared/external/authentication/evals/evals.json +25 -25
- package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +133 -178
- package/pipeline/skills/shared/external/authentication/references/passkeys.md +111 -147
- package/pipeline/skills/shared/external/avkit/SKILL.md +267 -364
- package/pipeline/skills/shared/external/avkit/evals/evals.json +26 -26
- package/pipeline/skills/shared/external/avkit/references/avkit-patterns.md +375 -493
- package/pipeline/skills/shared/external/background-processing/SKILL.md +270 -382
- package/pipeline/skills/shared/external/background-processing/evals/evals.json +22 -22
- package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +169 -317
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +290 -371
- package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +175 -343
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +292 -381
- package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +33 -30
- package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +227 -355
- package/pipeline/skills/shared/external/contacts-framework/SKILL.md +197 -346
- package/pipeline/skills/shared/external/contacts-framework/evals/evals.json +19 -21
- package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +169 -308
- package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +226 -376
- package/pipeline/skills/shared/external/core-bluetooth/evals/evals.json +25 -22
- package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +257 -337
- package/pipeline/skills/shared/external/core-data/SKILL.md +292 -368
- package/pipeline/skills/shared/external/core-data/evals/evals.json +30 -27
- package/pipeline/skills/shared/external/core-motion/SKILL.md +235 -324
- package/pipeline/skills/shared/external/core-motion/evals/evals.json +31 -27
- package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +210 -310
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +292 -366
- package/pipeline/skills/shared/external/core-nfc/evals/evals.json +22 -24
- package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +233 -329
- package/pipeline/skills/shared/external/coreml/SKILL.md +323 -367
- package/pipeline/skills/shared/external/coreml/evals/evals.json +24 -21
- package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +562 -565
- package/pipeline/skills/shared/external/cryptokit/SKILL.md +253 -394
- package/pipeline/skills/shared/external/cryptokit/evals/evals.json +20 -18
- package/pipeline/skills/shared/external/cryptokit/references/cryptokit-patterns.md +299 -488
- package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +270 -323
- package/pipeline/skills/shared/external/debugging-instruments/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +167 -315
- package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +140 -193
- package/pipeline/skills/shared/external/device-integrity/SKILL.md +230 -353
- package/pipeline/skills/shared/external/device-integrity/evals/evals.json +25 -21
- package/pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md +159 -197
- package/pipeline/skills/shared/external/energykit/SKILL.md +225 -392
- package/pipeline/skills/shared/external/energykit/evals/evals.json +29 -28
- package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +174 -470
- package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +261 -383
- package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +25 -22
- package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +165 -268
- package/pipeline/skills/shared/external/healthkit/SKILL.md +252 -303
- package/pipeline/skills/shared/external/healthkit/evals/evals.json +24 -23
- package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +369 -523
- package/pipeline/skills/shared/external/homekit-matter/SKILL.md +233 -348
- package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +27 -22
- package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +199 -305
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +368 -340
- package/pipeline/skills/shared/external/ios-accessibility/evals/evals.json +28 -27
- package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +314 -260
- package/pipeline/skills/shared/external/ios-accessibility/references/media-accessibility.md +97 -67
- package/pipeline/skills/shared/external/ios-accessibility/references/nutrition-labels.md +165 -101
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +258 -371
- package/pipeline/skills/shared/external/ios-localization/evals/evals.json +23 -23
- package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +283 -491
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +313 -440
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +265 -341
- package/pipeline/skills/shared/external/ios-networking/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +425 -652
- package/pipeline/skills/shared/external/ios-networking/references/file-storage-patterns.md +143 -285
- package/pipeline/skills/shared/external/ios-networking/references/lightweight-clients.md +93 -53
- package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +231 -456
- package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +517 -784
- package/pipeline/skills/shared/external/ios-simulator/SKILL.md +265 -393
- package/pipeline/skills/shared/external/ios-simulator/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/ios-simulator/references/simctl-commands.md +177 -270
- package/pipeline/skills/shared/external/live-activities/SKILL.md +318 -360
- package/pipeline/skills/shared/external/live-activities/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/live-activities/references/activitykit-patterns.md +478 -710
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +295 -267
- package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +28 -24
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-corelocation-patterns.md +378 -532
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +397 -499
- package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +165 -348
- package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +26 -23
- package/pipeline/skills/shared/external/metrickit-diagnostics/references/metrickit-patterns.md +123 -130
- package/pipeline/skills/shared/external/musickit-audio/SKILL.md +189 -315
- package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +22 -21
- package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +181 -270
- package/pipeline/skills/shared/external/natural-language/SKILL.md +188 -340
- package/pipeline/skills/shared/external/natural-language/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +171 -225
- package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +258 -392
- package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +30 -29
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +164 -231
- package/pipeline/skills/shared/external/pdfkit/SKILL.md +312 -344
- package/pipeline/skills/shared/external/pdfkit/evals/evals.json +19 -19
- package/pipeline/skills/shared/external/pdfkit/references/pdfkit-patterns.md +413 -624
- package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +242 -358
- package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +25 -21
- package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +161 -226
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +282 -400
- package/pipeline/skills/shared/external/permissionkit/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +237 -350
- package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +276 -325
- package/pipeline/skills/shared/external/photos-camera-media/references/av-playback.md +299 -545
- package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +344 -588
- package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +316 -660
- package/pipeline/skills/shared/external/photos-camera-media/references/photokit-patterns.md +270 -416
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +312 -340
- package/pipeline/skills/shared/external/push-notifications/evals/evals.json +27 -26
- package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +328 -485
- package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +327 -560
- package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +218 -410
- package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +221 -348
- package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +222 -393
- package/pipeline/skills/shared/external/shareplay-activities/evals/evals.json +23 -24
- package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +280 -420
- package/pipeline/skills/shared/external/speech-recognition/SKILL.md +217 -421
- package/pipeline/skills/shared/external/speech-recognition/evals/evals.json +23 -26
- package/pipeline/skills/shared/external/speech-recognition/references/speechanalyzer-patterns.md +133 -125
- package/pipeline/skills/shared/external/storekit/SKILL.md +228 -204
- package/pipeline/skills/shared/external/storekit/evals/evals.json +27 -24
- package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +98 -109
- package/pipeline/skills/shared/external/storekit/references/core-patterns.md +298 -242
- package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +356 -649
- package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +274 -399
- package/pipeline/skills/shared/external/swift-api-design-guidelines/evals/evals.json +22 -24
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/argument-labels-and-parameters.md +107 -108
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/conventions-and-special-rules.md +93 -165
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/naming-and-clarity.md +99 -137
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/side-effects-and-mutating-pairs.md +77 -120
- package/pipeline/skills/shared/external/swift-architecture/SKILL.md +334 -350
- package/pipeline/skills/shared/external/swift-architecture/evals/evals.json +22 -22
- package/pipeline/skills/shared/external/swift-charts/SKILL.md +208 -394
- package/pipeline/skills/shared/external/swift-charts/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +351 -762
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +339 -343
- package/pipeline/skills/shared/external/swift-codable/evals/evals.json +20 -20
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +303 -351
- package/pipeline/skills/shared/external/swift-concurrency/evals/evals.json +27 -24
- package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +65 -80
- package/pipeline/skills/shared/external/swift-concurrency/references/async-algorithms.md +48 -84
- package/pipeline/skills/shared/external/swift-concurrency/references/bridging-interop.md +134 -79
- package/pipeline/skills/shared/external/swift-concurrency/references/concurrency-patterns.md +145 -167
- package/pipeline/skills/shared/external/swift-concurrency/references/diagnostics.md +62 -50
- package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +92 -121
- package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +177 -241
- package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +258 -234
- package/pipeline/skills/shared/external/swift-language/SKILL.md +342 -382
- package/pipeline/skills/shared/external/swift-language/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/swift-language/references/swift-attributes-interop.md +79 -56
- package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +297 -340
- package/pipeline/skills/shared/external/swift-security/SKILL.md +180 -161
- package/pipeline/skills/shared/external/swift-security/evals/evals.json +25 -25
- package/pipeline/skills/shared/external/swift-security/references/biometric-authentication.md +314 -469
- package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +408 -476
- package/pipeline/skills/shared/external/swift-security/references/common-anti-patterns.md +260 -530
- package/pipeline/skills/shared/external/swift-security/references/compliance-owasp-mapping.md +270 -477
- package/pipeline/skills/shared/external/swift-security/references/credential-storage-patterns.md +573 -571
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-public-key.md +370 -441
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-symmetric.md +332 -433
- package/pipeline/skills/shared/external/swift-security/references/keychain-access-control.md +346 -468
- package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +352 -472
- package/pipeline/skills/shared/external/swift-security/references/keychain-item-classes.md +431 -432
- package/pipeline/skills/shared/external/swift-security/references/keychain-sharing.md +328 -425
- package/pipeline/skills/shared/external/swift-security/references/migration-legacy-stores.md +341 -579
- package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +396 -457
- package/pipeline/skills/shared/external/swift-security/references/testing-security-code.md +354 -614
- package/pipeline/skills/shared/external/swift-testing/SKILL.md +188 -175
- package/pipeline/skills/shared/external/swift-testing/evals/evals.json +26 -24
- package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +80 -84
- package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +317 -433
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +392 -256
- package/pipeline/skills/shared/external/swiftdata/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +206 -402
- package/pipeline/skills/shared/external/swiftdata/references/indexing.md +59 -52
- package/pipeline/skills/shared/external/swiftdata/references/predicate-pitfalls.md +57 -33
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +354 -747
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +300 -508
- package/pipeline/skills/shared/external/swiftlint/SKILL.md +175 -226
- package/pipeline/skills/shared/external/swiftlint/references/adoption-and-configuration.md +141 -208
- package/pipeline/skills/shared/external/swiftlint/references/custom-rules-and-analyze.md +100 -109
- package/pipeline/skills/shared/external/swiftlint/references/plugins-run-scripts-and-integrations.md +159 -179
- package/pipeline/skills/shared/external/swiftlint/references/rule-reference.md +383 -18
- package/pipeline/skills/shared/external/swiftlint/references/rules-suppressions-and-baselines.md +143 -229
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +283 -366
- package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +396 -608
- package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +336 -385
- package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +239 -349
- package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +228 -310
- package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +260 -249
- package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +92 -74
- package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +112 -177
- package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +61 -64
- package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +94 -134
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +193 -225
- package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +173 -327
- package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +193 -168
- package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +127 -150
- package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +132 -133
- package/pipeline/skills/shared/external/swiftui-navigation/references/sheets.md +152 -117
- package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +106 -140
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +316 -252
- package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +341 -332
- package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +547 -854
- package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +485 -537
- package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +417 -499
- package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +213 -376
- package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +86 -175
- package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +89 -195
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +95 -182
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +71 -149
- package/pipeline/skills/shared/external/swiftui-performance/references/wwdc-session-sources.md +21 -27
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +303 -295
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +204 -387
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +469 -683
- package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +140 -186
- package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md +75 -86
- package/pipeline/skills/shared/external/swiftui-webkit/references/local-content-and-custom-schemes.md +63 -60
- package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +69 -137
- package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md +95 -67
- package/pipeline/skills/shared/external/tipkit/SKILL.md +220 -335
- package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +356 -494
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +260 -375
- package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +393 -515
- package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +363 -539
- package/pipeline/skills/shared/external/weatherkit/SKILL.md +152 -310
- package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +288 -407
- package/pipeline/skills/shared/external/widgetkit/SKILL.md +216 -288
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +414 -719
- package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +0 -39
|
@@ -1,387 +1,233 @@
|
|
|
1
|
-
# Liquid Glass API Reference
|
|
2
|
-
|
|
3
|
-
## Contents
|
|
4
|
-
|
|
5
|
-
- [Overview](#overview)
|
|
6
|
-
- [glassEffect(_:in:)](#glasseffect_in)
|
|
7
|
-
- [Glass](#glass)
|
|
8
|
-
- [GlassEffectContainer](#glasseffectcontainer)
|
|
9
|
-
- [glassEffectID(_:in:)](#glasseffectid_in)
|
|
10
|
-
- [glassEffectUnion(id:namespace:)](#glasseffectunionidnamespace)
|
|
11
|
-
- [glassEffectTransition(_:)](#glasseffecttransition_)
|
|
12
|
-
- [GlassEffectTransition](#glasseffecttransition)
|
|
13
|
-
- [Button Styles](#button-styles)
|
|
14
|
-
- [DefaultGlassEffectShape](#defaultglasseffectshape)
|
|
15
|
-
- [Scroll Edge Effect](#scroll-edge-effect)
|
|
16
|
-
- [Background Extension (Split Views)](#background-extension-split-views)
|
|
17
|
-
- [Availability Gating](#availability-gating)
|
|
18
|
-
- [Performance Guidelines](#performance-guidelines)
|
|
19
|
-
- [Accessibility Considerations](#accessibility-considerations)
|
|
20
|
-
- [Best Practices Summary](#best-practices-summary)
|
|
21
|
-
- [Apple Documentation Links](#apple-documentation-links)
|
|
1
|
+
# Liquid Glass API Reference
|
|
22
2
|
|
|
23
|
-
|
|
3
|
+
Signatures and behaviour behind the `swiftui-liquid-glass` skill. Read its
|
|
4
|
+
SKILL.md for the workflow and examples; this file is the detail.
|
|
24
5
|
|
|
25
|
-
|
|
26
|
-
macOS 26.0+, Mac Catalyst 26.0+, tvOS 26.0+, and watchOS 26.0+. It blurs content
|
|
27
|
-
behind it, reflects color and light from surrounding content, and reacts to touch and
|
|
28
|
-
pointer interactions in real time. Standard SwiftUI components (tab bars, toolbars,
|
|
29
|
-
navigation bars, sheets, popovers) adopt Liquid Glass automatically when built with
|
|
30
|
-
the latest SDK.
|
|
6
|
+
## Overview
|
|
31
7
|
|
|
32
|
-
|
|
8
|
+
Release 26.0 of every Apple platform except visionOS brings these APIs: iOS
|
|
9
|
+
and iPadOS, macOS and Mac Catalyst, tvOS and watchOS. The glass modifiers are
|
|
10
|
+
marked unavailable on visionOS, which has its own material system. System
|
|
11
|
+
chrome (bars, sheets and popovers) compiled against the 26 SDKs turns into
|
|
12
|
+
glass without code changes.
|
|
33
13
|
|
|
34
14
|
## glassEffect(_:in:)
|
|
35
15
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
```swift
|
|
39
|
-
nonisolated func glassEffect(
|
|
40
|
-
_ glass: Glass = .regular,
|
|
41
|
-
in shape: some Shape = DefaultGlassEffectShape()
|
|
42
|
-
) -> some View
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
The system renders a shape anchored behind the view with the Liquid Glass material and
|
|
46
|
-
applies foreground effects over the view content. The default shape is `Capsule`.
|
|
16
|
+
A `nonisolated` `View` method with two parameters:
|
|
47
17
|
|
|
48
|
-
|
|
49
|
-
|
|
18
|
+
| Parameter | Type | Default |
|
|
19
|
+
| --- | --- | --- |
|
|
20
|
+
| first, unlabeled | `Glass` | `.regular` |
|
|
21
|
+
| `in` | `some Shape` | `DefaultGlassEffectShape()` |
|
|
50
22
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
```swift
|
|
54
|
-
Text("Hello, World!")
|
|
55
|
-
.font(.title)
|
|
56
|
-
.padding()
|
|
57
|
-
.glassEffect()
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Custom shape
|
|
61
|
-
|
|
62
|
-
```swift
|
|
63
|
-
Text("Hello, World!")
|
|
64
|
-
.font(.title)
|
|
65
|
-
.padding()
|
|
66
|
-
.glassEffect(in: .rect(cornerRadius: 16.0))
|
|
67
|
-
```
|
|
23
|
+
Behind the view the system draws the shape in glass; over the view's own
|
|
24
|
+
content it adds vibrancy and legibility treatment.
|
|
68
25
|
|
|
69
|
-
|
|
26
|
+
Apply it after the modifiers that decide size and look: `padding`, `frame`,
|
|
27
|
+
`font`, `foregroundStyle`.
|
|
70
28
|
|
|
71
|
-
|
|
29
|
+
Shapes you will use most:
|
|
72
30
|
|
|
73
31
|
```swift
|
|
74
|
-
Text("
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
32
|
+
Text("Capsule, the default").padding().glassEffect()
|
|
33
|
+
Text("Rounded").padding(12).glassEffect(in: RoundedRectangle(cornerRadius: 22))
|
|
34
|
+
Image(systemName: "bell").frame(width: 48, height: 48).glassEffect(in: .circle)
|
|
35
|
+
Label("Alert", systemImage: "flame").padding()
|
|
36
|
+
.glassEffect(.regular.tint(.red).interactive(), in: .capsule)
|
|
78
37
|
```
|
|
79
38
|
|
|
80
39
|
## Glass
|
|
81
40
|
|
|
82
|
-
A structure that defines the configuration of the Liquid Glass material. Conforms to
|
|
83
|
-
`Equatable`, `Sendable`, and `SendableMetatype`.
|
|
84
|
-
|
|
85
|
-
### Type Properties
|
|
86
|
-
|
|
87
|
-
| Property | Description |
|
|
88
|
-
|---|---|
|
|
89
|
-
| `.regular` | Standard Liquid Glass material |
|
|
90
|
-
| `.clear` | Clear variant with minimal visual weight |
|
|
91
|
-
| `.identity` | No-op; content appears as if no glass effect was applied |
|
|
92
|
-
|
|
93
|
-
### Instance Methods
|
|
94
|
-
|
|
95
|
-
| Method | Description |
|
|
96
|
-
|---|---|
|
|
97
|
-
| `.tint(_ color: Color)` | Returns a copy with a color tint to suggest prominence |
|
|
98
|
-
| `.interactive(_ isInteractive: Bool = true)` | Returns a copy that reacts to touch and pointer interactions |
|
|
99
|
-
|
|
100
|
-
Methods are chainable:
|
|
101
|
-
|
|
102
41
|
```swift
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
A view that combines multiple Liquid Glass shapes into a single rendering pass. Enables
|
|
109
|
-
blending and morphing between individual shapes.
|
|
42
|
+
struct Glass: Equatable, Sendable {
|
|
43
|
+
static var regular: Glass { get }
|
|
44
|
+
static var clear: Glass { get }
|
|
45
|
+
static var identity: Glass { get }
|
|
110
46
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
Conforms to `View`, `Sendable`, `SendableMetatype`.
|
|
117
|
-
|
|
118
|
-
### Initializer
|
|
119
|
-
|
|
120
|
-
```swift
|
|
121
|
-
init(spacing: CGFloat, @ViewBuilder content: () -> Content)
|
|
47
|
+
func tint(_ color: Color?) -> Glass
|
|
48
|
+
func interactive(_ isEnabled: Bool = true) -> Glass
|
|
49
|
+
}
|
|
122
50
|
```
|
|
123
51
|
|
|
124
|
-
|
|
52
|
+
`tint(_:)` hands back a tinted copy (a `nil` color clears it), and
|
|
53
|
+
`interactive(_:)` hands back one that responds to fingers and pointer hover.
|
|
54
|
+
Being `Sendable`, a `Glass` value can be computed anywhere and handed to a view.
|
|
125
55
|
|
|
126
|
-
|
|
127
|
-
- **Smaller spacing**: Shapes must be closer before blending occurs.
|
|
128
|
-
|
|
129
|
-
Match the container spacing to the interior layout spacing so shapes remain separate at
|
|
130
|
-
rest but merge during animated transitions.
|
|
56
|
+
## GlassEffectContainer
|
|
131
57
|
|
|
132
|
-
|
|
58
|
+
A generic `View` over its `Content`, isolated to the main actor (declared
|
|
59
|
+
`@MainActor @preconcurrency`) and also `Sendable`. Its initializer takes an
|
|
60
|
+
optional `CGFloat` spacing, `nil` by default, and a `@ViewBuilder` closure. Every glass shape inside it is
|
|
61
|
+
rendered in one pass, which is what lets shapes blend and morph.
|
|
133
62
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
.frame(width: 80.0, height: 80.0)
|
|
139
|
-
.font(.system(size: 36))
|
|
140
|
-
.glassEffect()
|
|
141
|
-
|
|
142
|
-
Image(systemName: "eraser.fill")
|
|
143
|
-
.frame(width: 80.0, height: 80.0)
|
|
144
|
-
.font(.system(size: 36))
|
|
145
|
-
.glassEffect()
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
```
|
|
63
|
+
`spacing` controls when shapes influence each other. A larger value lets
|
|
64
|
+
shapes blend from further apart and makes morphing start earlier; a smaller
|
|
65
|
+
value means shapes have to come closer first. Leaving it `nil` uses the system
|
|
66
|
+
default.
|
|
149
67
|
|
|
150
68
|
## glassEffectID(_:in:)
|
|
151
69
|
|
|
152
|
-
|
|
153
|
-
|
|
70
|
+
Nonisolated. The first argument is an optional identifier of any type that is
|
|
71
|
+
both `Hashable` and `Sendable`; the `in:` argument is a `Namespace.ID`. It gives
|
|
72
|
+
a glass shape a stable identity within a namespace. It only animates when
|
|
73
|
+
three things are in place: a `@Namespace`, a shared `GlassEffectContainer`, and
|
|
74
|
+
a state change wrapped in `withAnimation`.
|
|
154
75
|
|
|
155
|
-
|
|
156
|
-
nonisolated func glassEffectID(
|
|
157
|
-
_ id: (some Hashable & Sendable)?,
|
|
158
|
-
in namespace: Namespace.ID
|
|
159
|
-
) -> some View
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
Use with `@Namespace`, `GlassEffectContainer`, and `withAnimation` to animate shapes
|
|
163
|
-
morphing into each other when views appear or disappear.
|
|
164
|
-
|
|
165
|
-
### Morphing example
|
|
76
|
+
## glassEffectUnion(id:namespace:)
|
|
166
77
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
78
|
+
Main-actor isolated (`@MainActor @preconcurrency`), with labeled `id:` (an
|
|
79
|
+
optional `Hashable & Sendable` value) and `namespace:` (a `Namespace.ID`)
|
|
80
|
+
arguments. Views whose glass effects share the same shape, the same `Glass` value and the
|
|
81
|
+
same union ID are drawn as one combined shape. It helps when the views are
|
|
82
|
+
generated dynamically or do not sit in one layout container.
|
|
83
|
+
|
|
84
|
+
## glassEffectTransition(_:) and GlassEffectTransition
|
|
85
|
+
|
|
86
|
+
The modifier is main-actor isolated and takes one `GlassEffectTransition`, a
|
|
87
|
+
`Sendable` struct with three static values.
|
|
88
|
+
|
|
89
|
+
| Transition | Behaviour | When |
|
|
90
|
+
| --- | --- | --- |
|
|
91
|
+
| `.matchedGeometry` | Morphs with nearby shapes; the default within the container's spacing | Elements that sit close together |
|
|
92
|
+
| `.materialize` | Content fades while the glass itself grows in or shrinks away; shapes are not matched | Elements far from any other glass |
|
|
93
|
+
| `.identity` | Nothing | Instant changes |
|
|
94
|
+
|
|
95
|
+
```swift
|
|
96
|
+
@available(iOS 26, *)
|
|
97
|
+
struct DetailsToggle: View {
|
|
98
|
+
@State private var showDetails = false
|
|
99
|
+
@Namespace private var space
|
|
100
|
+
|
|
101
|
+
var body: some View {
|
|
102
|
+
let gap: CGFloat = 24
|
|
103
|
+
return GlassEffectContainer(spacing: gap) {
|
|
104
|
+
VStack(spacing: gap) {
|
|
105
|
+
Button("Details") { withAnimation { showDetails.toggle() } }
|
|
106
|
+
.buttonStyle(.glass)
|
|
107
|
+
.glassEffectID("toggle", in: space)
|
|
108
|
+
|
|
109
|
+
if showDetails {
|
|
110
|
+
Text("Gate B12 closes at 09:40")
|
|
111
|
+
.padding()
|
|
112
|
+
.glassEffect(in: .rect(cornerRadius: 14))
|
|
113
|
+
.glassEffectID("details", in: space)
|
|
114
|
+
.glassEffectTransition(.materialize)
|
|
115
|
+
}
|
|
186
116
|
}
|
|
187
117
|
}
|
|
188
118
|
}
|
|
189
|
-
|
|
190
|
-
Button("Toggle") {
|
|
191
|
-
withAnimation {
|
|
192
|
-
isExpanded.toggle()
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
.buttonStyle(.glass)
|
|
196
119
|
}
|
|
197
120
|
```
|
|
198
121
|
|
|
199
|
-
##
|
|
122
|
+
## Button styles
|
|
200
123
|
|
|
201
|
-
|
|
202
|
-
|
|
124
|
+
| Style | Type | Use |
|
|
125
|
+
| --- | --- | --- |
|
|
126
|
+
| `.glass` | `GlassButtonStyle` | Regular actions |
|
|
127
|
+
| `.glassProminent` | `GlassProminentButtonStyle` | The primary action on a screen |
|
|
203
128
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
namespace: Namespace.ID
|
|
208
|
-
) -> some View
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
Useful for dynamically created views or views outside a shared layout container.
|
|
212
|
-
|
|
213
|
-
### Example
|
|
214
|
-
|
|
215
|
-
```swift
|
|
216
|
-
@Namespace private var namespace
|
|
217
|
-
let symbols = ["cloud.bolt.rain.fill", "sun.rain.fill", "moon.stars.fill", "moon.fill"]
|
|
218
|
-
|
|
219
|
-
GlassEffectContainer(spacing: 20.0) {
|
|
220
|
-
HStack(spacing: 20.0) {
|
|
221
|
-
ForEach(symbols.indices, id: \.self) { i in
|
|
222
|
-
Image(systemName: symbols[i])
|
|
223
|
-
.frame(width: 80.0, height: 80.0)
|
|
224
|
-
.font(.system(size: 36))
|
|
225
|
-
.glassEffect()
|
|
226
|
-
.glassEffectUnion(id: i < 2 ? "weather" : "night", namespace: namespace)
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
```
|
|
129
|
+
Both are `PrimitiveButtonStyle` types and already include the interactive
|
|
130
|
+
behaviour, so prefer them to putting `.glassEffect(.regular.interactive())` on
|
|
131
|
+
a `Button` yourself.
|
|
231
132
|
|
|
232
|
-
##
|
|
133
|
+
## DefaultGlassEffectShape
|
|
233
134
|
|
|
234
|
-
|
|
135
|
+
The default `in:` argument of `glassEffect`. It resolves to a `Capsule`.
|
|
235
136
|
|
|
236
|
-
|
|
237
|
-
@MainActor @preconcurrency func glassEffectTransition(
|
|
238
|
-
_ transition: GlassEffectTransition
|
|
239
|
-
) -> some View
|
|
240
|
-
```
|
|
137
|
+
## Scroll edge effect
|
|
241
138
|
|
|
242
|
-
|
|
139
|
+
A nonisolated modifier taking an optional `ScrollEdgeEffectStyle` and, after
|
|
140
|
+
`for:`, an `Edge.Set`. Styles are `.automatic`, `.soft` (a gradual fade) and `.hard` (a crisper cut
|
|
141
|
+
off). System bars already apply an edge effect; set the style yourself for
|
|
142
|
+
custom bars that float over scrolling content, or to change the look.
|
|
243
143
|
|
|
244
|
-
|
|
245
|
-
view hierarchy. Conforms to `Sendable` and `SendableMetatype`.
|
|
144
|
+
## Background extension (split views)
|
|
246
145
|
|
|
247
|
-
|
|
146
|
+
Two main-actor overloads: `backgroundExtensionEffect()` and
|
|
147
|
+
`backgroundExtensionEffect(isEnabled:)`.
|
|
248
148
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
| `.identity` | No transition animation. |
|
|
254
|
-
|
|
255
|
-
### Example with explicit transition
|
|
149
|
+
Inside a `NavigationSplitView` detail column, this mirrors and blurs the view
|
|
150
|
+
into the area under the sidebar or inspector, so artwork seems to continue
|
|
151
|
+
behind them. Use the `isEnabled:` form to switch it conditionally. Usually only
|
|
152
|
+
the backdrop view of the detail column should carry it.
|
|
256
153
|
|
|
257
154
|
```swift
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
.
|
|
263
|
-
.
|
|
155
|
+
NavigationSplitView {
|
|
156
|
+
SidebarList()
|
|
157
|
+
} detail: {
|
|
158
|
+
Image("coastline")
|
|
159
|
+
.resizable()
|
|
160
|
+
.scaledToFill()
|
|
161
|
+
.backgroundExtensionEffect()
|
|
264
162
|
}
|
|
265
163
|
```
|
|
266
164
|
|
|
267
|
-
##
|
|
268
|
-
|
|
269
|
-
SwiftUI provides two built-in Liquid Glass button styles.
|
|
270
|
-
|
|
271
|
-
### GlassButtonStyle
|
|
272
|
-
|
|
273
|
-
Standard glass appearance for buttons.
|
|
274
|
-
|
|
275
|
-
```swift
|
|
276
|
-
Button("Action") { }
|
|
277
|
-
.buttonStyle(.glass)
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
### GlassProminentButtonStyle
|
|
281
|
-
|
|
282
|
-
A more prominent glass appearance for primary actions.
|
|
283
|
-
|
|
284
|
-
```swift
|
|
285
|
-
Button("Confirm") { }
|
|
286
|
-
.buttonStyle(.glassProminent)
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
These button styles automatically include interactivity (touch/pointer reactions).
|
|
290
|
-
Prefer these over manually applying `.glassEffect(.regular.interactive())` to buttons.
|
|
291
|
-
|
|
292
|
-
## DefaultGlassEffectShape
|
|
293
|
-
|
|
294
|
-
The default shape used by `glassEffect(_:in:)` when no shape is specified. Resolves
|
|
295
|
-
to `Capsule`.
|
|
296
|
-
|
|
297
|
-
## Scroll Edge Effect
|
|
298
|
-
|
|
299
|
-
Configures the scroll edge effect style for scroll views within a view hierarchy.
|
|
165
|
+
## ToolbarSpacer
|
|
300
166
|
|
|
301
167
|
```swift
|
|
302
|
-
|
|
303
|
-
_
|
|
304
|
-
for edges: Edge.Set
|
|
305
|
-
) -> some View
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
Available styles include `.soft` (soft edge) and `.hard`. System bars adopt this
|
|
309
|
-
automatically. Apply to custom bars that float over scrollable content.
|
|
310
|
-
|
|
311
|
-
```swift
|
|
312
|
-
.scrollEdgeEffectStyle(.soft, for: .top)
|
|
313
|
-
```
|
|
314
|
-
|
|
315
|
-
## Background Extension (Split Views)
|
|
316
|
-
|
|
317
|
-
Extend content visually under sidebars and inspectors by duplicating the view into
|
|
318
|
-
mirrored copies with a blur effect applied on top:
|
|
319
|
-
|
|
320
|
-
```swift
|
|
321
|
-
NavigationSplitView {
|
|
322
|
-
// sidebar content
|
|
323
|
-
} detail: {
|
|
324
|
-
ZStack {
|
|
325
|
-
BannerView()
|
|
326
|
-
.backgroundExtensionEffect()
|
|
327
|
-
}
|
|
168
|
+
struct ToolbarSpacer: ToolbarContent {
|
|
169
|
+
init(_ sizing: SpacerSizing = .flexible, placement: ToolbarItemPlacement = .automatic)
|
|
328
170
|
}
|
|
329
171
|
```
|
|
330
172
|
|
|
331
|
-
|
|
332
|
-
|
|
173
|
+
`.fixed` inserts a fixed gap that separates glass groups; `.flexible` pushes
|
|
174
|
+
groups apart. Available on iOS and macOS 26.
|
|
333
175
|
|
|
334
|
-
## Availability
|
|
176
|
+
## Availability gating
|
|
335
177
|
|
|
336
|
-
|
|
178
|
+
Every API above needs iOS 26. Give older systems a material background of the
|
|
179
|
+
same shape:
|
|
337
180
|
|
|
338
181
|
```swift
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
182
|
+
extension View {
|
|
183
|
+
@ViewBuilder
|
|
184
|
+
func cardSurface(cornerRadius: CGFloat = 16) -> some View {
|
|
185
|
+
if #available(iOS 26, *) {
|
|
186
|
+
glassEffect(in: .rect(cornerRadius: cornerRadius))
|
|
187
|
+
} else {
|
|
188
|
+
background(.ultraThinMaterial, in: RoundedRectangle(cornerRadius: cornerRadius))
|
|
189
|
+
}
|
|
190
|
+
}
|
|
347
191
|
}
|
|
348
192
|
```
|
|
349
193
|
|
|
350
|
-
## Performance
|
|
351
|
-
|
|
352
|
-
-
|
|
353
|
-
-
|
|
354
|
-
-
|
|
355
|
-
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
- [
|
|
382
|
-
- [
|
|
383
|
-
- [
|
|
384
|
-
- [
|
|
385
|
-
- [
|
|
386
|
-
- [
|
|
387
|
-
- [
|
|
194
|
+
## Performance guidelines
|
|
195
|
+
|
|
196
|
+
- Group glass in a container so the shapes render in one pass.
|
|
197
|
+
- Keep the number of glass surfaces on screen small.
|
|
198
|
+
- Prefer one container per group over many small containers.
|
|
199
|
+
- Measure with Instruments (SwiftUI and Core Animation templates) before and
|
|
200
|
+
after adding glass to scrolling content.
|
|
201
|
+
|
|
202
|
+
## Accessibility considerations
|
|
203
|
+
|
|
204
|
+
- **Reduce Transparency**: system components switch to a more opaque
|
|
205
|
+
appearance on their own. Check that custom glass still reads well.
|
|
206
|
+
- **Reduce Motion**: morphing and fluid animations are toned down. Make sure
|
|
207
|
+
the interface still makes sense without them.
|
|
208
|
+
- **Contrast**: text and icons over glass need enough contrast against
|
|
209
|
+
whatever may scroll behind them.
|
|
210
|
+
|
|
211
|
+
## Best practices summary
|
|
212
|
+
|
|
213
|
+
1. Glass that shares the screen shares a `GlassEffectContainer`.
|
|
214
|
+
2. `.glassEffect()` goes last, once size and styling are settled.
|
|
215
|
+
3. The container's spacing equals the stack's spacing (or exceeds it).
|
|
216
|
+
4. Only controls get `.interactive()`.
|
|
217
|
+
5. Morphing needs `glassEffectID` plus a change inside `withAnimation`.
|
|
218
|
+
6. Buttons take `.glass` or `.glassProminent`.
|
|
219
|
+
7. Fewer glass surfaces read better than many.
|
|
220
|
+
8. Anything glass sits behind an iOS 26 check with a fallback.
|
|
221
|
+
9. Every screen is checked once with Reduce Transparency, once with Reduce Motion.
|
|
222
|
+
|
|
223
|
+
## Apple documentation links
|
|
224
|
+
|
|
225
|
+
- [Article: glass on custom views](https://developer.apple.com/documentation/swiftui/applying-liquid-glass-to-custom-views)
|
|
226
|
+
- [Overview: adopting the new material](https://developer.apple.com/documentation/technologyoverviews/adopting-liquid-glass)
|
|
227
|
+
- [Sample code: Landmarks](https://developer.apple.com/documentation/swiftui/landmarks-building-an-app-with-liquid-glass)
|
|
228
|
+
- [glassEffect modifier](https://developer.apple.com/documentation/swiftui/view/glasseffect(_:in:))
|
|
229
|
+
- [Glass](https://developer.apple.com/documentation/swiftui/glass)
|
|
230
|
+
- [GlassEffectContainer](https://developer.apple.com/documentation/swiftui/glasseffectcontainer)
|
|
231
|
+
- [GlassEffectTransition](https://developer.apple.com/documentation/swiftui/glasseffecttransition)
|
|
232
|
+
- [GlassButtonStyle](https://developer.apple.com/documentation/swiftui/glassbuttonstyle)
|
|
233
|
+
- [GlassProminentButtonStyle](https://developer.apple.com/documentation/swiftui/glassprominentbuttonstyle)
|