Releases: tailwindlabs/tailwindcss
Releases · tailwindlabs/tailwindcss
v4.0.0-beta.3
Fixed
- Ensure any necessary vendor prefixes are generated for iOS Safari, Firefox, and Chrome (#15166)
- Ensure
.groupand.peerare prefixed when using theprefix(…)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 usecalc(…)(#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
.groupand.peerclasses (#15208)
Changed
- Interpolate gradients using OKLAB instead of OKLCH by default (#15201)
- Error when
layer(…)in@importis 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)
v4.0.0-beta.2
Fixed
- Use configured
--letter-spacingvalues for custom font size utilities (#15099) - Ensure
space-x/y-*anddivide-x/y-*with variants can undospace-x/y-reverseanddivide-x/y-reverse(#15094) - Don't print minified code when the build fails in the CLI (#15106)
- Generate the correct CSS for the
break-keeputility (#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)
v4.0.0-beta.1
About eight months ago we open-sourced our progress on Tailwind CSS v4.0. Hundreds of hours of fixing bugs, soul-crushing backward compatibility work, and troubleshooting Windows CI failures later, I'm excited to finally tag the first public beta release.
As I talked about when we published the first alpha, Tailwind CSS v4.0 is an all-new engine built for performance, and designed for the modern web.
- Built for performance — full builds in the new engine are up to 5x faster, and incremental builds are over 100x faster — and measured in microseconds.
- Unified toolchain — built-in import handling, vendor prefixing, and syntax transforms, with no additional tooling required.
- CSS-first configuration — a reimagined developer experience where you customize and extend the framework directly in CSS instead of a JavaScript configuration file.
- Designed for the modern web — built on native cascade layers, wide-gamut colors, and including first-class support for modern CSS features like container queries,
@starting-style, popovers, and more.
There's so much more to say, but everything you need to get started is in the new beta documentation we published today:
Get started with Tailwind CSS v4.0 Beta 1 →
Start building and help us bullet-proof this thing for the stable release early in the new year.
v4.0.0-alpha.36
Added
- Add consistent base styles for buttons and form controls (#15036)
- Upgrade (experimental): Convert
group-[]:flextoin-[.group]:flex(#15054) - Upgrade (experimental): Add form reset styles to CSS files for compatibility with v3 (#15036)
- Upgrade (experimental): Migrate
ringtoring-3(#15063)
Fixed
- Upgrade (experimental): Ensure migrating to the
in-*requires a descendant selector (#15054)
Changed
v4.0.0-alpha.35
Added
- Reintroduce
max-w-screen-*utilities that read from the--breakpointnamespace 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-ratiowith the standalone CLI (#15028) - Allow
addUtilities()andaddComponents()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-discreteandtransition-normalutilities fortransition-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
flexis suggested (#15014) - Improve module resolution for
cjs-only andesm-only plugins (#15041) - Perform
calc(…)on just values for negative-rotate-*utilities, not on therotateX/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
resolveJsIdwhen resolvingtailwindcss/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)
v4.0.0-alpha.34
Added
- Support opacity values in increments of
0.25by default (#14980) - Support specifying the color interpolation method for gradients via modifier (#14984)
- Reintroduce
containercomponent as a utility (#14993, #14999) - Upgrade (experimental): Migrate
containercomponent 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, orshadow(#14979) - Upgrade (experimental): Do not rename classes using custom defined theme values (#14976)
- Upgrade (experimental): Ensure
@configis injected in nearest common ancestor stylesheet (#14989) - Upgrade (experimental): Add missing
layer(…)to imports above Tailwind directives (#14982)
v3.4.15
v4.0.0-alpha.33
v4.0.0-alpha.32
Added
- Support derived spacing scales based on a single
--spacingtheme value (#14857) - Add
svh,dvh,svw,dvw, andautovalues 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]andgrid-rows-[subgrid]togrid-cols-subgridandgrid-rows-subgrid(#14840) - Upgrade (experimental): Support migrating projects with multiple config files (#14863)
- Upgrade (experimental): Rename
shadowtoshadow-sm,shadow-smtoshadow-xs, andshadow-xstoshadow-2xs(#14875) - Upgrade (experimental): Rename
inset-shadowtoinset-shadow-sm,inset-shadow-smtoinset-shadow-xs, andinset-shadow-xstoinset-shadow-2xs(#14875) - Upgrade (experimental): Rename
drop-shadowtodrop-shadow-smanddrop-shadow-smtodrop-shadow-xs(#14875) - Upgrade (experimental): Rename
roundedtorounded-smandrounded-smtorounded-xs(#14875) - Upgrade (experimental): Rename
blurtoblur-smandblur-smtoblur-xs(#14875) - Upgrade (experimental): Migrate
theme()usage and JS config files to use the new--spacingmultiplier 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
@sourcecontaining..(#14831) - Ensure instances of the same variant with different values are always sorted deterministically (e.g.
data-focus:flexanddata-active:flex) (#14835) - Ensure
--inset-ring=*and--inset-shadow-*variables are ignored byinset-*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.
pxortranslate-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/postcssnext totailwindcss(#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
,toin arbitrarygrid-cols-*,grid-rows-*, andobject-*values (#14927)
Changed
- Remove
--drop-shadow-nonefrom the default theme in favor of a staticdrop-shadow-noneutility (#14847) - Rename
shadowtoshadow-sm,shadow-smtoshadow-xs, andshadow-xstoshadow-2xs(#14849) - Rename
inset-shadowtoinset-shadow-sm,inset-shadow-smtoinset-shadow-xs, andinset-shadow-xstoinset-shadow-2xs(#14849) - Rename
drop-shadowtodrop-shadow-smanddrop-shadow-smtodrop-shadow-xs(#14849) - Rename
roundedtorounded-smandrounded-smtorounded-xs(#14849) - Rename
blurtoblur-smandblur-smtoblur-xs(#14849) - Remove fixed line-height theme values and derive
leading-*utilites from--spacing-*scale (#14857) - Remove
--transition-timing-function-linearfrom the default theme in favor of a staticease-linearutility (#14880) - Remove default
--spacing-*scale in favor of--spacingmultiplier (#14857) - Remove
var(…)fallbacks from theme values in utilities (#14881) - Remove static
font-weightutilities 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-nonewithoutline-hidden, add new simplifiedoutline-noneutility (#14926) - Revert adding borders by default to form inputs (#14929)
- Deprecate
shadow-innerutility (#14933) - Remove
--leading-nonefrom the default theme in favor of a staticleading-noneutility (#14934)
v4.0.0-alpha.31
Added
- Support specifying the base path for automatic source detection using a
source(…)function on@tailwind utilitiesor@import "tailwindcss"(#14820) - Support disabling automatic source detection with
source(none)(#14820) - Support passing directories to
@sourcewithout needing to pass a complete glob (#14820) - Upgrade (experimental): Bump
prettier-plugin-tailwindcssto latest version during upgrade (#14808)
Fixed
- Support calling
config()with no arguments in plugin API (#14799)
