mrkeyoor.com_
Tue 01 Sept 17:43 UTC
Webevaluationupdated 26 Aug 2026

Viscose-carousel review

Viscose is a portfolio carousel drawn as one full-screen WebGL fragment shader. Cards travel around an off-screen ring, fuse into soft shapes when they meet, stretch into threads when they separate, and respond to scrolling, dragging, swiping, hovering, or a press on touch screens.

+25stars / 7d
Verdict

Our Viscose run installed 623 packages, built in 20 seconds, and found 0 known npm vulnerabilities, but there was no test target and the README lists four production-blocking interaction gaps. Study or fork it for the shader technique, not as a finished portfolio. Shipping it responsibly means replacing every image, resolving the commercial font, adding real destinations, and implementing keyboard and reduced-motion behavior.

We ran it

Lab card: what happened when we ran Viscose-carouselScreenshot of Viscose-carousel (viscose-carousel.vercel.app)
Install✓ · 17s623 packages · 501 MB
Build✓ · 20s
Testsn/ano test script
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo53 files~3,301 lines of source · 5.1 MB · 0 CI workflows

Answers from our run

Does Viscose-carousel build from source?

Dependencies installed in 17 seconds (623 packages), and the build succeeded in 20 seconds. We cloned commit 4b9ac8c into a clean Debian container with 3 CPUs and no project-specific setup.

Does Viscose-carousel have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does Viscose-carousel have known vulnerabilities in its dependencies?

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

Who should not use Viscose-carousel?

Anyone shipping the repository unchanged: the README says all images belong to other people, and PP Neue Montreal is included only for local evaluation without a commercial license.

What are the alternatives to Viscose-carousel?

Embla Carousel, Swiper, Keen Slider. Our Viscose run installed 623 packages, built in 20 seconds, and found 0 known npm vulnerabilities, but there was no test target and the README lists four production-blocking interaction gaps.

Setup4/517-second install and 20-second build, with no test target
Docs5/5Rendering, tuning, licenses, assets, and known gaps are explicit
Community2/5433 stars, no open issues, and no release history
Maturity2/5Work in progress with missing access and destination behavior

Who it’s for

Creative developers studying signed distance fields, shader blending, and unusual portfolio navigation.
Designers who want a striking experimental starting point and are prepared to replace its content, font, and interaction gaps.
Next.js teams comfortable debugging Three.js and GLSL in the browser.
Portfolio makers whose work benefits from one dominant, motion-led browsing experience.

Who it’s NOT for

Anyone shipping the repository unchanged: the README says all images belong to other people, and PP Neue Montreal is included only for local evaluation without a commercial license.
Public sites that need keyboard access or reduced-motion support now: the status section explicitly says both are absent.
Portfolios where clicking a project must open its case study: a card only moves to the center, even though the cursor says View.
Teams targeting narrow phones without further tuning: the author says the layout drifts below roughly 500px.
Buyers seeking a drop-in carousel package: this is a private Next.js application with no published release and no test target.

Setup reality

Our sandbox installed 623 npm packages in 17 seconds and used 501 MB on disk. The production build succeeded in 20 seconds. No test script or target existed, so tests were skipped; npm audit reported 0 known vulnerabilities.

Development needs Node 20 or newer. Real use requires replacing 18 placeholder project records and their unlicensed images, then replacing or licensing PP Neue Montreal. The included panel exposes around 136 visual controls in development and does not ship in production.

The checkout had 53 files, about 3,301 source lines, no CI workflow files, no Dockerfile, and no tests directory. GLSL compiles in the browser, so a successful Next.js build can still hide a shader typo. Keyboard controls, reduced motion, actual project links, and tighter phone behavior are implementation work, not optional polish.

One fragment shader draws the entire ring

Viscose avoids a row of DOM cards. A full-screen fragment shader draws signed distance fields for the ring, its cards, the threads between them, the refracting edge effect, and the cursor label. Smooth blending makes neighboring shapes merge as they approach and pull into thin necks as they separate. Card positions arrive as uniform arrays, while an image atlas supplies the project art. The result feels closer to a digital installation than a normal content slider.

That focused idea lives in a small repository: our checkout had 53 files and about 3,301 source lines. The stack is still substantial, using Next.js 16, React 19, Three.js r185, GSAP, and Tailwind 4. The ring may use one draw call, but the application also manages atlas loading, responsive fitting, metadata transitions, pointer input, touch gestures, and a timed entry sequence.

Motion has care, while access controls are missing

