tailwindcss-animate

Tailwind CSS plugin for enter and exit animations using utility classes

Library
npm
v1.0.7
3,014 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
34 /100 Needs Attention
Development Activity 0
Maintenance 0
Community 40
Maturity 56
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
75 /100 Good
Architecture 80
Code Quality 55
Innovation 80
Learning Curve 85

tailwindcss-animate is a Tailwind CSS plugin that adds animate-in and animate-out utility classes for building enter and exit animations directly in markup. It layers fade, zoom, spin, and directional slide effects on top of two shared CSS @keyframes, and exposes duration, delay, easing, direction, fill-mode, and repeat controls that extend Tailwind’s existing transition theme rather than introducing a parallel one.

The plugin ships as pure CSS with no client-side JavaScript, and has become the de facto animation layer for Radix UI and shadcn/ui component libraries, where it drives open/close transitions for dialogs, dropdowns, popovers, and toasts via data-state attributes.

What You Get

  • animate-in / animate-out utility classes built on a shared pair of enter/exit CSS @keyframes
  • Composable modifiers - fade-in/out, zoom-in/out, spin-in/out, and slide-in-from-/slide-out-to- directional variants that stack additively
  • Full animation-timing control - duration-, delay-, ease-, direction-, fill-mode-, and repeat- utilities mapped onto Tailwind’s existing transition theme
  • running/paused play-state utilities, plus inherited motion-safe/motion-reduce variant support from Tailwind core

Common Use Cases

  • Animating Radix UI or shadcn/ui dialogs, dropdowns, and popovers on open/close
  • Toast and notification enter/exit sequencing without custom CSS or a JS animation library
  • Adding tasteful fade/zoom/slide micro-interactions to any Tailwind project without leaving utility-class syntax
  • Animating conditionally-rendered React/Vue components in and out via data-state attributes

Under The Hood

Architecture - Single-file Tailwind plugin (index.js, ~188 lines) built via the tailwindcss/plugin factory. It registers a handler that calls addUtilities/matchUtilities against the Tailwind theme function to inject two @keyframes (enter/exit) plus a matrix of utility classes (animate-in/animate-out, fade-in/out, zoom-in/out, spin-in/out, slide-in-from-/slide-out-to-, duration-, delay-, ease-, fill-mode-, direction-, repeat-, plus running/paused). All animation state is threaded through CSS custom properties (—tw-enter-opacity, —tw-enter-scale, —tw-enter-rotate, —tw-enter-translate-x/y, mirrored for exit) so classes compose additively - animate-in fade-in zoom-in-95 all write into the same shared keyframes via translate3d()/scale3d()/rotate(), rather than each utility owning its own animation. The plugin’s second argument extends Tailwind’s theme config with derived defaults (animationDuration layering onto transitionDuration, etc.), so it ships zero runtime JS - output is pure generated CSS at build time.

Tech Stack - Plain JavaScript (CommonJS, require/module.exports), no TypeScript source - only a 2-line ambient index.d.ts declaring an opaque plugin type with no typed API surface. Single peer dependency: tailwindcss >=3.0.0. Dev tooling is minimal: Prettier (tabs, no semicolons) enforced via a husky + lint-staged pre-commit hook and a CI format:check job; there is no bundler and no build step, index.js ships as-is.

Code Quality - No test suite of any kind - no test script, no test files, no assertions; the only CI check (.github/workflows/checks.yml) runs Prettier formatting, not correctness testing. Error handling is not really applicable, since this is pure declarative config rather than runtime logic. Naming is consistent and CSS-idiomatic (fade-in, zoom-out, slide-in-from-top), and a private filterDefault() helper strips DEFAULT keys from theme objects before building matchUtilities value maps, showing some care to avoid emitting a bare duration utility. The absence of a formal test suite is a real gap, though the surface area is small enough to somewhat mitigate the risk.

API Design - Integration friction is extremely low: a single require(“tailwindcss-animate”) in the plugins array of tailwind.config.js gives consumers a full set of Tailwind-native utility classes with no new syntax to learn (animate-in fade-in zoom-in-95 duration-300). The docs/ directory documents every utility group as its own markdown file, and the README front-loads a compact usage sample. Weaknesses: index.d.ts provides essentially no type information, so there’s no IntelliSense over the utility class names themselves, and a few naming pairs are slightly inconsistent (slide-in-from-top vs slide-out-to-top uses different prepositions for symmetric behavior).

Used by 100 apps in this directory

TypeScript
96%
Other

LLM Gateway

AI Development · Devops

1,663

One API endpoint for 25+ LLM providers — route, track costs, enforce compliance, and switch models without changing your code.

View details
86
Repo Health
80
Technical
68
Dependency
Built with
TypeScript 96%
Updated 1 weeks ago
Clojure
70%
AGPL 3.0

Logseq

Knowledge Management · Note Taking

45,069

A privacy-first, open-source knowledge graph platform combining Markdown, Org-mode, bidirectional linking, and local-first storage for building your second brain.

View details
92
Repo Health
82
Technical
68
Dependency
Built with
Clojure 70%
OCaml 12%
Updated 1 weeks ago
TypeScript
44%
Other

Magic

AI Agents · Automation · Low Code Platforms

5,043

Magic is an enterprise-grade open-source AI agent platform combining a generalist AI agent, workflow engine, IM, and collaborative office system for running an AI-powered digital workforce.

View details
70
Repo Health
79
Technical
65
Dependency
Built with
TypeScript 44%
PHP 32%
Updated 1 months ago
TypeScript
99%
AGPL 3.0

Manage

Collaboration · Project Management

71

Self-hosted, open-source project management with tasks, calendars, docs, and real-time team collaboration.

View details
39
Repo Health
57
Technical
71
Dependency
Built with
TypeScript 99%
Updated 2 months ago
Python
62%
Apache 2.0

marimo

Data Engineering · Developer Tools

22,918

A reactive Python notebook that eliminates hidden state, runs reproducibly, and deploys as a web app or script — stored as pure Python, built for the AI era.

View details
89
Repo Health
91
Technical
65
Dependency
Built with
Python 62%
TypeScript 37%
Updated 1 weeks ago
TypeScript
99%
Apache 2.0

Mastra Code

AI Code Assistants

28,378

"A coding agent that never compacts" — a terminal-based AI coding agent built on the Mastra framework, with Observational Memory instead of context compaction, multi-model support, and OAuth login for Claude Max or ChatGPT Plus.

View details
90
Repo Health
73
Technical
65
Dependency
Built with
TypeScript 99%
Updated 1 weeks ago
TypeScript
88%
MIT

medusa

Ecommerce

36,494

The most flexible open-source commerce platform — build B2C, B2B, and marketplace applications with modular, composable commerce primitives.

View details
93
Repo Health
87
Technical
63
Dependency
Built with
TypeScript 88%
JavaScript 12%
Updated 2 weeks ago
Rust
48%
MIT

Meetily

AI Assistants · Productivity

31,171

Privacy-first AI meeting assistant that transcribes and summarizes your meetings entirely on your local machine — no cloud, no data leakage.

View details
85
Repo Health
72
Technical
67
Dependency
Built with
Rust 48%
TypeScript 29%
Updated 3 weeks ago
TypeScript
95%
MIT

melty

AI Code Assistants · Code Editors · Developer Tools

5,444

The AI code editor where every chat message is a git commit you can revert, branch, or squash

View details
35
Repo Health
75
Technical
67
Dependency
Built with
TypeScript 95%
Updated 1 years ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers