Tailwind CSS 0.1.0 5,202 , a PostCSS 238,379 plugin, was published on November 1, 2017. Each major version since then changed how the CSS is produced as much as which utilities exist.
| Version | Released | What changed |
|---|---|---|
| 1.0 | May 13, 2019 | Stable API, theme config, numeric color scale |
| 2.0 | Nov 18, 2020 | Dark mode, 22-color palette, 2xl, rings; IE11 dropped |
| 2.1 | Apr 5, 2021 | Just-in-Time engine as an opt-in mode |
| 3.0 | Dec 9, 2021 | JIT always on, arbitrary properties, Play CDN |
| 3.4 | Dec 19, 2023 | :has(), size-*, dynamic viewport units; now v3 LTS |
| 4.0 | Jan 22, 2025 | Oxide engine, CSS-first @theme configuration |
| 4.1 | Apr 3, 2025 | Text shadows, masks, @source inline() |
| 4.2 | Feb 18, 2026 | Four new palettes, logical-property utilities, webpack 3,824 plugin |
| 4.3 | May 8, 2026 | Scrollbar, zoom-* and tab-* utilities; current release |
Three generation strategies
Generate everything, then purge (v0.1-v2.0). The build emitted every utility for every color, breakpoint and state, about 3.6 MB of CSS by v2, and PurgeCSS 955,901 (built in since v1.4) deleted unused rules for production. Builds were slow, and development pages loaded huge files.
Just in time (v2.1-v3.4). The JIT engine read your templates first and generated only the classes it found, with 3 ms incremental rebuilds. Since nothing was pregenerated, arbitrary values such as top-[117px] and stacked variants like md:dark:hover: became possible.
CSS-first engine (v4). A rewrite: configuration moved from tailwind.config.js into CSS (@import "tailwindcss" plus @theme), theme values became custom properties, output uses @layer, @property, color-mix() and OKLCH, and the hot paths moved to Rust (Under the Hood). The cost is browser support: v4 targets Chrome 111 1 , Safari 16.4 10 and Firefox 128 555 (Browser Compatibility), which is why 3.4 lives on under the v3-lts npm 2,036 tag (3.4.19 shipped in December 2025).