Transitions.dev
github.com/jakubantalik/transitions.dev- Category
- Developer Tools
- Rank
- No. 2072Tools index
Previous survey · No. 2083 ·
- Type
- TOOL
- Use case
- Coding
- Interfaces
- Web · CLI · Agent Skill / Plugin
- Builder
- Jakubantalik
- GitHub
- 4.6k stars
- Date
About
An interactive collection of reusable CSS transitions for web apps, where each card on the index page demonstrates a different interaction pattern and ships a copy-ready, portable CSS snippet. The repository also packages the collection as a skill for AI coding agents and includes a Refine tool for agents alongside a CLI.
What it does
A showcase site of UI motion patterns, such as a modal opening, a badge sliding in or an input shaking on error, where every demo has a copy button that hands you standalone CSS. Around that library sit three companions: a terminal installer that writes the free recipes into your project, a packaged agent skill so coding assistants apply them for you, and a scanner that grades an existing codebase's motion from 0 to 100 and maps hand-rolled components to the matching recipe. A fourth tool, Refine, injects a timeline panel into your running app and asks your own coding agent to suggest values on the same timing scale.
Why it's ranked here
The free layer is useful on its own terms. Each copied snippet bundles its own variables, scoped class names and a reduced-motion guard, so it drops into any project without the demo's markup. The scanner is deterministic, runs with no account, and the GitHub Action can post a score on every pull request or block merges below a threshold. The weight against it is commercial: the most capable fixing paths sit behind a hosted service and paid plans, and the agent skill itself tells assistants not to fix motion by hand.
What's good
The scanner reads design tokens rather than only literal values, so a transition that looks fine but points at a three-second variable is still flagged as slow. Per-rule penalty caps stop one noisy rule from zeroing the score, and suggestions for components the library covers carry no penalty at all. Fixes are review-first: diffs are shown before anything is written, pull requests go to a new branch and never to main, and the fix modes promise to touch motion only, never component logic. Fixes written with library tokens also carry the raw value as a fallback, so an undefined token cannot silently switch a transition off.
Tradeoffs
Two licenses apply. The tooling is MIT, but the transitions themselves come under a custom license that forbids redistributing them as a competing library, and the branding is all rights reserved. Hosted fixes need a license key and send your affected files to the vendor's service, which calls Claude with its own key; the free tier allows 10 polish fixes a month and 2 a day. Revamp mode and Pro recipes need the Business plan at $59 a month, and running fixes in CI on your own model keys needs Enterprise. Refine is labelled early Beta and spends your own agent credits on every click.
How to use it well
Start with the free path: copy snippets from the site or pull them with the installer, and keep the shared timing variables so the whole app moves on one scale. Add the scanner's GitHub Action with a minimum score as a motion lint that needs no license and makes no AI calls. If you want automated fixes but not the hosted service, connect the MCP server to your own Claude, which exposes the scan contract and recipe sources. Teams should check the plan rules first: any company use of Pro recipes or paid agent features needs a Business seat, even for one designer.
Technical notes+
The scan in agent/lib/scan.mjs weights findings by severity (major 8, warn 4, minor 1, info 2), caps each rule (recipe-available at 0, untransitioned-overlay and recipe-mismatch at 32), and grades the result as smooth (90+), decent, janky or static (below 50). agent/lib/rules.mjs resolves var() chains up to 8 levels deep to catch slow tokens, ignores durations of 20ms or less as reduced-motion overrides, skips matches inside comments or prose-like strings, and flags more than 5 off-scale durations as inconsistent. agent/lib/fix.mjs batches at most 15 files, 100KB per file and 120KB per request, halves the batch on a 413, and wraps tokens in var() fallbacks. agent/action.yml is a composite action whose score gate is a bash comparison.
Observed
- License (tooling)
- MIT for the agent, CLI, Refine, build and scripts directories (LICENSE section 2)
- License (transitions and skills)
- Custom Transitions.dev license: free commercial use, no redistribution as a competing library
- Language
- JavaScript ES modules, Node 18 or newer per package engines
- Packages
- npm: transitions-dev (CLI), transitions-agent (scanner), transitions-refine (Refine panel)
- Interfaces
- CLI, agent skill, GitHub composite Action, hosted MCP server over HTTP
- Agent skill targets
- Claude Code, Cursor, Codex named in README and LICENSE
- Hosted dependency
- Hosted fixes and Pro recipes come from api.transitions.dev and need a license key or sign-in
- Tests
- transitions-agent declares a node --test script; no test files were in the fetched set
- Root package
- Private, single build script that regenerates the skill from the showcase page
Read from README.md, package.json, LICENSE, cli/README.md, cli/package.json, agent/README.md, agent/package.json, agent/lib/rules.mjs, agent/lib/scan.mjs, agent/lib/fix.mjs, agent/skill/SKILL.md, agent/action.yml, refine/README.md.
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.