npm / eslint-plugin-better-tailwindcss
eslint-plugin-better-tailwindcss
What changed in eslint-plugin-better-tailwindcss 3 to 4, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-26.
14 breaking1 deprecations27 new APIs and options1 performance10 behavior and defaults3 tooling34 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initeslint-plugin-better-tailwindcss 485 changes
Breaking changes 14
Strict sorting order is now based on the official sorting order.
Automatic project-root detection to set cwd was removed; monorepo users may need to configure cwd manually.
Rule options now disallow extra properties in valibot schemas.
The rule's options have been renamed to
shorthandandvariable.The separate CommonJS build has been removed.
The
improvedsorting order was renamed tostrictand is no longer the default; strict groups shared base variants, orders fewer variants first, and places arbitrary variants last.The default is now always
recommended; Tailwind CSS v3 users must set it tolegacyto keep it working.Variant grouping is stricter: all variants are ordered correctly rather than grouping only by the first variant.
The function has been removed.
The minimum supported Node.js versions are now v23.0.0, v22.12.0, and v20.19.0 to support
require(esm).Renamed to
enforce-consistent-line-wrapping.Renamed to
no-unknown-classes.Rule regex matchers have been removed.
Renamed to
enforce-consistent-class-order.
Deprecations 1
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.
New APIs and options 27
Adds HTML templating support.
The settings type is exported from the public API, allowing developers to use it in their code.
Adds the
vueConvertToBindingoption.Adds a rule to detect concatenated classes.
Adds an ignore option to the enforce-logical-properties rule.
Adds an ignore option to enforce-canonical-classes.
Adds a tabWidth option to enforce-consistent-line-wrapping.
A matcher for anonymous functions is available.
A new rule enforces consistent variant order.
A new rule enforces logical properties.
A React twc preset is available.
The worker uses the SYNCKIT_TIMEOUT environment variable for timeout configuration.
Tag paths are supported.
Matchers can target specific arguments of callees.
A Solid classList matcher is added.
Experimental CSS linting is added.
Adds support for bound attribute classes in Angular.
Adds a rule for enforcing canonical classes.
Adds control over the sort order of component classes.
Adds control over whether component classes appear at the start or end.
Adds an option to sort component classes.
Adds control over the sort order of unknown classes.
Adds control over whether unknown classes appear at the start or end.
Adds a
loosestrictness option to improve interoperability with prettier.The renamed configs now expose
recommendedand related warning, error, stylistic, correctness, and legacy variants.Adds a settings option to configure messageStyle.
Adds support for the Svelte class directive.
Performance 1
Uses a shared worker to handle async calls.
Behavior and default changes 10
Emits portable declaration imports.
Template literals are linted based on prefixed comments.
The working directory is based on the project root in monorepos.
Uses a non localized alphabetical sorting order.
The plugin now supports callee paths.
The plugin now supports curried calls.
Adds support for custom CSS functions.
Variants in custom component classes are now ignored.
Indexed access keys are ignored.
Recommendations have been updated to enable new rules by default.
Tooling 3
Adds support for type assertions and satisfies.
Adds support for ESLint 10.
Adds support for Oxlint.
Fixes and other changes 29
Handles prototype keys in canonical classes.
Fixes false positives involving nullish coalescing and logical-or fallbacks.
Fixes detection of nested literals.
Reduces false positives in concatenated classes.
Preserves arbitrary variants when dissecting classes.
Fixes self-referencing autofixes with a prefix.
Fixes false positives from the rule.
Normalizes tab width handling for the start position in line wrapping.
Matches anonymous function returns via variable selectors.
Fixes handling of nested function calls.
Fixes self-referencing autofixes.
Fixes strict sorting order.
Adds missing logical classes.
Fixes warning behavior when a Tailwind CSS installation can't be found.
Only sorts variants that are safe to sort.
Default exports are matched.
Warnings for line ending and indentation misconfiguration are reintroduced.
Preserves whitespaces in concatenated strings.
Fixes variable matchers leaking into function expressions.
Unrecommended rules are filtered.
Linting is prevented when no literals are found.
Fixes configuration types.
Fixes removal of unrelated classes by the rule.
Fixes configuration warnings getting lost.
Fixes Angular line wrapping.
Attribute values are no longer matched for bound attribute names.
Normal quotes are preserved whenever possible.
Rule options now correctly override shared settings.
Fixes invalid variant grouping order.
eslint-plugin-better-tailwindcss 35 changes
Fixes and other changes 5
Supports @import layer(components) in the no-unregistered-classes rule.
Shows the config warning only when a config is set and not found.
Allows interpolations in normal Svelte string literals.
Ignores literals in binary expressions.
Fixes conversion of missing flex shrink and grow utilities.