mrkeyoor.com_
Wed 30 Sept 20:41 UTC
Webevaluationupdated 30 Sept 2026

hyalite--liquid-glass review

Hyalite is a single JavaScript file that makes a web element bend the page behind it like a thick glass lens. It uses generated SVG displacement maps and CSS backdrop filtering instead of WebGL, with full refraction in Chromium and a plain blur fallback in Safari and Firefox.

Verdict

Our Hyalite run installed 0 packages in 9 seconds, but its tests exited 2 after 7 seconds because the Debian image had no Chromium-based browser, so the true setup cost is one script plus a browser-aware test environment. Use it for a limited number of Chromium-first surfaces when a deliberate blur fallback is acceptable. Skip it when refraction must match across engines or when the design calls for hundreds of filtered elements.

We ran it

Lab card: what happened when we ran hyalite--liquid-glassScreenshot of hyalite--liquid-glass (vii-cae.github.io/hyalite--liquid-glass/demo/index.html)
Install✓ · 9s0 packages · 3 MB
Buildn/ano build script
Tests✗ · 7sran, no count parsed
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo20 files~2,654 lines of source · 1.6 MB · 0 CI workflows

Answers from our run

Does hyalite--liquid-glass build from source?

Dependencies installed in 9 seconds (0 packages), and the project has no separate build step. We cloned commit b9f2719 into a clean Debian container with 3 CPUs and no project-specific setup.

Do hyalite--liquid-glass's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Does hyalite--liquid-glass have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use hyalite--liquid-glass?

Products that require the same refraction in Safari and Firefox: the README says those engines receive the CSS fallback instead.

What are the alternatives to hyalite--liquid-glass?

Liquid Glass, Liquid Glass JS, liquidGL. Our Hyalite run installed 0 packages in 9 seconds, but its tests exited 2 after 7 seconds because the Debian image had no Chromium-based browser, so the true setup cost is one script plus a browser-aware test environment.

Setup4/50 packages and no build, but visual tests need Chromium
Docs5/5Exact API, browser, performance, caching, and fallback notes
Community3/5218 stars and a recent push, with no open issues or PRs
Maturity3/5v0.5.0 is focused and tested, but Chromium owns the full effect

Who it’s for

Frontend developers adding a small number of glass cards, controls, or chat bubbles to a Chromium-focused interface.
Designers who want per-element refraction without adding a WebGL canvas or framework dependency.
Teams willing to treat refraction as an enhancement and design the blur fallback on purpose.
Developers who want a direct watch and attach API with TypeScript declarations and tunable optics.

Who it’s NOT for

Products that require the same refraction in Safari and Firefox: the README says those engines receive the CSS fallback instead.
Pages planning hundreds of glass surfaces: the performance guidance says each filtered element creates its own render surface and warns against that scale.
Strict CSP deployments that cannot permit img-src data:: Hyalite stores its generated lens maps as data URLs.
Test environments without a Chromium-based browser: our test command exited 2 after checking the documented browser paths and finding none.
Teams wanting a mature cross-browser standard rather than a Chromium-specific visual enhancement at version 0.5.0.

Setup reality

Our fresh Debian sandbox installed commit b9f2719 in 9 seconds. Npm added 0 packages, and the installed checkout used 3 MB. The project has no build script, so there was no build step to run. Tests failed with exit 2 after 7 seconds.

The documentation table check passed before the failure. The visual cases then stopped because no Chromium-based browser was installed. The runner accepts --browser <path> or HYALITE_CHROME, and its error listed Chrome, Chromium, Edge, and Brave paths. The log did not show a visual assertion failure.

Using the library itself means loading hyalite.js, applying its CSS variables, and attaching or watching elements. Full refraction needs Chromium. Safari and Firefox keep the blur and rim fallback, while a strict content security policy must allow generated data-image URLs.

One 51,559-byte script supplies the whole effect

Hyalite turns an ordinary element into a lens over the page behind it. The script calculates a displacement map for that element's dimensions and corner radii, feeds the map into an SVG filter, and exposes the result through CSS custom properties. You keep control of the element's background and radius. Hyalite supplies the bent edge, shade, rim, and optional blur without placing the interface inside a WebGL canvas.

The commit we examined had 20 files, roughly 2,654 lines of source, and a 1.6 MB checkout. Its published package list contains the JavaScript file, TypeScript declarations, two READMEs, and the MIT license. There is no framework adapter or component tree to adopt. You call attach for one element or watch for matching descendants, then style the variables it writes.

