Skip to content

Tailwind CSS v4 - Quick Reference Summary โ€‹

Generated: 2025-12-08 Full Analysis: See v4 Features Analysis


Critical v4 Changes for Obfuscation โ€‹

1. New Variants (Must Support) โ€‹

VariantPatternExample
Container queries@sm:, @lg:, @[500px]:@lg:flex
Container min/max@min-[400px]:, @max-[800px]:@min-[400px]:grid
Named containers@lg/sidebar:@lg/sidebar:block
Negationnot-hover:, not-first:not-hover:opacity-75
Descendant (in)in-hover:, in-data-[state=open]:in-hover:text-blue-500
Nth-childnth-1:, nth-[2n+1]:nth-2:font-bold
Wildcard*:, **:*:first:pt-0
Inertinert:inert:opacity-50
Openopen:open:bg-blue-500
Startingstarting:starting:opacity-0

2. New Utilities (Must Support) โ€‹

UtilityPatternExample
Inset shadowsinset-shadow-*inset-shadow-sm
Inset ringsinset-ring-*inset-ring-2
Field sizingfield-sizing-*field-sizing-content
Color schemecolor-scheme-*color-scheme-dark
Font stretchfont-stretch-*font-stretch-condensed
3D rotationsrotate-x-*, rotate-y-*, rotate-z-*rotate-x-45
3D transformsscale-z-*, translate-z-*translate-z-4
Perspectiveperspective-*perspective-1000
Radial gradientsbg-radial-*bg-radial-[at_25%_25%]
Conic gradientsbg-conic-*bg-conic-[from_45deg]

3. Renamed Utilities (Support Both) โ€‹

v3v4Type
shadow-smshadow-xsShadow
shadowshadow-smShadow
rounded-smrounded-xsRadius
roundedrounded-smRadius
blur-smblur-xsBlur
blurblur-smBlur
outline-noneoutline-hiddenOutline
flex-shrink-*shrink-*Flex
flex-grow-*grow-*Flex
overflow-ellipsistext-ellipsisText
decoration-slicebox-decoration-sliceDecoration
bg-gradient-*bg-linear-*Gradient

4. Removed Utilities (Only v4 Syntax) โ€‹

Removed v3v4 Replacement
bg-opacity-*bg-black/50
text-opacity-*text-white/75
border-opacity-*border-gray-500/25

5. Syntax Changes (Critical) โ€‹

CSS Variables โ€‹

  • v3: bg-[--brand-color] (brackets)
  • v4: bg-(--brand-color) (parentheses) โš ๏ธ

Arbitrary Values with Spaces โ€‹

  • v3: grid-cols-[max-content,auto] (commas)
  • v4: grid-cols-[max-content_auto] (underscores) โš ๏ธ

Important Modifier โ€‹

  • v3: !flex or flex!
  • v4: flex! (ONLY at end) โš ๏ธ

Variant Order โ€‹

  • v3: Right-to-left: first:*:pt-0
  • v4: Left-to-right: *:first:pt-0 โš ๏ธ

6. Dynamic Values (No Config Needed) โ€‹

html
<!-- Grid columns - any number works -->
<div class="grid-cols-15 grid-cols-20 grid-cols-73"></div>

<!-- Spacing - any multiplier works -->
<div class="mt-17 px-73 gap-142"></div>

<!-- Data attributes - automatic -->
<div data-current class="data-current:opacity-100"></div>

Regex Patterns for Extraction โ€‹

Container Queries โ€‹

regex
@(?:sm|md|lg|xl|2xl|3xl|4xl|5xl|6xl|7xl)(?:\/[\w-]+)?:
@(?:min|max)-(?:sm|md|lg|xl|2xl)(?:\/[\w-]+)?:
@\[[^\]]+\](?:\/[\w-]+)?:
@(?:min|max)-\[[^\]]+\](?:\/[\w-]+)?:

Logical Variants โ€‹

regex
not-[\w-]+:
in-[\w-]+:
in-\[[^\]]+\]:
nth-\d+:
nth-\[[^\]]+\]:

Wildcard Selectors โ€‹

regex
\*:[\w-]+
\*\*:[\w-]+

New Utilities โ€‹

regex
inset-(?:shadow|ring)-[\w-]+
field-sizing-(?:content|fixed)
color-scheme-(?:light|dark|auto)
font-stretch-[\w-]+
rotate-[xyz]-\d+
translate-z-\d+
perspective-\d+
bg-(?:radial|conic)-[\w\[\]-]+

CSS Variable Syntax (v4) โ€‹

regex
[\w-]+-\(--[\w-]+\)
[\w-]+-\([\w-]+:--[\w-]+\)

Arbitrary Values with Underscores โ€‹

regex
[\w-]+-\[[^\]]*_[^\]]*\]

Current Package Status โ€‹

