# What changed in eslint-plugin-better-tailwindcss

> 90 changes in eslint-plugin-better-tailwindcss 3 to 4 from its official release notes, upgrade guides and advisories: 14 breaking, 1 deprecations, 27 new APIs and options. Each one cited. Sources checked 2026-10-26. HTML: https://unstale.sh/npm/eslint-plugin-better-tailwindcss/

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

## eslint-plugin-better-tailwindcss 4

### Breaking changes

- Strict sorting order is now based on the official sorting order. (4.7.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.7.0)
- Automatic project-root detection to set cwd was removed; monorepo users may need to configure cwd manually. (4.4.1) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.4.1)
- Rule options now disallow extra properties in valibot schemas. (4.0.1) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.1)
- The rule's options have been renamed to `shorthand` and `variable`. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- The separate CommonJS build has been removed. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- The `improved` sorting order was renamed to `strict` and is no longer the default; strict groups shared base variants, orders fewer variants first, and places arbitrary variants last. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- The default is now always `recommended`; Tailwind CSS v3 users must set it to `legacy` to keep it working. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Variant grouping is stricter: all variants are ordered correctly rather than grouping only by the first variant. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- The function has been removed. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- The minimum supported Node.js versions are now v23.0.0, v22.12.0, and v20.19.0 to support `require(esm)`. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Renamed to `enforce-consistent-line-wrapping`. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Renamed to `no-unknown-classes`. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Rule regex matchers have been removed. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Renamed to `enforce-consistent-class-order`. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)

### Deprecations

- Matcher config changes from a nested tuple structure to an array of objects; the old structure remains supported for now but will be removed in the next major version. (4.3.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.3.0)

### New APIs and options

- Adds HTML templating support. (4.10.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.10.0)
- The settings type is exported from the public API, allowing developers to use it in their code. (4.9.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.9.0)
- Adds the `vueConvertToBinding` option. (4.7.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.7.0)
- Adds a rule to detect concatenated classes. (4.7.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.7.0)
- Adds an ignore option to the enforce-logical-properties rule. (4.6.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.6.0)
- Adds an ignore option to enforce-canonical-classes. (4.5.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.5.0)
- Adds a tabWidth option to enforce-consistent-line-wrapping. (4.5.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.5.0)
- A matcher for anonymous functions is available. (4.4.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.4.0)
- A new rule enforces consistent variant order. (4.4.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.4.0)
- A new rule enforces logical properties. (4.4.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.4.0)
- A React twc preset is available. (4.4.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.4.0)
- The worker uses the SYNCKIT_TIMEOUT environment variable for timeout configuration. (4.4.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.4.0)
- Tag paths are supported. (4.4.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.4.0)
- Matchers can target specific arguments of callees. (4.4.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.4.0)
- A Solid classList matcher is added. (4.1.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.1.0)
- Experimental CSS linting is added. (4.1.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.1.0)
- Adds support for bound attribute classes in Angular. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Adds a rule for enforcing canonical classes. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Adds control over the sort order of component classes. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Adds control over whether component classes appear at the start or end. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Adds an option to sort component classes. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Adds control over the sort order of unknown classes. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Adds control over whether unknown classes appear at the start or end. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Adds a `loose` strictness option to improve interoperability with prettier. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- The renamed configs now expose `recommended` and related warning, error, stylistic, correctness, and legacy variants. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Adds a settings option to configure messageStyle. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Adds support for the Svelte class directive. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)

### Performance

- Uses a shared worker to handle async calls. (4.2.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.2.0)

### Behavior and default changes

- Emits portable declaration imports. (4.9.1) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.9.1)
- Template literals are linted based on prefixed comments. (4.4.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.4.0)
- The working directory is based on the project root in monorepos. (4.4.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.4.0)
- Uses a non localized alphabetical sorting order. (4.3.2) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.3.2)
- The plugin now supports callee paths. (4.3.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.3.0)
- The plugin now supports curried calls. (4.3.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.3.0)
- Adds support for custom CSS functions. (4.0.2) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.2)
- Variants in custom component classes are now ignored. (3.8.0, 4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0), [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v3.8.0)
- Indexed access keys are ignored. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Recommendations have been updated to enable new rules by default. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)

### Tooling

- Adds support for type assertions and satisfies. (4.9.1) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.9.1)
- Adds support for ESLint 10. (4.2.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.2.0)
- Adds support for Oxlint. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)

### Fixes and other changes

- Handles prototype keys in canonical classes. (4.10.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.10.0)
- Fixes false positives involving nullish coalescing and logical-or fallbacks. (4.9.1) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.9.1)
- Fixes detection of nested literals. (4.9.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.9.0)
- Reduces false positives in concatenated classes. (4.9.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.9.0)
- Preserves arbitrary variants when dissecting classes. (4.8.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.8.0)
- Fixes self-referencing autofixes with a prefix. (4.8.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.8.0)
- Fixes false positives from the rule. (4.8.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.8.0)
- Normalizes tab width handling for the start position in line wrapping. (4.8.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.8.0)
- Matches anonymous function returns via variable selectors. (4.8.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.8.0)
- Fixes handling of nested function calls. (4.6.1) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.6.1)
- Fixes self-referencing autofixes. (4.6.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.6.0)
- Fixes strict sorting order. (4.6.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.6.0)
- Adds missing logical classes. (4.5.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.5.0)
- Fixes warning behavior when a Tailwind CSS installation can't be found. (4.5.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.5.0)
- Only sorts variants that are safe to sort. (4.5.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.5.0)
- Default exports are matched. (4.4.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.4.0)
- Warnings for line ending and indentation misconfiguration are reintroduced. (4.4.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.4.0)
- Preserves whitespaces in concatenated strings. (4.3.2) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.3.2)
- Fixes variable matchers leaking into function expressions. (4.3.1) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.3.1)
- Unrecommended rules are filtered. (4.1.1) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.1.1)
- Linting is prevented when no literals are found. (4.1.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.1.0)
- Fixes configuration types. (4.0.2) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.2)
- Fixes removal of unrelated classes by the rule. (4.0.2) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.2)
- Fixes configuration warnings getting lost. (4.0.1) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.1)
- Fixes Angular line wrapping. (3.8.0, 4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0), [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v3.8.0)
- Attribute values are no longer matched for bound attribute names. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Normal quotes are preserved whenever possible. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Rule options now correctly override shared settings. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)
- Fixes invalid variant grouping order. (4.0.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v4.0.0)

## eslint-plugin-better-tailwindcss 3

### Fixes and other changes

- Supports @import layer(components) in the no-unregistered-classes rule. (3.8.0) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v3.8.0)
- Shows the config warning only when a config is set and not found. (3.7.11) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v3.7.11)
- Allows interpolations in normal Svelte string literals. (3.7.11) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v3.7.11)
- Ignores literals in binary expressions. (3.7.11) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v3.7.11)
- Fixes conversion of missing flex shrink and grow utilities. (3.7.11) — [release notes](https://github.com/schoero/eslint-plugin-better-tailwindcss/releases/tag/v3.7.11)
