The entry points
Sizes
Measured from the built output. Gzipped is the number that matters over the wire.
Run
npm run check in the repository to regenerate this table.
A large share of every module is comments and the shared token layer. The
stylesheets ship unminified on purpose — they are meant to be read — and every
bundler and CDN minifies them on the way out.
Two things to be honest about
Modules repeat the token layer. Each focused entry is self-contained so it works on its own, which means importing two of them ships the shared:root
block twice. If you need more than one module, import tailmotion/css instead —
its build inlines each shared file exactly once.
Choosing an entry
I want the whole library
I want the whole library
I only need presence
I only need presence
tailmotion/profiles.css if you also
want motion personalities.I need two or three modules
I need two or three modules
I want the absolute minimum
I want the absolute minimum
base.css first — it pulls in the token layer and the motion profiles,
and provides RTL mirroring and reduced-motion behaviour.Per-animation imports do not include the prebuilt hover: / focus: /
responsive selectors from variants.css. Add them yourself with Tailwind
variants if you need them.What is in the bundle
Measured from the source files the build inlines. The remaining few KB is the banner and the per-file markers the build inserts.
If
variants.css is dead weight for your project — because you generate
variants with Tailwind instead — per-animation imports skip it entirely.
Optional JavaScript
tailmotion/css, and required by no class in
the stylesheet. It exists for the two things CSS genuinely cannot do: counting
from 0 to 4,271, and rotating a list of words.
See the zero-runtime boundary.