Scrolling, dragging, or swiping rotates the ring with momentum before it snaps to the nearest card. Hovering softens the field around a project, moves its neighbors, and produces threads. Touch users get the same effect through a press-and-hold gesture. Clicking an off-center card animates it to the front. Those choices show that the author considered a finger without hover instead of treating mobile as a smaller mouse screen.

The repository also states its limits without euphemism. There is no keyboard control and no reduced-motion mode, even though the entry includes 6 seconds of animated blur. Below roughly 500px, the phone layout drifts because tuning happened nearer the 640px end. A centered card still does not open a project. These are blockers for a public portfolio, especially when the interface displays a View label that promises an action.

What happened when we ran it

Our sandbox installed 623 npm packages in 17 seconds, using 501 MB on disk. The Next.js production build succeeded in 20 seconds. npm audit reported 0 known vulnerabilities across critical, high, moderate, and low severities. The run used an unprivileged Node 22 Debian container with 3 CPUs, 8 GB of RAM, no secrets, and commit 4b9ac8c.

There was no test script or target, so tests were skipped. The checkout also had no tests directory, CI workflow, or Dockerfile. A passing 20-second build does not validate the WebGL result because the README warns that GLSL compiles in the browser; a shader typo can leave the Next.js build green. Visual review on real GPUs and input testing are required after every shader change.

The included artwork and one font cannot ship unchanged

Every sample project name, discipline, and year is placeholder data. More seriously, the images were collected from other people's work and are not covered by the source license. The README tells forkers to replace them. PP Neue Montreal is also bundled only for local development and evaluation. A commercial site needs its own license or a switch to the included Satoshi typeface, with the corresponding font name changed in both CSS and shader parameters.

The measured install already occupies 501 MB before a team adds its own source images and deployment output. Replacing the 18 project rows is straightforward because one array controls atlas order, ring order, the index column, and numbering. Reordering it changes all four together. That convenience also means careless image replacement can disturb composition, loading order, and the sequence around the ring.

Around 136 controls make tuning possible and risky

A development-only lil-gui panel groups about 136 settings for fit, shape, timing, stage, metadata, pointer response, side cards, threads, and glass. It is dynamically imported behind a development guard, so it does not ship in the production bundle. The panel is a useful map of the visual system and a practical way to find whether a desired change already has a parameter.

Before tuning, the author tells developers to check that the fit scale reads 1.000 or redefine the current window as the reference. Measurements were authored against a 14-inch MacBook Pro at 1512 points. Ignoring that step can produce settings that look right only because a scale factor is compensating locally. The 20-second build offers no protection against that design error, so record reference viewport and device choices alongside changed parameters.

Loading behavior is part of the composition

The image atlas binds on the first frame and fills as files arrive. The front card receives high priority so its art can appear while other images continue loading. A counter at the bottom is also the animation gate: the seed card holds at center, and the ring begins its entry on the frame where loading reaches 100. Slow assets therefore alter the opening rhythm rather than merely filling boxes after the layout starts.

Our run measured package installation and compilation, not image transfer or animation performance. It did not provide frame rates, GPU timings, bundle size, or phone results, so none should be inferred. Replace the sample art with realistic production dimensions, convert the roughly 340 KB of font files to an appropriate web format if licensing permits, and profile the actual target devices before choosing this as a homepage.

This is a study piece, not a maintained carousel library

GitHub records the last push on August 15, 2026 and 433 stars. There was no published release, no open issue, and 2 combined issues and pull requests on the repository page when fetched. The package is marked private at version 0.1.0. The README calls the work unfinished and publishes it because the rendering approach may help others, which is a fair description of its current value.

Viscose is unusually honest source material for learning how a visual idea becomes shader math, responsive fitting, and input handling. The 17-second install and clean audit make it easy to inspect. A production fork is a redesign project: own the art, settle the font rights, make View work, add keyboard and reduced-motion paths, test below 500px, and verify the shader in browsers rather than trusting the build.

Alternatives

ProjectWhat it isPick it when
Embla CarouselA small carousel engine with precise dragging and framework adapters.pick this instead when accessibility and product content matter more than a custom shader spectacle.
SwiperA widely used touch slider with modules for navigation, pagination, effects, and virtual slides.pick this instead when you need a documented production carousel across many layouts and devices.
Keen SliderA touch slider with a small core and adapters for common front-end frameworks.pick this instead when native-feeling drag behavior and lower rendering complexity beat a one-off visual concept.

What people are saying

  1. [velocity-scout] Yousuf-developer/Viscose-carousel

Sources

  1. Viscose README
  2. Viscose rendering breakdown
  3. Viscose agent and technical notes

More web reviews

axios · super-productivity · Graphite · fastify · tabler · go-zero · the whole board →