A primary CTA button with controlled character-stagger motion for hero sections, launch pages, and conversion-focused actions.

Character Stagger Primary Button gives a button or link a small, useful moment of feedback: a primary CTA gets a controlled typographic lift.
Use it where a CTA needs to feel responsive and intentional, not theatrical. A button should confirm action, state, or direction; it should not become a tiny stage play that delays the click.
The risk in production is keeping the markup honest. Use genuine button and anchor elements, preserve focus, fire instantly, and make loading and disabled states obvious. The animation decorates the action; it is never the action.
You can preview it now. Upgrade to Pro for instant install access.
You can preview it now. Upgrade to Pro for instant install access.
You can preview it now. Upgrade to Pro for instant install access.
Use this as button-interaction implementation guidance. Verify the shipped element semantics, anchor/button mode, disabled and loading states, focus-visible behavior, keyboard activation, and reduced-motion handling before relying on exact props, defaults, imports, or installation steps.
Not for destructive actions, unclear states, or places where animation hides the label or delays activation.
Keep feedback fast, avoid layout-triggering letter movement, and preserve instant activation.
Use real buttons or anchors, visible focus-visible styles, and clear loading/disabled states. Touch targets should stay large enough on mobile.
| Prop | Type | Default | Description |
|---|---|---|---|
btnText | string | Hover me | Button label text. |
staggerStep | number | 0.01 | Delay between each character's hover motion. |
hoverColor | color | #ffffff | Text color while hovered. |
showArrow | boolean | false | Shows the optional arrow icon. |
Use it when a hero CTA needs a controlled typographic lift — without delaying the action.
Yes. Use `<button>` for actions and `<a>` for navigation.
Use visible focus-visible styles and support keyboard activation.
Loading should be visually clear and programmatically communicated without hiding the label.
Remove long staggers, scrambles, and looping emphasis while keeping instant state feedback.
Need a custom effect? Tell us what to create.