Measured entry
animata-stacked-sections
scroll-effect3dmotion on file
A client-side React primitive that turns direct children into sticky, progressively stacked panes and optionally scales covered content during scroll. It ships through a shadcn registry as a TypeScript component plus a small CSS layer, uses React and Tailwind utility classes, and imports the usual local cn helper through an alias.



Measured
Every value below was written by the harness on the run that produced the frames above. None of it is derived from the prose.
| Build | OK |
|---|---|
| Mount | OK |
| Console errors | 0 |
| Uncaught page errors | 0 |
| Horizontal overflow | clean at 375, 768, 1440 |
| Axe critical | 0 |
| Axe serious | 0 |
| Axe moderate | 2 |
| Axe minor | 0 |
| Gzip marginal | 27.2 KB (92.6 KB build, 65.4 KB baseline) |
| Bare mode | FAIL |
| Provider required | NO |
| Demo used | written from the component source API |
What the harness recorded
BARE BUILD
✗ Build failed in 31.59s error during build: [vite:load-fallback] Could not load <sandbox>/src/lib/utils (imported by src/cut/components/animata/scroll/stacked-sections.tsx): ENOENT: no such file or directory, open '<sandbox>/src/lib/utils'
Verdict
A focused, configurable stack effect that builds and runs cleanly in the prepared harness, with sensible reduced-motion behavior. It needs a shadcn-style setup before it will mount in a bare app because the source expects the local cn utility and Tailwind conventions.
Use it if
- You want editorial chapters, product stages, or case-study panels to accumulate as visitors scroll.
- Your React app already has Tailwind, a local class-name helper, and a client-rendered boundary.
- You need the stack to work inside either the page scroll or a nested scrolling container.
- You want configurable pane spacing, stack offset, scaling, and an optional closing scroll runway.
Skip it if
- Your layout cannot reserve the vertical scroll space that sticky panes need to read clearly.
- You require a CSS-only effect with no scroll listener or direct transform updates.
- Your content must remain visually unchanged for every motion preference and interaction state.
- You do not use Tailwind and do not want to translate the component's utility classes.
Install
| Declared dependencies | none declared |
|---|---|
| Missing on install | none |
| Bare install | fails once the shadcn-style helpers are removed, so it needs that setup |
| Provider | no provider required in the harness |
In a non-shadcn project, add React client rendering, configure Tailwind for the component file, copy its companion CSS, and either create the aliased lib/utils module with a cn class-merging helper or replace that import with your own local utility. Preserve the client directive where the framework requires it.
Source and credit
This page is a review, not a copy. The component source lives with its author and this site does not republish it. Read the license before you use anything.
Author repository
github.com/codse/animataAlternatives
Other published entries for the scroll-effect pattern, ordered by what they measured: mounts first, then clean axe scans, then bare-mode passes, then the smaller bundle.
- reui-scrollspyminimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 21.5KB
- Bare
- pass
- Prov
- NO
- kibo-marqueeminimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 31.3KB
- Bare
- pass
- Prov
- NO
- motion-primitives-in-viewspatial
- Renders
- YES
- A11y
- 0
- Gzip
- 58.1KB
- Bare
- pass
- Prov
- NO
- tripled-interactive-timeline-shadcnuiminimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 58.7KB
- Bare
- pass
- Prov
- NO
- ruixen-container-text-scrollspatial
- Renders
- YES
- A11y
- 0
- Gzip
- 61.5KB
- Bare
- pass
- Prov
- NO
- fancy-parallax-floating3d
- Renders
- YES
- A11y
- 0
- Gzip
- 27.5KB
- Bare
- fail
- Prov
- NO