# What changed in tailwindcss

> 181 changes in tailwindcss 3 to 4 from its official release notes, upgrade guides and advisories: 7 breaking, 2 deprecations, 31 new APIs and options. Each one cited. Sources checked 2026-10-17. HTML: https://unstale.sh/npm/tailwindcss/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## tailwindcss 4

### Breaking changes

- Selectors combining an attribute selector and element selector without spacing are parsed as two selectors. (4.3.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.3)
- This syntax now generates font-size declarations instead of color declarations. (4.3.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.2)
- Requires --value(…) in functional @utility definitions. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Logical end utilities are canonicalized into corresponding `inset-e-*` utilities, including negative versions. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- Logical start utilities are canonicalized into corresponding `inset-s-*` utilities, including negative versions. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- Placeholder utilities now read their color from `--placeholder-color`. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- The deprecated `overflow-ellipsis` utility is canonicalized into `text-ellipsis`. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)

### Deprecations

- The end-* utilities are deprecated in favor of inset-e-* utilities. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- The start-* utilities are deprecated in favor of inset-s-* utilities. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)

### New APIs and options

- The CLI supports polling watch mode when filesystem events are unreliable or unavailable. (4.3.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.3)
- Adds an option to suppress CLI output. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Adds the @container-size utility. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Adds scrollbar-width utilities for auto, thin, and none values. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Adds scrollbar-gutter utilities. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Adds tab utilities. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Supports --default(…) inside --value(…) and --modifier(…) for functional utility definitions. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Adds zoom utilities. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- The standalone CLI now supports the `NODE_PATH` environment variable. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- Adds utilities for block-size. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for border-block-end. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for border-block-start. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- The default theme now includes mauve, olive, mist, and taupe color palettes. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds a utility for font-feature-settings. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for inline-size. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for inset-block-end. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for inset-block-start. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for inset-inline-end. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for inset-inline-start. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for max-block-size. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for max-inline-size. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for margin-block-end. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for margin-block-start. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for min-block-size. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for min-inline-size. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for padding-block-end. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for padding-block-start. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for scroll-margin-block-end. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for scroll-margin-block-start. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for scroll-padding-block-end. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Adds utilities for scroll-padding-block-start. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)

### Performance

- Scanning JSONL and NDJSON files is faster. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- The Oxide scanner performs fewer file system walks in bigger projects. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)

### Behavior and default changes

- Bare spacing values now work with auto-cols utilities. (4.3.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.2)
- Bare spacing values now work with auto-rows utilities. (4.3.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.2)
- Can now be used with CSS mixins. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- One-valued spacing utilities generate var(--spacing) instead of calc(var(--spacing) * 1). (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Can now be used inside addBase. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Adds parentheses when whitespace removal would hurt readability. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Preserves the original unit in arbitrary values instead of converting to base units. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Canonicalizes arbitrary :has() variants to the has-[…] form. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Allows multiple utility definitions with the same name when their value types differ. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Allows @variant to use stacked variants such as hover:focus. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Allows @variant to use compound variants such as hover and focus. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Border side utility combinations are canonicalized into axis or all-side utilities. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- `.env` and `.env.*` are now excluded from default content-file scanning. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- The upgrade process no longer migrates files ignored by git. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- Axis-specific overflow utilities are canonicalized into the combined overflow utility. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- Axis-specific overscroll utilities are canonicalized into the combined overscroll utility. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- Equivalent arbitrary padding utilities are canonicalized into shorthand utilities. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- Scroll margin side combinations are canonicalized into axis or all-side utilities. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- Scroll padding side combinations are canonicalized into axis or all-side utilities. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- Canonicalization now prefers non-negative tracking utilities. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- Canonicalizes calc(var(--spacing)*…) expressions into the --spacing(…) form. (4.2.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.2)
- Aspect-ratio fractions may now use multiples of .25, such as aspect-8.5/11. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- The .jj directory is now ignored by default during content detection. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Utility names may now contain escape characters, improving formatter support. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Arbitrary utilities are now canonicalized to bare values when possible. (4.1.18) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.18)
- Candidate validation now behaves more like Oxide. (4.1.18) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.18)
- Canonicalization now combines text-* and leading-* classes. (4.1.18) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.18)
- Upgrade processing canonicalizes utilities containing 0 values. (4.1.15) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.15)

### Tooling

