Measured entry
magicui-ripple-button
buttondark-futuristicmotion on file
A React client button that creates a click-positioned ripple while forwarding native button props and refs. It ships as a shadcn registry component and depends on utility classes, a local cn helper backed by clsx and tailwind-merge, plus the registry's animation theme entry and keyframes.



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 | 0 |
| Axe minor | 0 |
| Gzip marginal | 29.9 KB (95.4 KB build, 65.5 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 1.73s error during build: [vite:load-fallback] Could not load <sandbox>re-8bcfd38ac565/src/lib/utils (imported by src/cut/ripple-button.tsx): ENOENT: no such file or directory, open '<sandbox>re-8bcfd38ac565/src/lib/utils'
Verdict
A focused effect component with sensible native button behavior and a small API. It needs a shadcn-style setup to work as shipped because the bare build cannot resolve its local utility helper, while the visual effect also relies on registry-provided CSS.
Use it if
- You want tactile click feedback while retaining native button attributes and ref forwarding.
- Your app already uses shadcn conventions, utility classes, and shared theme CSS.
- You need configurable ripple color and animation duration in a compact button primitive.
Skip it if
- Your project cannot provide the local cn helper or the expected utility-class pipeline.
- You need a button with built-in loading, icon, size, or visual variant APIs.
- Your interaction design avoids decorative motion or requires a dedicated reduced-motion behavior in the component.
Install
| Declared dependencies | clsx, tailwind-merge |
|---|---|
| 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, install clsx and tailwind-merge, add or replace the cn helper and its import alias, configure the utility classes, and copy the ripple animation theme entry and keyframes into global CSS. Keep the file as a React client component.
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/magicuidesign/magicuiAlternatives
Other published entries for the button pattern, ordered by what they measured: mounts first, then clean axe scans, then bare-mode passes, then the smaller bundle.
- neu-buttonneumorphism
- Renders
- YES
- A11y
- 0
- Gzip
- 17.8KB
- Bare
- pass
- Prov
- NO
- clay-buttonclaymorphism
- Renders
- YES
- A11y
- 0
- Gzip
- 18.2KB
- Bare
- pass
- Prov
- NO
- tripled-animated-radio-shadcnuiminimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 58.2KB
- Bare
- pass
- Prov
- NO
- ruixen-glow-link-buttonliquid-glass
- Renders
- YES
- A11y
- 0
- Gzip
- 58.9KB
- Bare
- pass
- Prov
- NO
- tripled-mood-gradient-button-shadcnuigradient-glow
- Renders
- YES
- A11y
- 0
- Gzip
- 59.2KB
- Bare
- pass
- Prov
- NO
- ruixen-glass-ai-cardliquid-glass
- Renders
- YES
- A11y
- 0
- Gzip
- 59.5KB
- Bare
- pass
- Prov
- NO