What tailwindlabs/tailwindcss shipped
Written by FoxPlug from the repository's own releases; not affiliated with Tailwind Labs. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/tailwindlabs/tailwindcss; Tailwind Labs did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of November 2, 2026
What shipped
- Version 4.3.5 shipped, speeding up canonicalization for projects with many functional variant values and avoiding crashes and wrong fallbacks for color-mix values without an interpolation method. Release
- Canonicalization no longer sorts all parsed variants when compiling a single candidate, so the first canonicalization with thousands of variant values no longer pays that cost. Pull request #20663
- The color-mix polyfill now skips values without a color interpolation method instead of assuming every value starts with one. Pull request #20666
- The color-mix polyfill no longer crashes on a value with a single color and no interpolation method. Pull request #20658
- The WASM build no longer hangs forever when it loads, caused by a missing initialization export. Pull request #20667
- Incremental source scanning in WASM builds is fixed by handling directory entries in the vendored parallel walker on non-Unix and non-Windows targets. Pull request #20487
- The type declarations in the node package no longer import modules the package does not ship, which broke consumers with skipLibCheck disabled. Pull request #20632
- The turbopack README setup no longer breaks CSS modules by applying a plain CSS loader to module files. Pull request #20660
- The CSS parser now ignores comment markers between top-level rules instead of treating them as the start of a custom property. Pull request #20665
- A declaration without a trailing semicolon at the end of the CSS input is now kept instead of silently dropped. Pull request #20655
Why it matters
This week's release fixes crashes and wrong output in color-mix handling and removes a slowdown that hit projects with very large variant sets. It also fixes several parser, type declaration and WASM loading problems that surfaced for users on recent versions, so upgrading to 4.3.5 resolves failures people could hit in real projects.
Changelog entry
- Release v4.3.5. Release
- Canonicalization: don't sort all parsed variants when compiling a single candidate. Pull request #20663
- Skip the color-mix polyfill without a color interpolation method. Pull request #20666
- Don't crash on a color-mix with a single color and no interpolation method. Pull request #20658
- Fix the WASM build hanging forever when it loads. Pull request #20667
- Fix incremental source scanning in WASM builds. Pull request #20487
- Fix unshipped relative imports in the node package type declarations. Pull request #20632
- Don't break CSS modules in the turbopack README setup. Pull request #20660
- Ignore comment markers between top-level rules in the CSS parser. Pull request #20665
- Keep a declaration without a semicolon at the end of the CSS input. Pull request #20655
- Parse a custom property at the end of the input without a trailing semicolon. Pull request #20653
- Make the integration tests resilient to slow package installs. Pull request #20669
V4.3.5 is out. Big speedup for projects with thousands of functional variant values, no more crashes or wrong fallbacks on color-mix without an interpolation method, fixed WASM loading hang, and parser fixes for trailing declarations and top-level comments.
Version 4.3.5 is released. Canonicalization no longer sorts all parsed variants when compiling a single candidate, which removes a noticeable slowdown in projects with many functional variant values, such as a matchVariant plugin with thousands of values. The color-mix polyfill no longer crashes or produces a wrong fallback color for values without a color interpolation method. The WASM build no longer hangs on load, incremental source scanning works in WASM builds, and the node package type declarations no longer import modules the package does not ship. The CSS parser also keeps declarations without a trailing semicolon at the end of the input and ignores comment markers between top-level rules.
Week of October 12, 2026
What shipped
- Custom variants now handle the vendor-prefixed:-moz-any() and:-webkit-any() selector functions like their:is() counterpart, including nesting replacement inside them. Pull request #20486
- Candidates with an unclosed parenthesis or bracket inside an arbitrary value are now rejected instead of generating invalid CSS. Pull request #20577
- Nested rules that put a combinator after a pseudo-element are now dropped, so utilities used with pseudo-element variants no longer produce selectors that can never match. Pull request #20575
- Arbitrary values now recognize the small, large and dynamic viewport units and font-relative length units that were missing from the length check. Pull request #20516
- The @property fallback detection now tests margin-trim: block instead of the removed inline values, so override utilities are no longer reset in Safari Technology Preview. Pull request #20569
- Relative url()s in stylesheets that Vite inlines before the PostCSS plugin runs are now rewritten correctly in optimized builds. Pull request #20576
- The turbopack and webpack loaders now rebuild when the input CSS changes, so next dev serves the latest CSS without a restart. Pull request #20582
- Canonicalization of utilities that set many properties no longer takes exponentially longer as linked candidates grow. Pull request #20558
- Collapsing utilities now prefers an existing candidate, so a class that.dark can override is not replaced by one that only matches the default theme value. Pull request #20540
- Utilities are no longer collapsed into a utility that uses a different theme variable, even when both variables share the same default value. Pull request #20574
Why it matters
This week's changes are mostly correctness fixes to how candidates are parsed, canonicalized and generated, so classes that previously produced invalid CSS or selectors that never matched now behave properly. Developers using the dev server loaders get fresh CSS on edit, and users on Linux, macOS and Windows get a working Nuxt dev mode integration test. The collapse fixes also reduce the chance that canonicalization changes how a class looks under a theme override like.dark.
Changelog entry
- Handle vendor-prefixed:-moz-any() and:-webkit-any() selector functions in custom variants. Pull request #20486
- Reject arbitrary values with unbalanced parentheses or brackets. Pull request #20577
- Drop nested rules that place a combinator after a pseudo-element. Pull request #20575
- Recognize missing viewport and font-relative length units in arbitrary values. Pull request #20516
- Use margin-trim: block in the @property fallback detection. Pull request #20569
- Rewrite url()s of stylesheets inlined before @tailwindcss/postcss in optimized builds. Pull request #20576
- Rebuild the turbopack and webpack loaders when the input CSS changes. Pull request #20582
- Avoid exponential collapse when a utility sets many properties. Pull request #20558
- Prefer an existing candidate when collapsing utilities. Pull request #20540
- Don't collapse utilities into a utility with other theme variables. Pull request #20574
- Fix canonicalization of theme() alpha with more than 2 decimals. Pull request #20563
- Fix the intersection polyfill in canonicalizeCandidates. Pull request #20562
This week: vendor-prefixed selector functions in custom variants, unbalanced brackets and parens rejected in arbitrary values, more length units recognized, a corrected @property fallback, and faster canonicalization when a utility sets many properties.
This week brought a set of correctness fixes across parsing, canonicalization and the dev server loaders. Custom variants now handle:-moz-any() and:-webkit-any(), arbitrary values with unbalanced brackets or parens are rejected instead of producing invalid CSS, and nested rules that place a combinator after a pseudo-element are dropped. Arbitrary values recognize the previously missing viewport and font-relative length units, and the @property fallback now tests margin-trim: block. Canonicalization no longer scales exponentially for utilities that set many properties, and collapsing prefers an existing candidate and keeps utilities with distinct theme variables apart. The turbopack and webpack loaders rebuild on input CSS changes, and relative url()s from stylesheets inlined before the Pos