WebberUI

Shimmer Button

A shimmer button with light flowing around its edge, an inner highlight lining, and dimensional hover feedback.

A bright arc rotates continuously around the button's center, revealed only along the border ring, forming light that flows around the perimeter. Pure CSS conic gradient plus motion/react rotation — no canvas and no external assets.

Loading preview…
npx shadcn@latest add https://webberui.com/r/shimmer-button.json

Playground

Tune the props live — the code snippet updates as you go, so you can dial in the look you want before copying it.

3
40
<ShimmerButton />

Installation

npx shadcn@latest add https://webberui.com/r/shimmer-button.json

Or, once registries are configured in components.json, install it as @webberui/shimmer-button.

Usage

import { ShimmerButton } from "@/components/ui/shimmer-button";

<ShimmerButton onClick={() => console.log("clicked")}>
  Get Started
</ShimmerButton>

The component forwards all native button attributes (onClick, disabled, type, and so on), and className can override the size and background color.

Props

PropTypeDefaultDescription
shimmerColorstring"#ffffff"Color of the light flowing around the edge
shimmerSizestring"1.5px"Thickness of the light band (that is, the border width)
shimmerDurationnumber3Time for the light to travel around once (seconds)
spreadnumber40Angular width of the bright arc (degrees); larger means a longer light band
borderRadiusstring"9999px"Button corner radius
backgroundstring"rgba(0, 0, 0, 1)"Button background color, either a solid color or a gradient
classNamestringForwarded to the root button; can override spacing and size

All other React.ButtonHTMLAttributes are forwarded to the underlying button.

Accessibility

  • When the user has "reduce motion" enabled at the system level, the light stops rotating and the button keeps a static appearance
  • Every decorative layer carries aria-hidden, so assistive technology only reads the button text
  • It has a focus-visible focus ring, keeping keyboard operation visible

On this page