
Security News
Node.js Drops Bug Bounty Rewards After Funding Dries Up
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.
react-text-animator
Advanced tools
Beautiful text animations for React - typewriter, particle effects, morphing, and more. Zero dependencies, TypeScript support, highly customizable.
Beautiful text animations for React with zero dependencies. Make your text come alive with typewriter effects, particle explosions, morphing text, glitch effects, and more!
npm install react-text-animator
yarn add react-text-animator
pnpm add react-text-animator
import { TextAnimate } from 'react-text-animator';
function App() {
return (
<TextAnimate animation="typewriter">
Hello World!
</TextAnimate>
);
}
Classic character-by-character typing effect with optional cursor.
<TextAnimate animation="typewriter" duration={2000} stagger={80}>
This text types out character by character
</TextAnimate>
Text explodes into particles and reforms - uses Canvas for smooth animation.
<TextAnimate
animation="particle"
particleCount={100}
particleSize={16}
>
Watch me explode!
</TextAnimate>
Characters slide up from below with staggered timing.
<TextAnimate animation="slideUp" stagger={50}>
Sliding into view
</TextAnimate>
Smooth opacity transition with optional stagger.
<TextAnimate animation="fadeIn" duration={1000} stagger={30}>
Fading in smoothly
</TextAnimate>
Smoothly transitions between different text strings.
<TextAnimate
animation="morph"
morphTexts={["Hello", "World", "React"]}
morphInterval={2000}
>
Morphing
</TextAnimate>
Random characters gradually resolve to actual text.
<TextAnimate animation="scramble" duration={1500}>
Decode this message
</TextAnimate>
Cyberpunk-style glitch reveal with RGB split effect.
<TextAnimate animation="glitch" glitchIntensity={0.7}>
Cyber Text
</TextAnimate>
Characters animate in continuous wave pattern.
<TextAnimate animation="wave" waveAmplitude={20}>
Wavy Text
</TextAnimate>
Text goes from blurry to sharp with smooth transition.
<TextAnimate animation="blur" duration={1200}>
Coming into focus
</TextAnimate>
| Prop | Type | Default | Description |
|---|---|---|---|
animation | AnimationType | required | Type of animation to use |
trigger | 'auto' | 'hover' | 'click' | 'view' | 'manual' | 'auto' | When to trigger the animation |
duration | number | 1000 | Animation duration in milliseconds |
delay | number | 0 | Delay before animation starts (ms) |
stagger | number | 50 | Delay between each character/word (ms) |
easing | EasingType | 'easeOutCubic' | Easing function for animation |
className | string | '' | Additional CSS classes |
style | CSSProperties | {} | Inline styles |
onComplete | () => void | - | Callback when animation finishes |
repeat | boolean | number | false | Repeat animation (true = infinite) |
reverse | boolean | false | Play animation in reverse |
| Prop | Type | Default | Description |
|---|---|---|---|
particleCount | number | 100 | Number of particles |
particleSize | number | 16 | Size of each particle |
particleColor | string | (inherited) | Color of particles (inherits text color if not specified) |
| Prop | Type | Default | Description |
|---|---|---|---|
morphTexts | string[] | - | Array of texts to morph between |
morphInterval | number | 3000 | Time between morphs in milliseconds |
| Prop | Type | Default | Description |
|---|---|---|---|
waveAmplitude | number | 20 | Height of the wave motion |
| Prop | Type | Default | Description |
|---|---|---|---|
glitchIntensity | number | 0.5 | Intensity of glitch effect (0-1) |
Animation starts immediately when component mounts.
<TextAnimate animation="fadeIn" trigger="auto">
Animates immediately
</TextAnimate>
Animation triggers when user hovers over the element.
<TextAnimate animation="slideUp" trigger="hover">
Hover over me!
</TextAnimate>
Animation triggers when user clicks the element.
<TextAnimate animation="typewriter" trigger="click">
Click to animate
</TextAnimate>
Animation triggers when element scrolls into view (uses Intersection Observer).
<TextAnimate animation="particle" trigger="view">
Scroll to see me animate
</TextAnimate>
<div>
<TextAnimate animation="typewriter" duration={2000}>
First line types out
</TextAnimate>
<TextAnimate animation="slideUp" delay={2200} stagger={50}>
Then this slides in
</TextAnimate>
<TextAnimate animation="fadeIn" delay={3000}>
And this fades in last
</TextAnimate>
</div>
<TextAnimate
animation="glitch"
className="my-custom-class"
style={{
fontSize: '3rem',
fontWeight: 'bold',
color: '#00ffff',
}}
>
Styled glitch text
</TextAnimate>
<TextAnimate
animation="scramble"
onComplete={() => console.log('Decoded!')}
>
Secret message
</TextAnimate>
<TextAnimate animation="wave" repeat={true}>
Loops forever
</TextAnimate>
<TextAnimate animation="particle" repeat={3}>
Animates 3 times
</TextAnimate>
<TextAnimate
animation="morph"
morphTexts={[
"Loading...",
"Processing...",
"Almost there...",
"Done!"
]}
morphInterval={1500}
>
Loading
</TextAnimate>
Available easing options:
lineareaseIn, easeOut, easeInOuteaseInCubic, easeOutCubic, easeInOutCubiceaseInQuad, easeOutQuad, easeInOutQuadeaseInQuart, easeOutQuart, easeInOutQuart<TextAnimate animation="slideUp" easing="easeOutQuart">
Custom easing
</TextAnimate>
Works in all modern browsers:
For older browsers, the component will gracefully fallback to displaying static text.
trigger="view" for animations below the fold to delay renderingFull TypeScript support with type definitions included:
import { TextAnimate, TextAnimateProps, AnimationType } from 'react-text-animator';
const animation: AnimationType = 'typewriter';
const props: TextAnimateProps = {
animation: 'fadeIn',
duration: 1000,
children: 'Hello',
};
Contributions are welcome! Please feel free to submit a Pull Request to https://github.com/hichamcc/react-text-animator
MIT © HICHAM
Built with React, TypeScript, and Canvas API. Zero external dependencies!
Made with ❤️ for the React community
FAQs
Beautiful text animations for React - typewriter, particle effects, morphing, and more. Zero dependencies, TypeScript support, highly customizable.
We found that react-text-animator demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.