New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

react-text-animator

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-text-animator

Beautiful text animations for React - typewriter, particle effects, morphing, and more. Zero dependencies, TypeScript support, highly customizable.

latest
Source
npmnpm
Version
1.0.1
Version published
Maintainers
1
Created
Source

React Text Animator

npm version npm downloads License: MIT

Beautiful text animations for React with zero dependencies. Make your text come alive with typewriter effects, particle explosions, morphing text, glitch effects, and more!

✨ Features

  • 🎨 9 Animation Types - Typewriter, particles, slide, fade, morph, scramble, glitch, wave, blur
  • 🚀 Zero Dependencies - No external dependencies, lightweight bundle (~4KB gzipped)
  • 💪 TypeScript Support - Full type definitions included
  • Performance Optimized - Smooth 60fps animations using CSS and Canvas
  • 🎯 Flexible Triggers - Auto, hover, click, scroll into view, or manual
  • 🎛️ Highly Customizable - Control duration, delay, easing, and more
  • 📦 Easy to Use - Simple API, one component does it all

📦 Installation

npm install react-text-animator
yarn add react-text-animator
pnpm add react-text-animator

🚀 Quick Start

import { TextAnimate } from 'react-text-animator';

function App() {
  return (
    <TextAnimate animation="typewriter">
      Hello World!
    </TextAnimate>
  );
}

🎭 Available Animations

Typewriter

Classic character-by-character typing effect with optional cursor.

<TextAnimate animation="typewriter" duration={2000} stagger={80}>
  This text types out character by character
</TextAnimate>

Particle Explosion

Text explodes into particles and reforms - uses Canvas for smooth animation.

<TextAnimate
  animation="particle"
  particleCount={100}
  particleSize={16}
>
  Watch me explode!
</TextAnimate>

Slide Up

Characters slide up from below with staggered timing.

<TextAnimate animation="slideUp" stagger={50}>
  Sliding into view
</TextAnimate>

Fade In

Smooth opacity transition with optional stagger.

<TextAnimate animation="fadeIn" duration={1000} stagger={30}>
  Fading in smoothly
</TextAnimate>

Text Morph

Smoothly transitions between different text strings.

<TextAnimate
  animation="morph"
  morphTexts={["Hello", "World", "React"]}
  morphInterval={2000}
>
  Morphing
</TextAnimate>

Scramble

Random characters gradually resolve to actual text.

<TextAnimate animation="scramble" duration={1500}>
  Decode this message
</TextAnimate>

Glitch

Cyberpunk-style glitch reveal with RGB split effect.

<TextAnimate animation="glitch" glitchIntensity={0.7}>
  Cyber Text
</TextAnimate>

Wave

Characters animate in continuous wave pattern.

<TextAnimate animation="wave" waveAmplitude={20}>
  Wavy Text
</TextAnimate>

Blur

Text goes from blurry to sharp with smooth transition.

<TextAnimate animation="blur" duration={1200}>
  Coming into focus
</TextAnimate>

📖 API Reference

Props

PropTypeDefaultDescription
animationAnimationTyperequiredType of animation to use
trigger'auto' | 'hover' | 'click' | 'view' | 'manual''auto'When to trigger the animation
durationnumber1000Animation duration in milliseconds
delaynumber0Delay before animation starts (ms)
staggernumber50Delay between each character/word (ms)
easingEasingType'easeOutCubic'Easing function for animation
classNamestring''Additional CSS classes
styleCSSProperties{}Inline styles
onComplete() => void-Callback when animation finishes
repeatboolean | numberfalseRepeat animation (true = infinite)
reversebooleanfalsePlay animation in reverse

Animation-Specific Props

Particle Animation

PropTypeDefaultDescription
particleCountnumber100Number of particles
particleSizenumber16Size of each particle
particleColorstring(inherited)Color of particles (inherits text color if not specified)

Morph Animation

PropTypeDefaultDescription
morphTextsstring[]-Array of texts to morph between
morphIntervalnumber3000Time between morphs in milliseconds

Wave Animation

PropTypeDefaultDescription
waveAmplitudenumber20Height of the wave motion

Glitch Animation

PropTypeDefaultDescription
glitchIntensitynumber0.5Intensity of glitch effect (0-1)

🎯 Trigger Types

Auto

Animation starts immediately when component mounts.

<TextAnimate animation="fadeIn" trigger="auto">
  Animates immediately
</TextAnimate>

Hover

Animation triggers when user hovers over the element.

<TextAnimate animation="slideUp" trigger="hover">
  Hover over me!
</TextAnimate>

Click

Animation triggers when user clicks the element.

<TextAnimate animation="typewriter" trigger="click">
  Click to animate
</TextAnimate>

View

Animation triggers when element scrolls into view (uses Intersection Observer).

<TextAnimate animation="particle" trigger="view">
  Scroll to see me animate
</TextAnimate>

🎨 Advanced Examples

Chained Animations

<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>

Custom Styling

<TextAnimate
  animation="glitch"
  className="my-custom-class"
  style={{
    fontSize: '3rem',
    fontWeight: 'bold',
    color: '#00ffff',
  }}
>
  Styled glitch text
</TextAnimate>

With Callback

<TextAnimate
  animation="scramble"
  onComplete={() => console.log('Decoded!')}
>
  Secret message
</TextAnimate>

Repeating Animation

<TextAnimate animation="wave" repeat={true}>
  Loops forever
</TextAnimate>

<TextAnimate animation="particle" repeat={3}>
  Animates 3 times
</TextAnimate>

Dynamic Text Morphing

<TextAnimate
  animation="morph"
  morphTexts={[
    "Loading...",
    "Processing...",
    "Almost there...",
    "Done!"
  ]}
  morphInterval={1500}
>
  Loading
</TextAnimate>

🎛️ Easing Functions

Available easing options:

  • linear
  • easeIn, easeOut, easeInOut
  • easeInCubic, easeOutCubic, easeInOutCubic
  • easeInQuad, easeOutQuad, easeInOutQuad
  • easeInQuart, easeOutQuart, easeInOutQuart
<TextAnimate animation="slideUp" easing="easeOutQuart">
  Custom easing
</TextAnimate>

🌐 Browser Support

Works in all modern browsers:

  • Chrome, Edge (latest)
  • Firefox (latest)
  • Safari (latest)

For older browsers, the component will gracefully fallback to displaying static text.

💡 Performance Tips

  • Use CSS animations when possible (fadeIn, slideUp, blur) - they're GPU accelerated
  • Limit particle count for better performance on lower-end devices
  • Use trigger="view" for animations below the fold to delay rendering
  • Avoid too many simultaneous animations on the same page
  • Wave animation runs continuously - use sparingly for best performance

📝 TypeScript

Full 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',
};

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request to https://github.com/hichamcc/react-text-animator

📄 License

MIT © HICHAM

🙏 Acknowledgments

Built with React, TypeScript, and Canvas API. Zero external dependencies!

Made with ❤️ for the React community

Keywords

react

FAQs

Package last updated on 29 Oct 2025

Did you know?

Socket

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.

Install

Related posts