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 203 KB
Measured from the source files the build inlines. The remaining ~3 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.