Effect
Liquid glass materialize
Glass appears by gaining its optics, not by fading in: the bend, the rim and the fill grow from nothing to full over a quarter of a second while the content settles in, and leave the same way.
- Use in
- Glass that comes and goes: a toolbar or a floating button appearing on scroll, a popover or menu opening, a body arriving in a morph group, a tab bar coming back after it was hidden.
- Avoid
- A plain opacity fade on glass (it reads as a grey card dissolving); materializing large text-heavy panels (sheets slide in instead); running it under Reduce Motion, where a short cross-fade replaces it.
Parameters. 200–300 ms, ease-out cubic; displacement, rim and glow opacity and the fill go 0 → 1 together; the content fades in over the last 60 %; the reverse on the way out; Reduce Motion: a 150 ms cross-fade.
How it is built
- Design tool
- Smart Animate between a frame with the Glass effect at Refraction 0, Depth 0, no rim, fill 0 and the final frame; stills show the end state.
- Web
- Animate the feDisplacementMap scale from 0 to its full value with requestAnimationFrame while the body's --glass-amount (fill) and the rim and glow opacity follow (web recipe section F, materialize()). SwiftUI: .glassEffectTransition(.materialize).
uDisp, the rim strength and the fill alpha all multiply by m = 1 − (1 − t)³ for t in 0…1 over the transition; m = 0 shows the plain backdrop.Questions
Where should materialize be used?
Glass that comes and goes: a toolbar or a floating button appearing on scroll, a popover or menu opening, a body arriving in a morph group, a tab bar coming back after it was hidden.
When should materialize be avoided?
A plain opacity fade on glass (it reads as a grey card dissolving); materializing large text-heavy panels (sheets slide in instead); running it under Reduce Motion, where a short cross-fade replaces it.
How is materialize built on the web?
Animate the feDisplacementMap scale from 0 to its full value with requestAnimationFrame while the body's --glass-amount (fill) and the rim and glow opacity follow (web recipe section F, materialize()). SwiftUI: .glassEffectTransition(.materialize).