- Named opacity modifiers now receive class suggestions from --opacity theme values. (4.3.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.2)
- Class candidates adjacent to Template Toolkit delimiters are now extracted from .tt, .tt2, and .tx files. (4.3.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.2)
- Class candidates are now extracted from Twig addClass calls. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Can be installed in Rspack projects without webpack as a peer dependency. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- The v3-to-v4 migration now uses `config.content`. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- Adds support for Vite 8 in the Tailwind CSS Vite integration. (4.2.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.2)
- The CLI emits a comment when source maps are saved to files. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- A new package runs Tailwind CSS as a webpack plugin. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- CSS parse errors now include the filename and line numbers, making failures easier to locate. (4.1.18) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.18)
- The environment API is now supported in the Vite integration. (4.1.18) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.18)
- The deprecated break-words utility is migrated to wrap-break-word during upgrades. (4.1.15) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.15)

### Fixes and other changes

- Achromatic theme colors no longer shift hue when mixed in polar color spaces such as oklch. (4.3.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.3)
- Arbitrary hex colors now match theme colors case-insensitively during canonicalization. (4.3.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.3)
- CSS nesting is handled even when Lightning CSS is not run, including browser builds and Tailwind Play. (4.3.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.3)
- Fractional opacity modifiers now work with named shadow, text-shadow, drop-shadow, and inset-shadow sizes. (4.3.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.3)
- Preflight no longer overrides Firefox's native focus-visible outline styles for iframes. (4.3.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.3)
- The watcher dependency loads only for CLI watch mode, allowing one-off builds and polling when it cannot be loaded. (4.3.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.3)
- Explicit platform fonts replace generic system fonts so CJK text respects the page's lang attribute on Windows. (4.3.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.3)
- Earlier @source rules for nested files are scanned even when later rules reference parent folders. (4.3.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.3)
- `--spacing(0)` now optimizes to `0px`, preserving its length type inside calc expressions. (4.3.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.3)
- PostCSS rebuilds when a preprocessor changes input CSS without changing the input file on disk. (4.3.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.3)
- The upgrade command no longer rewrites ignored files when run from a subdirectory. (4.3.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.3)
- Vite integration no longer triggers full page reloads for scanned files not yet loaded as modules. (4.3.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.3)
- JS plugins now resolve theme colors correctly when similarly prefixed color variables coexist. (4.3.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.3)
- Class candidates are now extracted from conditional Maud syntax. (4.3.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.2)
- Position try rules no longer trigger unknown at-rule warnings during CSS optimization. (4.3.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.2)
- Source patterns no longer scan unrelated sibling files and folders. (4.3.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.2)
- Watch mode no longer crashes on Windows when @source points to a missing directory. (4.3.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.2)
- Watch mode now rebuilds when the input CSS file changes in an ignored directory. (4.3.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.2)
- Prevents type errors when used with newer PostCSS patch releases. (4.3.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.2)
- Avoids HMR crashes when scanned files or directories are deleted. (4.3.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.2)
- Avoids crashes in Deno v2.8.x when context.parentURL is not a valid URL. (4.3.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.2)
- Variants used in addBase can now reference custom variants defined later. (4.3.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.2)
- Canonicalization avoids suggesting large spacing-scale values for arbitrary lengths. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Canonicalization no longer suggests invalid calc expressions. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Canonicalization no longer folds divisions when the result would require high precision. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Color utilities now work with custom shadow values containing calc expressions. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Upgrade no longer migrates empty class rules to invalid @utility rules. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Transitions between inset-shadow-none and other inset shadows now work correctly. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Removes deprecation warnings on Node 26 and newer. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Correctly negates @container queries, including style queries. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Canonicalization no longer crashes when plugin utilities throw for unsupported values. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Class candidates are now extracted from Twig removeClass calls. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- No longer crashes when scanning files containing invalid UTF-8 bytes. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Source globs with symlinks are preserved. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Later source rules can re-include files excluded by earlier source-not rules. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Explicitly referenced source directories are scanned even when ignored by git. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Source globs ending in **/* preserve dynamic path segments and avoid scanning too many files. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Zero-valued spacing utilities generate 0 instead of calc(var(--spacing) * 0). (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Standalone CLI binaries are ignored when scanning for class candidates. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Watch mode recovers when a tracked dependency is deleted and restored. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Serves ESM type declarations to ESM importers. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Fixes incorrect sourcemap warnings when using the Vite integration. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- No longer crashes when scanning files containing invalid UTF-8 bytes. (4.3.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.1)
- Preserves significant underscore whitespace during canonicalization. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Prevents legacy end utilities without values from generating CSS. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Resolves relative @import paths from the correct directory with @tailwindcss/vite. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Prevents the upgrade process from migrating inline style attributes. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Preserves required whitespace around operators in negated arbitrary values. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Resolves package JavaScript entries instead of browser CSS entries with @tailwindcss/vite. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Resolves relative @plugin paths from the correct directory with @tailwindcss/vite. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Exports the missing PluginWithConfig type from tailwindcss/plugin for plugin config type inference. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Prevents legacy start utilities without values from generating CSS. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Resolves imports relative to base when result.opts.from is not provided. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Ensures CSS files containing @variant are processed by @tailwindcss/vite. (4.3.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0)
- Imports in @import and @plugin now resolve correctly when using Vite aliases in @tailwindcss/vite. (4.2.4) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.4)
- Invalid characters exceeding the valid Unicode code point range no longer cause a crash. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- Negative arbitrary values move the minus sign inside the arbitrary value. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- Negative arbitrary margin values move the minus sign outside the arbitrary value. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- Stopping the upgrade process no longer empties files while the process is running. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- Imports with query parameters are now treated as unique resources. (4.2.3) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.3)
- Prevents crashes when candidates contain prototype properties such as row-constructor. (4.2.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.2)
- Prevents crashes when canonicalizing utilities containing @property at-rules. (4.2.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.2)
- Improves canonicalization for bare values exceeding default spacing scale suggestions. (4.2.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.2)
- Prevents canonicalization from returning an empty list instead of the expected utility. (4.2.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.2)
- Skips full reloads for server-only modules scanned by client CSS with @tailwindcss/vite. (4.2.2) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.2)
- Trailing dashes in functional utility names are allowed for backwards compatibility. (4.2.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.1)
- Classes containing periods within curly braces in MDX files are now detected correctly. (4.2.1) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.1)
- Astro v5 import aliases now work without crashing with the Vite integration. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Utility detection now handles names containing capital letters followed by numbers. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Prevents color-mix values from receiving a double @supports wrapper. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Class extraction now works correctly for Rails strict locals. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- The @source inline() argument may now contain surrounding whitespace. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Changes to external files listed via @source now trigger a full page reload with the Vite integration. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Utility name validation now matches Oxide scanner rules. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Using @variant inside @custom-variant no longer causes an infinite loop. (4.2.0) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0)
- Arbitrary property utilities with a top-level ! in the value are now skipped correctly. (4.1.18) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.18)
- The CLI now handles duplicate command-line arguments correctly. (4.1.18) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.18)
- Color-mix fallback rules are no longer emitted inside keyframes. (4.1.18) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.18)
- Backwards compatibility for the content theme key in JavaScript configs is improved. (4.1.18) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.18)
- The CLI no longer hangs when its output is /dev/stdout. (4.1.18) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.18)
- The upgrade process now handles future and experimental configuration keys. (4.1.18) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.18)
- JavaScript configs now handle special defaults such as ringColor.DEFAULT correctly. (4.1.18) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.18)
- Comments in Ruby files are skipped when checking for class names. (4.1.18) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.18)
- Validation of source(…) now happens relative to the file containing it. (4.1.18) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.18)
- Theme keys from JavaScript configs and plugins now preserve their original case. (4.1.18) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.18)
- The CLI now writes source maps correctly when running in watch mode. (4.1.18) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.18)
- Legacy JavaScript APIs now substitute @variant correctly. (4.1.17) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.17)
- Prevents an occasional crash on Windows when Tailwind CSS is loaded into a worker thread. (4.1.17) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.17)
- Canonicalization of arbitrary variants with attribute selectors is fixed. (4.1.16) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.16)
- Canonicalization is improved for & > :pseudo and & :pseudo arbitrary variants. (4.1.16) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.16)
- Candidates with an empty data type are discarded. (4.1.16) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.16)
- Invalid colors caused by nested & are fixed. (4.1.16) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.16)
- At-rules parse correctly when they contain a tab character. (4.1.15) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.15)
- Safari devtools rendering is fixed when Tailwind uses color-mix fallbacks. (4.1.15) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.15)
- Lightning CSS warnings for :deep, :slotted, and :global are suppressed. (4.1.15) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.15)
- Important utilities no longer affect other utilities. (4.1.15) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.15)
- Named groups now work with not-*, has-*, and in-* variants. (4.1.15) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.15)
- The theme(…) function no longer indexes into strings. (4.1.15) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.15)
- Theme keys are resolved correctly when one key name starts with another in JS configs and plugins. (4.1.15) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.15)

## tailwindcss 3

### Fixes and other changes

- Fixed sibling-*() functions used inside calc(…) so they no longer break. (3.4.19) — [release notes](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.19)
