Skip to content

Latest commit

 

History

History
782 lines (548 loc) · 61.8 KB

CHANGELOG.md

File metadata and controls

782 lines (548 loc) · 61.8 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

Fixed

  • Use the correct property value for place-content-between, place-content-around, and place-content-evenly utilities (#15440)
  • Don’t detect arbitrary properties when preceded by an escape (#15456)
  • Fix incorrectly named bg-round and bg-space utilities to bg-repeat-round to bg-repeat-space (#15462)
  • Fix inset-shadow-* suggestions in IntelliSense (#15471)

Changed

  • Removed --container-prose in favor of a deprecated --max-width-prose theme variable so that *-prose is only available for max-width utilities and only for backward compatibility (#15439)

[4.0.0-beta.8] - 2024-12-17

Fixed

  • Ensure Symbol.dispose and Symbol.asyncDispose are polyfilled (#15404)

[4.0.0-beta.7] - 2024-12-13

Added

  • Export tailwindcss/lib/util/flattenColorPalette for backward compatibility (#15318)
  • Improve debug logs to get better insights (#15303)

Fixed

  • Fix dependency related warnings when using @tailwindcss/postcss on Windows (#15321)
  • Skip creating a compiler for CSS files that should not be processed (#15340)
  • Fix missing shadow-none suggestion in IntelliSense (#15342)
  • Optimize AST before printing for IntelliSense (#15347)
  • Generate vendor prefixes for Chrome 111+ (e.g. -webkit-background-clip: text) (#15389)

Changed

  • Rename --aspect-ratio-* theme key to --aspect-* (#15365)
  • Derive aspect-video utility from theme (#15365)

[4.0.0-beta.6] - 2024-12-06

Fixed

  • Ensure @import "…" reference never generates utilities (#15307)

[4.0.0-beta.5] - 2024-12-04

Added

  • Parallelize parsing of individual source files (#15270)
  • Add new @import "…" reference option for importing Tailwind CSS configuration details into another CSS entry point without duplicating CSS (#15228)
  • Improve performance of @tailwindcss/postcss by translating between internal data structures and PostCSS nodes directly without additional parsing or stringification (#15297)

Fixed

  • Ensure absolute URLs inside imported CSS files are not rebased when using @tailwindcss/vite (#15275)
  • Fix issues with dev servers using Svelte 5 with @tailwindcss/vite (#15274)
  • Support installing @tailwindcss/vite in Vite 6 projects (#15274)
  • Fix resolution of imported CSS files in SSR builds with @tailwindcss/vite (#15279)
  • Ensure other plugins can run after @tailwindcss/postcss (#15273)
  • Rebase URLs inside imported CSS files when using Vite with the @tailwindcss/postcss extension (#15273)
  • Fix missing font family suggestions in IntelliSense (#15288)
  • Fix missing @container suggestion in IntelliSense (#15288)

[4.0.0-beta.4] - 2024-11-29

Fixed

  • Don't scan source files for utilities unless @tailwind utilities is present in the CSS in @tailwindcss/postcss and @tailwindcss/vite (#15226)
  • Skip reserializing CSS files that don't use Tailwind features in @tailwindcss/postcss and @tailwindcss/vite (#15226)
  • Upgrade (experimental): Do not migrate the overflow-clip utility (#15244)
  • Upgrade (experimental): Rename backdrop-blur to backdrop-blur-sm and backdrop-blur-sm to backdrop-blur-xs (#15242)

[4.0.0-beta.3] - 2024-11-27

Fixed

  • Ensure any necessary vendor prefixes are generated for iOS Safari, Firefox, and Chrome (#15166)
  • Ensure .group and .peer are prefixed when using the prefix(…) option (#15174)
  • Ensure 3D transforms render correctly in Safari (#15179)
  • Ensure --spacing-* variables take precedence over --container-* variables (#15180)
  • Fix scanning classes delimited by tab characters (#15169)
  • Ensure opacity modifiers and semi-transparent gradients render correctly by default in Safari (#15201)
  • Fix element size thrashing when transitioning gradients on elements with a defined font-size in Safari (#15216)
  • Ensure translate-* utilities work with arbitrary values that use calc(…) (#15215)
  • Ensure gradient stop position utilities work with arbitrary values that use calc(…) (#15215)
  • Ensure Node addons are packaged correctly with Windows ARM builds (#15171)
  • Ensure the Vite plugin resolves CSS and JS files according to the configured resolver conditions ([#15173])(#15173)
  • Upgrade (experimental): Migrate prefixes for .group and .peer classes (#15208)

Changed

  • Interpolate gradients using OKLAB instead of OKLCH by default (#15201)
  • Error when layer(…) in @import is not first in the list of functions/conditions (#15109)
  • Use unitless line-height values for font-size variables in default theme (#15216)
  • Don't register custom properties with explicit types unless those custom properties need to be animateable (#15215)

[4.0.0-beta.2] - 2024-11-22

Fixed

  • Use configured --letter-spacing values for custom font size utilities (#15099)
  • Ensure space-x/y-* and divide-x/y-* with variants can undo space-x/y-reverse and divide-x/y-reverse (#15094)
  • Don't print minified code when the build fails in the CLI (#15106)
  • Generate the correct CSS for the break-keep utility (#15108)
  • Detect single word utilities that include numbers (e.g. h1) when scanning files (#15110)
  • Upgrade (experimental): Always add layer(…) as the first param to @import (#15102)

Changed

  • Revert the new base styles for buttons and form controls (#15100)

[4.0.0-beta.1] - 2024-11-21

Added

  • Upgrade (experimental): Drop unnecessary opacity theme values when migrating to CSS (#15067)

Fixed

  • Ensure opacity theme values configured as decimal numbers via JS config files work with color utilities (#15067)
  • Bring back support for decoration-clone, decoration-slice, overflow-ellipsis, flex-grow-*, and flex-shrink-* (#15069)
  • Upgrade (experimental): Include color in the form reset snippet (#15064)

[4.0.0-alpha.36] - 2024-11-21

Added

  • Add consistent base styles for buttons and form controls (#15036)
  • Upgrade (experimental): Convert group-[]:flex to in-[.group]:flex (#15054)
  • Upgrade (experimental): Add form reset styles to CSS files for compatibility with v3 (#15036)
  • Upgrade (experimental): Migrate ring to ring-3 (#15063)

Fixed

  • Upgrade (experimental): Don't migrate arbitrary variants to in-* that use the child combinator instead of the descendant combinator (#15054)

Changed

  • Use single drop shadow values instead of multiple (#15056)
  • Do not parse invalid candidates with empty arbitrary values (#15055)

[4.0.0-alpha.35] - 2024-11-20

Added

  • Reintroduce max-w-screen-* utilities that read from the --breakpoint namespace as deprecated utilities (#15013)
  • Support using CSS variables as arbitrary values without var(…) by using parentheses instead of square brackets (e.g. bg-(--my-color)) (#15020)
  • Add new in-* variant (#15025)
  • Bundle @tailwindcss/forms, @tailwindcss/typography, and @tailwindcss/aspect-ratio with the standalone CLI (#15028)
  • Allow addUtilities() and addComponents() to work with child combinators and other complex selectors (#15029)
  • Support colors that use <alpha-value> in JS configs and plugins (#15033)
  • Add new transition-discrete and transition-normal utilities for transition-behavior (#15051)
  • Upgrade (experimental): Migrate [&>*] to the * variant (#15022)
  • Upgrade (experimental): Migrate [&_*] to the ** variant (#15022)
  • Upgrade (experimental): Warn when trying to migrating a project that is not on Tailwind CSS v3 (#15015)
  • Upgrade (experimental): Migrate colors that use <alpha-value> in JS configs (#15033)

Fixed

  • Ensure flex is suggested (#15014)
  • Improve module resolution for cjs-only and esm-only plugins (#15041)
  • Perform calc(…) on just values for negative -rotate-* utilities, not on the rotateX/Y/Z(…) functions themselves (#15044)
  • Upgrade (experimental): Resolve imports when specifying a CSS entry point on the command-line (#15010)
  • Upgrade (experimental): Resolve nearest Tailwind config file when CSS file does not contain @config (#15001)
  • Upgrade (experimental): Improve output when CSS imports can not be found (#15038)
  • Upgrade (experimental): Ignore analyzing imports with external URLs (e.g.: @import "https://fonts.google.com") (#15040)
  • Upgrade (experimental): Ignore analyzing imports with url(…) (e.g.: @import url("https://fonts.google.com")) (#15040)
  • Upgrade (experimental): Use resolveJsId when resolving tailwindcss/package.json (#15041)
  • Upgrade (experimental): Ensure children of Tailwind root file are not considered Tailwind root files (#15048)

Changed

  • Bring back support for color opacity modifiers to read from --opacity-* theme values (#14278)

[4.0.0-alpha.34] - 2024-11-14

Added

  • Support opacity values in increments of 0.25 by default (#14980)
  • Support specifying the color interpolation method for gradients via modifier (#14984)
  • Reintroduce container component as a utility (#14993, #14999)
  • Upgrade (experimental): Migrate container component configuration to CSS (#14999)

Fixed

  • Ensure that CSS inside Svelte <style> blocks always run the expected Svelte processors when using the Vite extension (#14981)
  • Upgrade (experimental): Ensure it's safe to migrate blur, rounded, or shadow (#14979)
  • Upgrade (experimental): Do not rename classes using custom defined theme values (#14976)
  • Upgrade (experimental): Ensure @config is injected in nearest common ancestor stylesheet (#14989)
  • Upgrade (experimental): Add missing layer(…) to imports above Tailwind directives (#14982)

[4.0.0-alpha.33] - 2024-11-11

Fixed

  • Don't reset horizontal padding on date/time pseudo-elements (#14959)
  • Don't emit calc() with invalid values for bare values that aren't integers in spacing utilities (#14962)
  • Ensure spacing scale values work as line-height modifiers (#14966)

[4.0.0-alpha.32] - 2024-11-11

Added

  • Support derived spacing scales based on a single --spacing theme value (#14857)
  • Add svh, dvh, svw, dvw, and auto values to all width/height/size utilities (#14857)
  • Add new ** variant (#14903)
  • Process <style> blocks inside Svelte files when using the Vite extension (#14151)
  • Normalize date/time input styles in Preflight (#14931)
  • Upgrade (experimental): Migrate grid-cols-[subgrid] and grid-rows-[subgrid] to grid-cols-subgrid and grid-rows-subgrid (#14840)
  • Upgrade (experimental): Support migrating projects with multiple config files (#14863)
  • Upgrade (experimental): Rename shadow to shadow-sm, shadow-sm to shadow-xs, and shadow-xs to shadow-2xs (#14875)
  • Upgrade (experimental): Rename inset-shadow to inset-shadow-sm, inset-shadow-sm to inset-shadow-xs, and inset-shadow-xs to inset-shadow-2xs (#14875)
  • Upgrade (experimental): Rename drop-shadow to drop-shadow-sm and drop-shadow-sm to drop-shadow-xs (#14875)
  • Upgrade (experimental): Rename rounded to rounded-sm and rounded-sm to rounded-xs (#14875)
  • Upgrade (experimental): Rename blur to blur-sm and blur-sm to blur-xs (#14875)
  • Upgrade (experimental): Migrate theme() usage and JS config files to use the new --spacing multiplier where possible (#14905)
  • Upgrade (experimental): Migrate arbitrary values in variants to built-in values where possible (#14841)

Fixed

  • Detect classes in new files when using @tailwindcss/postcss (#14829)
  • Fix crash when using @source containing .. (#14831)
  • Ensure instances of the same variant with different values are always sorted deterministically (e.g. data-focus:flex and data-active:flex) (#14835)
  • Ensure --inset-ring=* and --inset-shadow-* variables are ignored by inset-* utilities (#14855)
  • Ensure url(…) containing special characters such as ; or {} end up in one declaration (#14879)
  • Ensure adjacent rules are merged together after handling nesting when generating optimized CSS (#14873)
  • Rebase url() inside imported CSS files when using Vite (#14877)
  • Ensure that CSS transforms from other Vite plugins correctly work in full builds (e.g. :deep() in Vue) (#14871)
  • Ensure the CSS theme() function handles newlines and tabs in its arguments list (#14917)
  • Don't unset keys like --inset-shadow-* when unsetting keys like --inset-* (#14906)
  • Ensure spacing utilities with no value (e.g. px or translate-y) don't generate CSS (#14911)
  • Don't override user-agent background color for input elements in Preflight (#14913)
  • Don't attempt to convert CSS variables (which should already be percentages) to percentages when used as opacity modifiers (#14916)
  • Ensure custom utilities registered with the plugin API can start with @ (#14793)
  • Upgrade (experimental): Install @tailwindcss/postcss next to tailwindcss (#14830)
  • Upgrade (experimental): Remove whitespace around , separator when print arbitrary values (#14838)
  • Upgrade (experimental): Fix crash during upgrade when content globs escape root of project (#14896)
  • Upgrade (experimental): Don't convert theme(…/15%) to modifier unless it is the entire arbitrary value of a utility (#14922)
  • Upgrade (experimental): Convert , to in arbitrary grid-cols-*, grid-rows-*, and object-* values (#14927)

Changed

  • Remove --drop-shadow-none from the default theme in favor of a static drop-shadow-none utility (#14847)
  • Rename shadow to shadow-sm, shadow-sm to shadow-xs, and shadow-xs to shadow-2xs (#14849)
  • Rename inset-shadow to inset-shadow-sm, inset-shadow-sm to inset-shadow-xs, and inset-shadow-xs to inset-shadow-2xs (#14849)
  • Rename drop-shadow to drop-shadow-sm and drop-shadow-sm to drop-shadow-xs (#14849)
  • Rename rounded to rounded-sm and rounded-sm to rounded-xs (#14849)
  • Rename blur to blur-sm and blur-sm to blur-xs (#14849)
  • Remove fixed line-height theme values and derive leading-* utilites from --spacing-* scale (#14857)
  • Remove --transition-timing-function-linear from the default theme in favor of a static ease-linear utility (#14880)
  • Remove default --spacing-* scale in favor of --spacing multiplier (#14857)
  • Remove var(…) fallbacks from theme values in utilities (#14881)
  • Remove static font-weight utilities and add --font-weight-* values to the default theme (#14883)
  • Rename --transition-timing-function-* variables to --ease-* (#14886)
  • Rename --width-* variables to --container-* (#14898)
  • Rename --font-size-* variables to --text-* (#14909)
  • Rename --font-family-* variables to --font-* (#14885)
  • Rename --letter-spacing-* variables to --tracking-* (#14921)
  • Rename --line-height-* variables to --leading-* (#14925)
  • Revert specificity of * variant to match v3 behavior (#14920)
  • Replace outline-none with outline-hidden, add new simplified outline-none utility (#14926)
  • Revert adding borders by default to form inputs (#14929)
  • Deprecate shadow-inner utility (#14933)
  • Remove --leading-none from the default theme in favor of a static leading-none utility (#14934)

[4.0.0-alpha.31] - 2024-10-29

Added

  • Support specifying the base path for automatic source detection using a source(…) function on @tailwind utilities or @import "tailwindcss" (#14820)
  • Support disabling automatic source detection with source(none) (#14820)
  • Support passing directories to @source without needing to pass a complete glob (#14820)
  • Upgrade (experimental): Bump prettier-plugin-tailwindcss to latest version during upgrade (#14808)

Fixed

  • Support calling config() with no arguments in plugin API (#14799)

Changed

  • Use logical *-inline and *-block properties for all x/y utilities like px-*, my-*, scroll-px-*, and inset-y-* (#14805)
  • Respect automatic source detection heuristics in sources registered with @source (#14820)

[4.0.0-alpha.30] - 2024-10-24

Added

  • Support not-* with all built-in media query and supports-* variants (#14743)
  • Support not-* with custom variants containing at-rules (#14743)
  • Support group-*, peer-*, and has-* with custom variants containing multiple, non-nested style rules (#14743)

Fixed

  • Ensure individual logical property utilities are sorted later than left/right pair utilities (#14777)
  • Don't migrate important modifiers inside conditional statements in Vue and Alpine (e.g. <div v-if="!border" />) (#14774)
  • Ensure third-party plugins with exports in their package.json are resolved correctly (#14775)
  • Ensure underscores in the url() function are never unescaped (#14776)
  • Ensure complex variants are displayed correctly in IntelliSense completions (#14743)
  • Upgrade (experimental): Ensure @import statements for relative CSS files are actually migrated to use relative path syntax (#14769)
  • Upgrade (experimental): Only generate Preflight compatibility styles when Preflight is used (#14773)
  • Upgrade (experimental): Don't escape underscores when printing theme values migrated to CSS variables in arbitrary values (e.g. m-[var(--spacing-1_5)] instead of m-[var(--spacing-1\_5)]) (#14778)
  • Upgrade (experimental): Ensure layer(…) on @import is only removed when @utility is present (#14783)

Changed

  • Don't convert underscores in the first argument to var() and theme() to spaces (#14776, #14781)
  • Sort text alignment and wrapping utilities with typography utilities (#14787)
  • Sort line height and letter spacing utilities before text color utilities (#14787)

[4.0.0-alpha.29] - 2024-10-23

Added

  • Upgrade (experimental): Migrate plugins with options to CSS (#14700)
  • Upgrade (experimental): Allow JS configuration files with corePlugins options to be migrated to CSS (#14742)
  • Upgrade (experimental): Migrate @import statements for relative CSS files to use relative path syntax (e.g. ./file.css) (#14755)
  • Upgrade (experimental): Migrate max-w-screen-* utilities to max-w-[var(…)](#14754)
  • Upgrade (experimental): Migrate @variants and @responsive directives (#14748)
  • Upgrade (experimental): Migrate @screen directive (#14749)
  • Upgrade (experimental): Generate compatibility styles for legacy default border color (#14746)
  • Upgrade (experimental): Generate compatibility styles for legacy default border width on form elements (#14746)

Fixed

  • Allow spaces spaces around operators in attribute selector variants (#14703)
  • Ensure color opacity modifiers work with OKLCH colors (#14741)
  • Ensure changes to the input CSS file result in a full rebuild (#14744)
  • Add postcss as a dependency of @tailwindcss/postcss (#14750)
  • Ensure the JS theme() function can reference CSS theme variables that contain special characters without escaping them (e.g. referencing --width-1\/2 as theme('width.1/2')) (#14739)
  • Ensure JS theme keys containing special characters correctly produce utility classes (e.g. '1/2': 50% to w-1/2) (#14739)
  • Always emit keyframes registered in addUtilities (#14747)
  • Ensure loading stylesheets via the ?raw and ?url static asset query works when using the Vite plugin (#14716)
  • Upgrade (experimental): Migrate flex-grow to grow and flex-shrink to shrink (#14721)
  • Upgrade (experimental): Minify arbitrary values when printing candidates (#14720)
  • Upgrade (experimental): Ensure legacy theme values ending in 1 (like theme(spacing.1)) are correctly migrated to custom properties (#14724)
  • Upgrade (experimental): Migrate arbitrary values to bare values for the from-*, via-*, and to-* utilities (#14725)
  • Upgrade (experimental): Ensure layer(utilities) is removed from @import to keep @utility top-level (#14738)
  • Upgrade (experimental): Ensure JS theme keys with special characters are escaped when migrated to CSS variables (#14736)
  • Upgrade (experimental): Don't migrate important modifiers that are actually logical negations (e.g. let foo = !border to let foo = border!) (#14737)

Changed

  • Require a relative path prefix for importing relative CSS files (e.g. @import './styles.css' instead of @import 'styles.css') (#14755)
  • Upgrade (experimental): Don't create @source rules for content paths that are already covered by automatic source detection (#14714)

[4.0.0-alpha.28] - 2024-10-17

Added

  • Add first draft of new wide-gamut color palette (#14693)
  • Support linear gradient angles as bare values (#14707)
  • Interpolate gradients in OKLCH by default (#14708)
  • Upgrade (experimental): Migrate theme(…) calls to var(…) or to the modern theme(…) syntax (#14664, #14695)
  • Upgrade (experimental): Support migrating JS configurations to CSS that contain functions inside the theme object (#14675)

Fixed

  • Ensure theme values defined outside of extend in JS configuration files overwrite all existing values for that namespace (#14672)
  • Remove unnecessary variable fallbacks in gradient utilities (#14705)
  • Upgrade (experimental): Speed up template migrations (#14679)
  • Upgrade (experimental): Don't generate invalid CSS when migrating a complex screens config (#14691)

[4.0.0-alpha.27] - 2024-10-15

Added

  • Add support for tailwindcss/colors.js, tailwindcss/defaultTheme.js, and tailwindcss/plugin.js exports (#14595)
  • Support keyframes in JS config file themes (#14594)
  • Support the color parameter in JS theme configuration callbacks (#14651)
  • Support using the object parameter in the JS theme configuration callback as theme() function (#14659)
  • Upgrade (experimental): Automatically discover JavaScript config files (#14597)
  • Upgrade (experimental): Inject @config "…" when a tailwind.config.{js,ts,…} is detected (#14635)
  • Upgrade (experimental): Migrate @media screen(…) when running codemods (#14603)
  • Upgrade (experimental): Migrate aria-*, data-*, and supports-* variants from arbitrary values to bare values (#14644)
  • Upgrade (experimental): Migrate arbitrary values to bare values (#14669)
  • Upgrade (experimental): Migrate legacy classes to the v4 alternative (#14643)
  • Upgrade (experimental): Migrate static JS configurations to CSS (#14639, #14650, #14648, #14666)
  • Upgrade (experimental): Migrate v3 PostCSS setups to v4 in some cases (#14612)

Fixed

  • Don’t crash when scanning a candidate equal to the configured prefix (#14588)
  • Ensure there's always a space before !important when stringifying CSS (#14611)
  • Don't set display: none on elements that use hidden="until-found" (#14631)
  • Ensure the CSS theme() function resolves to the right value in some compatibility situations (#14614)
  • Fix issue that could cause the CLI to crash when files are deleted while watching (#14616)
  • Ensure custom variants using the JS API have access to modifiers (#14637)
  • Ensure auto complete suggestions work when using matchUtilities (#14589)
  • Pass options when using addComponents and matchComponents (#14590)
  • Ensure boxShadow and animation theme keys in JS config files are accessible under --shadow-* and --animate-* using the theme() function (#14642)
  • Ensure all theme keys with new names are also accessible under their old names when using the theme() function with the legacy dot notation syntax (#14642)
  • Ensure var(…) can be used as the opacity value inside the theme([path] / [modifier]) function (#14653)
  • Ensure font-stretch utilities only accepts positive integer bare values (#14670)
  • Upgrade (experimental): Ensure CSS before a layer stays unlayered when running codemods (#14596)
  • Upgrade (experimental): Resolve issues where some prefixed candidates were not properly migrated (#14600)

[4.0.0-alpha.26] - 2024-10-03

Added

  • Add support for prefixes (#14501)
  • Expose timing information in debug mode (#14553)
  • Add support for blocklist in JS config files (#14556)
  • Add color-scheme utilities (#14567)
  • Add support for important option in JS config files (#14448)
  • Upgrade (experimental): Convert @import "tailwindcss/tailwind.css" to @import "tailwindcss" in CSS files (#14514)
  • Upgrade (experimental): Apply all utility upgrades to @apply in CSS files (#14574)
  • Upgrade (experimental): Update variant order in template files (#14524)
  • Upgrade (experimental): Convert bg-gradient-* utilities to bg-linear-* in template files (#14537)
  • Upgrade (experimental): Convert legacy prefixes to variant prefixes in template files (#14557)
  • Upgrade (experimental): Convert bare CSS variables in arbitrary values to var(…) in template files (#14526)
  • Upgrade (experimental): Convert legacy important modifier syntax to trailing syntax (#14502)

Fixed

  • Use the right import base path when using the CLI to reading files from stdin (#14522)
  • Ensure that @utility is top-level and cannot be nested (#14525)
  • Only setup a single compiler in @tailwindcss/postcss for initial builds (#14565)
  • Ensure editing imported CSS files triggers a rebuild (#14561)
  • Ensure @apply and CSS functions work inside imported stylesheets (#14576)
  • Upgrade (experimental): Don't wrap custom CSS after utilities in a layer (#14512)
  • Upgrade (experimental): Don't add empty layer() to @import at-rules when the styles do not need to be imported into a layer (#14513)
  • Upgrade (experimental): Don't wrap comment nodes in @layer when running codemods (#14517)
  • Upgrade (experimental): Fix scenario where selectors can be lost in multi-selector rules (#14518)
  • Upgrade (experimental): Ensure custom CSS before @tailwind rules is wrapped with @layer base when prepending @import "tailwindcss" to the top of the file (#14536)

Changed

  • Disallow bare values with decimal places (#14562)

[4.0.0-alpha.25] - 2024-09-24

Added

  • Add support for aria, supports, and data variants defined in JS config files (#14407)
  • Add @tailwindcss/upgrade tooling (#14434)
  • Support screens in JS config files (#14415)
  • Add bg-radial-* and bg-conic-* utilities for radial and conic gradients (#14467)
  • Add new shadow-initial and inset-shadow-initial utilities for resetting shadow colors (#14468)
  • Add field-sizing-* utilities (#14469)
  • Include gradient color properties in color transitions (#14489)
  • Upgrade (experimental): Convert important syntax in @apply in CSS files (#14411)
  • Upgrade (experimental): Convert @tailwind directives to @import rules in CSS files (#14411, #14504)
  • Upgrade (experimental): Convert custom CSS in @layer utilities and @layer components to use @utility in CSS files (#14455)

Fixed

  • Support borderRadius.* as an alias for --radius-* when using dot notation inside the theme() function (#14436)
  • Ensure individual variants from groups are always sorted earlier than stacked variants from the same groups (#14431)
  • Allow anchor-size(…) in arbitrary values (#14394)
  • Skip candidates with invalid theme() calls (#14437)
  • Don't generate inset-* utilities for --inset-shadow-* and --inset-ring-* theme values (#14447)
  • Include --default-transition-* variables in transition-* utility output (#14482)
  • Ensure rtl and ltr variants work with [dir=auto] (#14306)

Changed

  • Preserve explicit leading-*, tracking-*, and font-{weight} value when overriding font-size (#14403)
  • Disallow negative bare values in core utilities and variants (#14453)
  • Preserve explicit shadow color when overriding shadow size (#14458)
  • Preserve explicit transition duration and timing function when overriding transition property (#14490)
  • Change the implementation for @import resolution to speed up initial builds (#14446)
  • Remove automatic var(…) injection (#13657)
  • Only apply :hover states on devices that support @media (hover: hover) (#14500)

[4.0.0-alpha.24] - 2024-09-11

Added

  • Support CSS theme() functions inside other @custom-media, @container, and @supports rules (#14358)
  • Export Config type from tailwindcss for JS config files (#14360)
  • Add support for matchVariant plugins using the @plugin directive (#14371)
  • Warn when the tailwindcss package is used as a PostCSS plugin (#14378)

Fixed

  • Ensure there is always CLI feedback on save even when no new classes were found (#14351)
  • Properly resolve theme('someKey.DEFAULT') when all --some-key-* keys have a suffix (#14354)
  • Make sure tuple theme values in JS configs take precedence over @theme default values (#14359)
  • Improve IntelliSense completions for border utilities (#14370)

[4.0.0-alpha.23] - 2024-09-05

Added

  • Add opacity modifier support to the theme() function in plugins (#14348)

[4.0.0-alpha.22] - 2024-09-04

Added

  • Support TypeScript for @plugin and @config files (#14317)
  • Add default option to @theme to support overriding default theme values from plugins/JS config files (#14327)
  • Add support for <style> tags in Astro files to the Vite plugin (#14340)

Fixed

  • Ensure content globs defined in @config files are relative to that file (#14314)
  • Ensure CSS theme() functions are evaluated in media query ranges with collapsed whitespace (#14321)
  • Fix support for Nuxt projects in the Vite plugin (requires Nuxt 3.13.1+) (#14319)
  • Evaluate theme functions in plugins and JS config files (#14326)
  • Ensure theme values overridden with reference values don't generate stale CSS variables (#14327)
  • Don’t suggest named opacity modifiers in IntelliSense (#14339)
  • Fix a crash with older Node.js versions (#14342)
  • Support defining theme values as arrays of strings in JS config files (#14343)
  • Ensure --default-font-* and --default-mono-font-* variables respect theme customizations in JS config files (#14344)

[4.0.0-alpha.21] - 2024-09-02

Added

  • Add new standalone builds of Tailwind CSS v4 (#14270)
  • Support JavaScript configuration files using @config (#14239)
  • Support plugin options in @plugin (#14264)
  • Add support for using the Vite extension with css.transformer set to lightningcss (#14269)

Fixed

  • Bring back type exports for the cjs build of @tailwindcss/postcss (#14256)
  • Correctly merge tuple values when using the plugin API (#14260)
  • Handle arrays in the CSS theme() function when using plugins (#14262)
  • Fix fallback values when using the CSS theme() function (#14262)
  • Fix support for declaration fallbacks in plugins (#14265)
  • Support bare values when using tailwindcss/defaultTheme (#14257)
  • Correctly update builds when using the Vite extension with build --watch (#14269)

Changed

  • Remove named opacity support for color opacity modifiers (#14278)

[4.0.0-alpha.20] - 2024-08-23

Added

  • Add support for addBase plugins using the @plugin directive (#14172)
  • Add support for the tailwindcss/plugin export (#14173)
  • Add support for the theme() function in plugins (#14207)
  • Add support for addComponents, matchComponents, prefix plugin APIs (#14221)
  • Add support for tailwindcss/colors and tailwindcss/defaultTheme exports for use with plugins (#14221)
  • Add support for the @tailwindcss/typography and @tailwindcss/forms plugins (#14221)
  • Add support for the theme() function in CSS and class names (#14177)
  • Add support for matching multiple utility definitions for one candidate (#14231)

Fixed

  • Don't wrap relative selectors in arbitrary variants with :is(…) (#14203)

[4.0.0-alpha.19] - 2024-08-09

Added

  • Add support for inline option when defining @theme values (#14095)
  • Add inert variant (#14129)
  • Add support for explicitly registering content paths using new @source at-rule (#14078)
  • Add support for scanning <style> tags in Vue files to the Vite plugin (#14158)
  • Add support for basic addUtilities and matchUtilities plugins using the @plugin directive (#14114)

Fixed

  • Ensure @apply works inside @utility (#14144)

[4.0.0-alpha.18] - 2024-07-25

Added

  • Add support for basic addVariant plugins with new @plugin directive (#13982, #14008)
  • Add @variant at-rule for defining custom variants in CSS (#13992, #14008)
  • Add @utility at-rule for defining custom utilities in CSS (#14044)

Fixed

  • Discard invalid classes such as bg-red-[#000] (#13970)
  • Fix parsing body-less at-rule without terminating semicolon (#13978)
  • Ensure opacity modifier with variables work with color-mix() (#13972)
  • Discard invalid variants and utilities with modifiers (#13977)
  • Add missing utilities that exist in v3, such as resize, fill-none, accent-none, drop-shadow-none, and negative hue-rotate and backdrop-hue-rotate utilities (#13971)
  • Don’t allow at-rule-only variants to be compounded (#14015)
  • Ensure compound variants work with variants with multiple selectors (#14016)
  • Ensure attribute values in data-* and aria-* modifiers are always quoted in the generated CSS (#14040)

Changed

  • Reduce the specificity of the * variant so those styles can be overridden by child elements (#14056)

[4.0.0-alpha.17] - 2024-07-04

Added

  • Add rounded-4xl utility (#13827)
  • Add backdrop-blur-none and blur-none utilities (#13831)
  • Include variable in output for bare utilities like rounded (#13836)

Fixed

  • Support combining arbitrary shadows without a color with shadow color utilities (#13876)
  • Ensure @property fallbacks work correctly with properties with no initial-value (#13949)

[4.0.0-alpha.16] - 2024-06-07

Added

  • Add nth-* variants (#13661)
  • Add bg-linear-* utilities as an alias for the existing bg-gradient-* utilities (#13783)
  • Support arbitrary linear gradient angles (e.g. bg-linear-[125deg]) (#13783)

Fixed

  • Use length data type for background-size instead of background-position (#13771)
  • Support negative values for {col,row}-{start,end} utilities (#13780)
  • Use long form <length> | <percentage> syntax for properties (#13660)
  • Fix background position value of bg-right-top, bg-right-bottom, bg-left-bottom and bg-left-top (#13806)

[4.0.0-alpha.15] - 2024-05-08

Fixed

  • Make sure contain-* utility variables resolve to a valid value (#13521)
  • Support unbalanced parentheses and braces in quotes in arbitrary values and variants (#13608)
  • Add fallbacks for @property rules for Firefox (#13655)

Changed

  • Use rem units for breakpoints by default instead of px (#13469)
  • Use natural sorting when sorting classes (#13507, #13532)

[4.0.0-alpha.14] - 2024-04-09

Fixed

  • Ensure deterministic SSR builds in @tailwindcss/vite (#13457)

Changed

  • Apply variants from left to right instead of inside-out (#13478)
  • Don't special-case [hidden] elements in space-*/divide-* utilities (#13459)

[4.0.0-alpha.13] - 2024-04-04

Fixed

  • Always inline values for shadow-* utilities to ensure shadow colors work correctly (#13449)

[4.0.0-alpha.12] - 2024-04-04

Fixed

  • Enable Vite's waitForRequestsIdle() for client requests only (#13394)
  • Make sure ::first-letter respects ::selection styles (#13408)

[4.0.0-alpha.11] - 2024-03-27

Added

  • Make rotate-x/y/z-* utilities composable (#13319)
  • Apply Vite's CSS plugin transform to Tailwind-generated CSS in @tailwindcss/vite (e.g. inlining images) (#13218)
  • Add starting variant for @starting-style (#13329)
  • Target :popover-open in existing open variant (#13331)

Fixed

  • Remove percentage values for translate-z utilities (#13321, #13327)
  • Generate unique CSS bundle hashes in @tailwindcss/vite when Tailwind-generated CSS changes (#13218)
  • Inherit letter spacing in form controls (#13328)
  • Ensure build command is executed when using --output instead of -o (#13369)
  • Prevent @tailwindcss/vite from hanging in serve mode (#13380)

[4.0.0-alpha.10] - 2024-03-19

Added

Fixed

  • Validate bare values (#13245)
  • Parse candidates in .svelte files with class:abc="condition" syntax (#13274)

Changed

  • Inline @import rules in tailwindcss/index.css at publish time for better performance (#13233)
  • Include custom properties with fallbacks in utility class values (#13177)

[4.0.0-alpha.9] - 2024-03-13

Added

  • Support @theme reference { … } for defining theme values without emitting variables (#13222)

Fixed

  • Fix incorrect properties in line-clamp utilities (#13220)
  • Don't rely on existence of --default-transition-* variables in transition-* utilities (#13219)

Changed

  • Move optimizeCss to the packages where it's used (#13230)

[4.0.0-alpha.8] - 2024-03-11

Fixed

  • Ensure scale-* utilities support percentage values (#13182)
  • Prevent content-none from being overridden when conditionally styling ::before/::after (#13187)
  • Remove default borders from iframe elements (#13189)

Changed

  • Replace --radius-none and --radius-full theme values with static rounded-none and rounded-full utilities (#13186)

Added

  • Improve performance of incremental rebuilds for @tailwindcss/cli (#13169)
  • Improve performance of incremental rebuilds for @tailwindcss/postcss (#13170)

[4.0.0-alpha.7] - 2024-03-08

Added

  • Add font-stretch utilities (#13153)
  • Publish packages with npm provenance (#13160)
  • Build native packages for Android (#13115, #13161)
  • Make CSS optimization and minification configurable in PostCSS plugin and CLI (#13130)

Fixed

  • Don't error on @apply with leading/trailing whitespace (#13144)
  • Correctly parse CSS using Windows line endings (#13162)

[4.0.0-alpha.6] - 2024-03-07

Fixed

  • Only set border-style for appropriate border side (#13124)

Changed

  • Error when @theme contains unsupported rules/declarations (#13125)

[4.0.0-alpha.5] - 2024-03-06

Fixed

  • Don't scan ignored files even if a .git folder is not present (#13119)

[4.0.0-alpha.4] - 2024-03-06

Fixed

  • Support importing framework CSS files without including a .css extension (#13110)

[4.0.0-alpha.3] - 2024-03-06

Added

  • Support putting the important modifier at the beginning of a utility (#13103)

Fixed

  • Node compatibility fix (#13104)

Changes

  • Drop deprecated decoration-slice and decoration-clone utilities (#13107)

[4.0.0-alpha.2] - 2024-03-06

Changed

  • Move the CLI into a separate @tailwindcss/cli package (#13095)

[4.0.0-alpha.1] - 2024-03-06

  • First 4.0.0-alpha.1 release