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%
Apache 2.0

Pezzo

AI Development · Monitoring

3,275

Open-source LLMOps platform for prompt management, AI observability, intelligent caching, and real-time cost tracking across LLM providers.

View details
61
Repo Health
75
Technical
66
Dependency
Built with
TypeScript 96%
Updated 1 months ago
TypeScript
51%
ZLIB

Portainer

Devops

38,590

A lightweight, open-source web UI that puts Docker, Kubernetes, and Podman management within reach of any team—no CLI expertise required.

View details
92
Repo Health
79
Technical
65
Dependency
Built with
TypeScript 51%
Go 38%
Updated 1 weeks ago
TypeScript
95%
AGPL 3.0

Rallly

Scheduling

5,277

Self-hostable group scheduling polls that eliminate back-and-forth emails and find the best meeting time for everyone.

View details
91
Repo Health
75
Technical
66
Dependency
Built with
TypeScript 95%
Updated 6 days ago
TypeScript
83%
AGPL 3.0

Recordly

Design Tools · Developer Tools · Productivity

31,588

Free, open-source screen recorder and editor for macOS, Windows, and Linux that auto-adds zooms, cursor polish, webcam overlays, and styled frames to your screen captures without any motion-design skills.

View details
83
Repo Health
82
Technical
70
Dependency
Built with
TypeScript 83%
Updated 1 weeks ago
Rust
72%
Apache 2.0

Rivet

AI Agents · Developer Tools

6,195

Stateful actors as a primitive for AI agents, real-time collaboration, and durable execution — with in-memory state, WebSockets, queues, and scheduling built in.

View details
86
Repo Health
81
Technical
64
Dependency
Built with
Rust 72%
TypeScript 25%
Updated 1 weeks ago
TypeScript
97%
AGPL 3.0

Rybbit

Analytics

13,069

Open-source, privacy-friendly web and product analytics with cookieless tracking, session replays, funnels, and real-time dashboards — a self-hostable alternative to Google Analytics.

View details
86
Repo Health
85
Technical
68
Dependency
Built with
TypeScript 97%
Updated 6 days ago
Python
78%
AGPL 3.0

Skyvern

AI Agents · Automation

23,088

Skyvern (YC S2023) automates browser-based workflows by pairing LLMs with computer vision, letting agents click, fill, and extract data on sites they've never seen, without brittle XPath selectors that break on every layout change.

View details
89
Repo Health
82
Technical
70
Dependency
Built with
Python 78%
TypeScript 20%
Updated 5 days ago
TypeScript
97%
AGPL 3.0

Snapify

Collaboration · Productivity

1,018

Open-source, self-hostable screen recording and video sharing built as a Loom alternative — no accounts required to watch, full S3-backed storage for your data.

View details
38
Repo Health
68
Technical
70
Dependency
Built with
TypeScript 97%
Updated 1 years ago
PHP
46%
AGPL 3.0

solidtime

Invoicing Finance · Productivity

8,933

Modern open-source time tracker for freelancers and agencies with invoicing, multi-org support, and Toggl/Clockify migration built in.

View details
84
Repo Health
81
Technical
70
Dependency
Built with
PHP 46%
TypeScript 29%
Vue 22%
Updated 6 days 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