react-transition-group

react-transition-group: React Component Animation Toolkit

Library
npm
v4.4.5
10,211 stars
BSD 3-Clause License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
47 /100 Fair
Development Activity 0
Maintenance 20
Community 68
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
71 /100 Good
Architecture 76
Code Quality 74
Innovation 70
Learning Curve 62

react-transition-group is a set of low-level React components for managing a component’s presence over time — specifically its mounting, updating, and unmounting lifecycle — so that CSS or JS animations can be tied to those state transitions. It grew out of the original React addons-transition-group API and was rewritten from the ground up in v2+ with a non-backwards-compatible, more flexible API.

Rather than baking in an opinionated animation engine, the library exposes state (entering, entered, exiting, exited) and lifecycle hooks that developers wire up to their own CSS classes, inline styles, or third-party animation libraries. TransitionGroup manages lists of transitioning children, CSSTransition layers on CSS class toggling, and SwitchTransition/ReplaceTransition handle transitioning between two mutually exclusive elements.

What You Get

  • Transition - the base component exposing raw lifecycle state (entering/entered/exiting/exited) and callback hooks (onEnter, onEntering, onEntered, onExit, etc.)
  • CSSTransition - layers CSS class name toggling on top of Transition for declarative, stylesheet-driven animations
  • TransitionGroup - manages a dynamic set of Transition children (e.g. animating list items in and out) without unmounting them abruptly
  • SwitchTransition and ReplaceTransition - coordinate transitioning between two mutually exclusive elements (e.g. crossfading between two states)
  • Framework-agnostic animation hook-up: works with plain CSS transitions, CSS keyframes, or JS animation libraries like GSAP or react-spring

Common Use Cases

  • Fading or sliding a modal, tooltip, or dropdown in and out as it mounts and unmounts
  • Animating list items entering or leaving (e.g. a to-do list, notification stack, or search results list) via TransitionGroup
  • Crossfading between two views or tabs using SwitchTransition instead of instantly swapping content
  • Coordinating route-transition animations in a client-rendered app when a page component mounts/unmounts

Under The Hood

Architecture The library centers on src/Transition.js (622 lines), a class component implementing a small state machine (unmounted → exited → entering → entered → exiting) driven by componentDidMount/componentDidUpdate and timeouts; CSSTransition.js (378 lines) wraps it to toggle CSS class names at each state change, TransitionGroup.js (171 lines) tracks a map of currently-mounted/exiting children keyed by identity so leaving items animate before removal, and SwitchTransition.js (222 lines) composes two Transition instances to coordinate an exit-then-enter or simultaneous cross-fade sequence. Tech Stack Plain JavaScript (no TypeScript in the source; types are published separately via DefinitelyTyped), built with Babel to dual CJS/ESM output plus a Rollup UMD bundle, with dom-helpers and prop-types as its only non-React runtime dependencies and react/react-dom as peer dependencies (>=16.6.0). Code Quality Test coverage is strong for a UI library of this age: dedicated suites exist per component (Transition-test.js, CSSTransition-test.js, TransitionGroup-test.js, SwitchTransition-test.js, ChildMapping-test.js, plus an SSR-test.js for server-rendering behavior) using Jest and Testing Library, and CI gates on both ESLint and the full test suite before release via semantic-release. Prop validation relies on prop-types rather than static types, which is dated relative to newer React libraries but appropriate for the codebase’s age. API Design The API trades some initial-learning friction (developers must understand the entering/entered/exiting/exited state model and wire up their own CSS classes or callbacks) for maximum flexibility — there’s no bundled animation engine to fight against, and the same primitives compose cleanly whether the underlying animation is pure CSS, CSS-in-JS, or an external JS animation library.

Used by 20 apps in this directory

TypeScript
85%
MIT

LibreChat

AI Assistants · Developer Tools

46,236

Unite every major AI model in one self-hosted chat platform with agents, code execution, MCP tools, and enterprise authentication.

View details
93
Repo Health
81
Technical
62
Dependency
Built with
TypeScript 85%
JavaScript 14%
Updated today
Clojure
71%
AGPL 3.0

Logseq

Knowledge Management · Note Taking

45,349

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
65
Dependency
Built with
Clojure 71%
OCaml 12%
Updated yesterday
TypeScript
51%
Other

Mattermost

Collaboration · Devops · Team Chat

39,418

Open core, self-hosted team collaboration with chat, AI agents, voice calling, and deep DevOps integrations — all under your control.

View details
96
Repo Health
87
Technical
65
Dependency
Built with
TypeScript 51%
Go 40%
Updated today
TypeScript
87%
MIT

medusa

Ecommerce

36,897

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

View details
94
Repo Health
87
Technical
63
Dependency
Built with
TypeScript 87%
JavaScript 12%
Updated yesterday
Clojure
57%
Other

Metabase

Analytics

49,827

The open-source BI platform that lets anyone ask questions and build dashboards without writing SQL — with an embedded analytics SDK and AI-powered query assistant included.

View details
95
Repo Health
84
Technical
62
Dependency
Built with
Clojure 57%
TypeScript 38%
Updated today
Elixir
80%
AGPL 3.0

Plausible Analytics

Analytics

29,631

Open-source, cookie-free web analytics that respects visitor privacy and replaces Google Analytics.

View details
88
Repo Health
84
Technical
71
Dependency
Built with
Elixir 80%
TypeScript 15%
Updated yesterday
TypeScript
91%
MIT

SerpBear

Analytics · Marketing

2,128

Self-hosted keyword rank tracker with Google Search Console integration, multi-provider SERP scraping, and a built-in REST API.

View details
48
Repo Health
67
Technical
68
Dependency
Built with
TypeScript 91%
Updated 5 months ago
TypeScript
72%
Apache 2.0

Supabase

Authentication · Databases · Developer Tools

113,827

The open-source Postgres development platform that replaces Firebase with authentication, real-time APIs, edge functions, storage, and vector embeddings — all built on PostgreSQL.

View details
90
Repo Health
91
Technical
62
Dependency
Built with
TypeScript 72%
MDX 26%
Updated today
Go
75%
AGPL 3.0

Teleport

Authentication · Security

21,016

Zero-trust infrastructure access platform that replaces credentials and VPNs with short-lived certificates, SSO, and identity-aware proxies for SSH, Kubernetes, databases, RDP, and AI agents.

View details
94
Repo Health
81
Technical
68
Dependency
Built with
Go 75%
TypeScript 16%
Updated 4 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