Zero installed packages still leaves a browser requirement

The API is compact enough to understand before adding it to a page. watch handles current and future matches, refresh rebuilds after a radius-only change, and setOpts retunes attached elements. Options cover the bevel profile, thickness, dispersion, edge lighting, and resize behavior. This is useful control, though the defaults are the author's visual choices rather than a neutral material preset.

Our npm install completed in 9 seconds, added 0 packages, and left the environment at 3 MB. Package.json defines a test command but no build command, which matches the promise of one file and no build step. The absence of npm dependencies does not make the whole workflow self-contained because visual verification happens in an external browser executable.

What happened when we ran it

Our sandbox installed commit b9f2719 in 9 seconds on an unprivileged Debian container with 3 CPUs, 8 GB of RAM, Node 22, and no secrets. Npm audit reported 0 known vulnerabilities across all severity levels. There was no build target, so we skipped that step rather than counting it as a success.

The test command failed with exit 2 after 7 seconds. Its first check passed: both README option tables matched the defaults in the script. The runner then reported that it could not find Chrome, Chromium, Edge, or Brave in the paths it checks. It told us to provide --browser <path> or set HYALITE_CHROME. The supplied log contains no failed rendering case, so the result establishes a missing browser prerequisite, not a broken glass effect.

The repository has no CI workflow file, Dockerfile, or tests directory. Its browser runner and self-checking page live under demo, which explains why a conventional directory scan can miss them. A team adopting the 51,559-byte script should put a known Chromium build into its own CI image, pass the explicit path, and capture screenshots in the actual component layouts it ships.

Safari and Firefox get blur instead of refraction

Chromium is the only engine where Hyalite claims the SVG backdrop filter renders. Safari accepts the property but drops the SVG portion, while Firefox does not implement SVG graphs in backdrop-filter. Hyalite checks for Chromium before writing its refraction variable. Other engines keep the CSS blur fallback and the inset-shadow rim if you use the documented snippet.

That fallback makes the effect safe to add as decoration, but it does not make the experience visually equal. A Chromium user sees bent lines and channel separation around the bevel. A Safari or Firefox user sees frosted glass. Test the 3 MB project with those engines anyway because your own foreground color, contrast, and border treatment decide whether the fallback still reads as an intentional control.

Each filtered element creates its own render surface

Lens maps are generated on the main thread and cached by geometry. Similar element sizes share a map, while resizing can rebuild at intervals of 90 ms. The README says a modest number of surfaces is fine and hundreds are not. It also explains which settings drop filter work: disabling dispersion removes color passes, and disabling smoothing removes another displacement pass and ring blur.

Those are design constraints, not benchmark results. The project deliberately publishes no speed figures and tells users to measure on target devices. Our 7-second test attempt never reached the visual cases, so we have no frame-rate or map-build measurement to add. Before using Hyalite across a feed or dashboard, profile the worst page on low-end hardware and count simultaneous filtered elements.

Version 0.5.0 fixes motion defects that screenshots miss

The September 11 release focused on two transient artifacts: glass dropping out while an element resized and a bright rim appearing during the materialize animation. Its notes describe frame-by-frame Chrome checks and a changed settle default. The release also calls the new behavior breaking, so an upgrade from 0.4.0 deserves a motion test rather than a static before-and-after image.

GitHub showed 218 stars and no open issues or pull requests on September 30, 2026. The last push was September 11, the day version 0.5.0 landed, only four days after the repository was created. That is recent work with a short public history. Hyalite is a good fit when its narrow job matches your browser policy. The deciding question is whether a blur in two major engines is an acceptable fallback for the exact surface you are designing.

Alternatives

ProjectWhat it isPick it when
Liquid GlassA small copy-and-paste SVG filter experiment for a liquid-glass effect.pick this instead when you want a minimal shader example to study or adapt rather than a documented element API.
Liquid Glass JSA WebGL 2 library with glass containers, buttons, and nested effects.pick this instead when nested components and WebGL rendering matter more than Hyalite's one-file SVG approach.
liquidGLA WebGPU and WebGL glass renderer with stacked lenses and pointer interaction.pick this instead when you need GPU rendering, interactive distortion, or multiple overlapping lenses.

What people are saying

  1. [velocity-scout] VII-Cae/hyalite--liquid-glass

Sources

  1. Hyalite repository and README
  2. Hyalite v0.5.0 release notes
  3. Hyalite browser case runner

More web reviews

chi · youtube-ambilight · human-atlas · liquid-glass-screens · echarts · react-three-fiber · the whole board →