tailwindcss-motion is a free, open source design & prototyping project written in TypeScript and released under MIT. It has 3,324 GitHub stars, 38 forks and 38 open issues, and was last pushed 8 months ago. On this registry it ranks #52 of 87 tracked projects in Design & Prototyping, with 5 head-to-head comparisons available.

What is tailwindcss-motion?

tailwindcss-motion is an MIT-licensed Tailwind CSS plugin for adding animation to web projects through utility classes, aimed at developers and designers already working in the Tailwind ecosystem.

What it is

tailwindcss-motion is a Tailwind CSS plugin built at RomboHQ, written in TypeScript and released as the tailwindcss-motion package. It sits alongside other entries in your tailwind.config.js plugins array and exposes animations as ordinary utility classes, so a slide-and-fade effect is written as motion-translate-x-in-25 motion-opacity-in-0, or shortened to a preset such as motion-preset-fade. The project describes itself as "Motion, without commotion" and ships documentation at docs.rombo.co/tailwind.

The concrete problem it addresses is the boilerplate of hand-written keyframes in Tailwind projects. Rather than defining custom @keyframes rules for each animation, the plugin provides utility classes that animate every dimension inline, so animation declarations live in the markup next to layout classes. Its theme keys, such as motionScale and motionTimingFunction, are exposed as typed configuration so custom values extend the default set without losing autocomplete.

Key capabilities

  • Animates individual dimensions inline through utility classes, for example motion-translate-x-in-25 combined with motion-opacity-in-0.
  • Provides ready-made presets such as motion-preset-fade for common effects, covering use cases from fading and looping to emoji animation.
  • Ships TypeScript definitions out of the box, with typed theme customizations including motionScale (for example "200": "200%") and motionTimingFunction (for example "custom": "cubic-bezier(0.4, 0, 0.2, 1)").
  • Installs as a dev dependency and registers either through require('tailwindcss-motion') or the ESM import tailwindcssMotion from "tailwindcss-motion".
  • Works with a companion Chrome extension that animates visually in the browser, loops animations, and saves presets for reuse.
  • Exports animations from that extension as Tailwind classes, pure CSS, or Framer Motion code, alongside a browser-based Animator Builder.
  • Has a community UnoCSS port, unocss-preset-tailwindcss-motion, contributed by @whatnickcodes.

Who uses it and how

  • Front-end developers adding motion to Tailwind pages who would otherwise write custom keyframes, using the utility classes directly in JSX or HTML.
  • Designers and creative marketers prototyping animations visually in the Chrome extension, then handing off output as Tailwind classes, CSS, or Framer Motion code rather than a design file.
  • Teams reproducing published animation patterns, with Play Tailwind examples covering a landing page, a chat dialog, a Low Battery Dynamic Island, Apple color swatches, and a looping Rombo animation.
  • Projects already using Rombo's wider toolkit, which targets animation inside workflows such as Tailwind, Figma, Webflow, and Shopify.
  • UnoCSS users adopting the port instead of the original plugin.

Getting started

Install the package with npm i -D tailwindcss-motion, then add require('tailwindcss-motion') (or the ESM default import) to the plugins array in tailwind.config.js; full documentation lives at docs.rombo.co/tailwind.

How it compares

Among the tools named in its own documentation, tailwindcss-motion occupies the Tailwind configuration layer, whereas Framer Motion appears only as an export target from the Chrome extension rather than a runtime dependency, and the UnoCSS port exists precisely for projects that have adopted UnoCSS instead of Tailwind. It therefore complements rather than replaces animation libraries outside that setup: you adopt it when your styling is already Tailwind, and you reach for something else when it is not.

When to use it — and when not to

The self-hoster's burden here is minimal, since the plugin adds no database, storage, or SMTP of its own, but it does assume an existing Tailwind build pipeline and a tailwind.config.js that accepts plugins — a plain CSS or non-Tailwind project gains nothing from it. Skip it if you need framework-level animation orchestration, or if the visual animator and its exports matter to you, since the Chrome extension and Animator Builder are a separate Rombo product from the plugin itself. Note also that the repository currently carries 38 open issues, which is worth reviewing before committing to it as a long-term dependency.

project readme (upstream, from github) — read inline

✨ tailwindcss-motion ✨

NPM Version NPM Downloads

tailwindcss-motion is a Tailwind CSS Plugin made at RomboHQ. It’s a simple, yet powerful, animation library with a simple syntax.

Motion, without commotion.

⚒️ Installation

1. Install npm package

npm i -D tailwindcss-motion

2. Add into your tailwind.config.js

// tailwind.config.js

export default {
     content: [...],
     theme: {
        extend: {...},
     },
     plugins: [require('tailwindcss-motion')],
};

or, to use ESM:

import tailwindcssMotion from "tailwindcss-motion";

/** @type {import('tailwindcss').Config} */
export default {
     content: [...],
     theme: {
          extend: {},
     },
     plugins: [tailwindcssMotion],
};

📝 TypeScript Support

The plugin includes TypeScript definitions out of the box. Theme customizations and plugin configuration are fully typed:

import type { Config } from "tailwindcss";
import motion from "tailwindcss-motion";

const config: Config = {
  theme: {
    extend: {
      motionScale: {
        "200": "200%",
      },
      motionTimingFunction: {
        custom: "cubic-bezier(0.4, 0, 0.2, 1)",
      },
    },
  },
  plugins: [motion],
};

How does it work?

We provide a simple syntax to animate any element in your Tailwind project. Instead of defining custom keyframes, we provide utility classes to animate every dimension, inline.

For example, for a slide and fade effect — you simply need motion-translate-x-in-25 motion-opacity-in-0 or, you can use one of our presets with motion-preset-fade

Documentation

For full documentation, visit docs.rombo.co/tailwind

🧩 Introducing the Chrome Extension

Take your animations to the next level with the Rombo Chrome Extension!

Create animations visually:

  • Use our intuitive animator directly in your browser.
  • Loop animations
  • Save presets: Keep your animations organized and reusable.
  • Export options: Output animations as Tailwind classes, pure CSS, or Framer Motion code.

extension

Examples

Landing page - https://play.tailwindcss.com/uAuVF8F1vC

example-1

Chat dialog - https://play.tailwindcss.com/gjGqEKswjQ

example-2

Low Battery Dynamic Island - https://play.tailwindcss.com/tvYFbHtNNQ

example-3

Apple Color Swatches - https://play.tailwindcss.com/cvQ3Nk3v8j

example-4

Rombo Loop - https://play.tailwindcss.com/MLdegkb9Wq

example-5

Emoji Animations - https://play.tailwindcss.com/86s55I4wmC

example-6

What's Rombo?

Rombo is an early-stage company, building tools to help companies build beautiful interactive interfaces. We're starting out with a toolkit for engineers, designers and creative marketers to animate natively inside common Workflows — like Tailwind, Figma, Webflow, Shopify & more to come!

More Resources

Frequently asked questions

Is tailwindcss-motion free to use?

tailwindcss-motion is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does tailwindcss-motion do?

tailwindcss-motion is a Tailwind CSS Plugin made at RomboHQ. It’s a simple, yet powerful, animation library with a simple syntax.

What is tailwindcss-motion written in?

tailwindcss-motion is primarily written in TypeScript. Its source is publicly available at https://github.com/romboHQ/tailwindcss-motion, and it has 3,324 GitHub stars.