Skip to content

Rule · Lint

utility-[--var] is Tailwind v3 syntax; v4 needs utility-(--var)

lint/tw-v3-arbitrary-varerrorvoid lintupdated

Why it matters

In v4 square brackets are literal arbitrary values, so duration-[--duration-fast] emits transition-duration: --duration-fast — invalid CSS that the browser drops. The transition, color or size silently falls back to the default.

How to fix it

Replace [--name] with (--name) (parentheses are v4's CSS-variable shorthand), or write [var(--name)].

Example

tsx
// before (v3)
<div className="duration-[--duration-fast] bg-[--brand]" />
// after (v4)
<div className="duration-(--duration-fast) bg-(--brand)" />

References

void lint reports 67 rules in this category. Static source checks with no browser: Tailwind v4 silent failures, Next.js 16 API traps, React render-body bugs, accessibility markup, SEO files and motion hygiene.