โœ… Supported (Confirmed) โ€‹

  • Basic container queries (@sm:, @lg:)
  • Arbitrary container queries (@[500px]:)
  • Data attributes (data-[state=open]:)
  • ARIA variants (aria-[current=page]:)
  • Arbitrary values with brackets
  • CSS variables v3 syntax ([--var])
  • Opacity modifiers (bg-blue-500/50)

โš ๏ธ Partial Support โ€‹

  • not-* variants (basic patterns)
  • in-* variants (basic patterns)
  • nth-* variants (basic patterns)

โœ… Now Supported (was ยซ Missing ยป in earlier drafts of this page) โ€‹

The package was audited end-to-end on 2026-04-30 against packages/tailwindcss-obfuscator/src/core/patterns/. Every item below ships in the current release :

  1. Wildcard selectors (*:, **:) โ€” variants.ts
  2. CSS variable parentheses syntax bg-(--var), text-(color:--my-var) โ€” validators.ts
  3. Arbitrary values with underscores โ€” validators.ts
  4. Named container queries (@lg/sidebar:) โ€” variants.ts
  5. Nested brackets (in-[[data-active]]:) โ€” basic patterns work, deeply-nested cases see Limitations
  6. Important modifier at END (flex!) โ€” validators.ts accepts both positions
  7. Variant order preservation โ€” transformer is order-preserving by design
  8. 3D transform utilities (rotate-x-*, rotate-y-*, rotate-z-*, perspective-*, transform-3d) โ€” utilities.ts
  9. Inset shadow / inset ring utilities โ€” utilities.ts
  10. New gradient types (bg-radial-*, bg-conic-*) โ€” utilities.ts
  11. Gradient stop positions (to-75%) โ€” handled by the standard percentage utility regex
  12. Renamed utility recognition (both v3 names like flex-shrink and v4 names like shrink) โ€” utilities.ts
  13. field-sizing-*, color-scheme-*, font-stretch-* utilities โ€” utilities.ts
  14. Dynamic grid columns (grid-cols-15) โ€” handled by the standard arbitrary-value regex

Action Items โ€‹

Code Updates Required โ€‹

  1. src/extractors/base.ts:

    • Add v4 variants to VARIANT_PREFIXES array
    • Add v4 utilities to STATIC_UTILITIES set
    • Add v4 prefixes to FUNCTIONAL_UTILITY_PREFIXES array
    • Update isTailwindClass() with v4 regex patterns
    • Update normalizeClassName() for wildcard selectors
  2. src/extractors/jsx.ts:

    • Handle CSS variable parentheses syntax
    • Handle arbitrary values with underscores
    • Handle nested brackets in variants
  3. src/transformers/jsx.ts:

    • Preserve variant order (left-to-right)
    • Enforce important modifier at END
    • Handle wildcard selectors
  4. src/transformers/css.ts:

    • Support 3D transform selectors
    • Support new gradient selectors
    • Handle renamed utilities (both v3 and v4)

Test Coverage Needed โ€‹

Create test files for:

  • โœ… Container queries (basic)
  • โŒ Named container queries
  • โŒ Wildcard selectors
  • โŒ Logical variants (comprehensive)
  • โŒ 3D transforms
  • โŒ New gradients
  • โŒ CSS variable parentheses
  • โŒ Arbitrary underscores
  • โŒ Important modifier position
  • โŒ Variant order preservation

Quick Test Cases โ€‹

html
<!-- Container queries -->
<div class="@lg:flex @min-[400px]:grid @max-[800px]:hidden"></div>
<div class="@[500px]/card:block @lg/sidebar:flex"></div>

<!-- Logical variants -->
<div class="not-hover:opacity-50 in-hover:text-blue-500"></div>
<div class="nth-2:font-bold nth-[2n+1]:bg-gray-50"></div>
<div class="in-[[data-active]]:bg-blue-500"></div>

<!-- Wildcard selectors -->
<ul class="**:text-gray-500 *:py-2 *:first:pt-0"></ul>

<!-- 3D transforms -->
<div class="rotate-x-45 translate-z-4 perspective-1000 transform-3d"></div>

<!-- Gradients -->
<div class="bg-linear-to-r from-red-500 to-blue-500"></div>
<div class="bg-radial-[at_25%_25%] from-white to-black to-75%"></div>
<div class="bg-conic/[in_hsl_longer_hue] from-red-600 to-red-600"></div>

<!-- CSS variables (v4) -->
<div class="bg-(--brand-color) text-(color:--my-var)"></div>

<!-- Arbitrary underscores -->
<div class="grid-cols-[max-content_auto]"></div>

<!-- Important at END -->
<div class="flex! bg-red-500! hover:bg-red-600!"></div>

<!-- Renamed utilities -->
<div class="shadow-xs rounded-xs blur-xs"></div>
<div class="outline-hidden shrink-0 text-ellipsis"></div>

<!-- Dynamic utilities -->
<div class="grid-cols-15 data-current:opacity-100"></div>

References โ€‹


Next Review Date: After implementation of high-priority items