Preset-driven staggered text reveals with blur, fade, slide, and scale animations, powered by Motion. React component.
Made by AxylPreset-driven staggered text reveals — blur, fade, slide, and scale animations on words and characters.
Scroll-triggered headline — set scrollTrigger (built-in useInView):
Animate immediately on mount (default) or toggle with trigger:
Use blurRevealItemVariants() when you need the old blur-reveal tuning (blur, yOffset):
| Prop | Type | Default |
|---|---|---|
children? | string | - |
as? | keyof JSX.IntrinsicElements | "p" |
preset? | "blur" | "fade-in-blur" | "fade" | "slide" | "scale" | "fade" |
per? | "word" | "char" | "line" | "word" |
scrollTrigger? | boolean | false |
once? | boolean | true |
viewportMargin? | string | "0px 0px -10% 0px" |
trigger? | boolean | true |
delay? | number | 0 |
speedReveal? | number | 1 |
speedSegment? | number | 1 |
variants? | { container?: Variants; item?: Variants } | - |
containerTransition? | Transition | - |
segmentTransition? | Transition | - |
className? | string | - |
segmentWrapperClassName? | string | - |
Use TextEffect for hero headings, section titles, or any large display text where an entrance animation emphasizes the content on first impression. The scrollTrigger mode works well for below-the-fold content in marketing pages, triggering the reveal as each section scrolls into view.
Use per="word" for phrases and headings; switch to per="char" for short labels where individual character timing creates a typewriter feel.
The text content is always present in the DOM — animation is purely visual opacity and transform. Screen readers announce the full text immediately, regardless of animation state. When prefers-reduced-motion: reduce is set, Motion skips to the final visible state so the content appears instantly without any transition.
Inspired by motion-primitives.
Text Cursor Loop
Cycles through a list of words with a per-character collapse/reveal transition and a trailing cursor glyph that wipes across the text between words. React.
Text Reveal (Mask)
A scroll-triggered masked slide-up text reveal animation, powered by Motion. A React component.
Built by Axyl. A motion-first component registry for React.
Last updated: 9/14/2026
Help keep SoraLabs moving.
Every contribution helps us build and maintain open-source tools for the community.
Sponsor on GitHub