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.
Fixed
- Export
tailwindcss/lib/util/flattenColorPalette.js
for backward compatibility (#16411)
- Fix sorting numeric utilities when they have different magnitudes (#16414)
4.0.6 - 2025-02-10
Fixed
- Revert change to no longer include theme variables that aren't used in compiled CSS (#16403)
4.0.5 - 2025-02-08
Added
- Add
@theme static
option for always including theme variables in compiled CSS (#16211)
Fixed
- Remove rogue
console.log
from @tailwindcss/vite
(#16307)
Changed
- Don't include theme variables that aren't used in compiled CSS (#16211)
4.0.4 - 2025-02-06
Fixed
- Fix a crash when setting JS theme values to
null
(#16210)
- Ensure escaped underscores in CSS variables in arbitrary values are properly unescaped (#16206)
- Ensure that the
containers
JS theme key is added to the --container-*
namespace (#16169)
- Ensure theme
@keyframes
are generated even if an --animation-*
variable spans multiple lines (#16237)
- Vite: Skip parsing stylesheets with the
?commonjs-proxy
flag (#16238)
- Fix
order-first
and order-last
for Firefox (#16266)
- Fix support for older instruction sets on Linux x64 builds of the standalone CLI (#16244)
- Ensure
NODE_PATH
is respected when resolving JavaScript and CSS files (#16274)
- Ensure Node addons are packaged correctly with FreeBSD builds (#16277)
- Fix an issue where
@variant
inside a referenced stylesheet could cause a stack overflow (#16300)
4.0.3 - 2025-02-01
Fixed
- Fix incorrect removal of
@import url();
(#16144)
4.0.2 - 2025-01-31
Fixed
- Only generate positive
grid-cols-*
and grid-rows-*
utilities (#16020)
- Ensure escaped theme variables are handled correctly (#16064)
- Ensure we process Tailwind CSS features when only using
@reference
or @variant
(#16057)
- Refactor gradient implementation to work around prettier/prettier#17058 (#16072)
- Vite: Ensure hot-reloading works with SolidStart setups (#16052)
- Vite: Fix a crash when starting the development server in SolidStart setups (#16052)
- Vite: Don't rebase URLs that appear to be aliases (#16078)
- Vite: Transform
<style>
blocks in HTML files (#16069)
- Prevent camel-casing CSS custom properties added by JavaScript plugins (#16103)
- Do not emit
@keyframes
in @theme reference
(#16120)
- Discard invalid declarations when parsing CSS (#16093)
- Do not emit empty CSS rules and at-rules (#16121)
- Handle
@variant
when at the top-level of a stylesheet (#16129)
4.0.1 - 2025-01-29
Added
- Include
:open
pseudo-class in existing open
variant (#15349)
Fixed
- Remove invalid
min-w/h-none
utilities (#15845)
- Discard CSS variable shorthand utilities that don't use valid CSS variables (#15738)
- Ensure font-size utilities with
none
modifier have a line-height set e.g. text-sm/none
(#15921)
- Ensure font-size utilities with unknown modifier don't generate CSS (#15921)
- Don’t suggest font weight utilities more than once (#15857)
- Suggest container query variants (#15857)
- Disable bare value suggestions when not using the
--spacing
variable (#15857)
- Ensure suggested classes are properly sorted (#15857)
- Don’t look at .gitignore files outside initialized repos (#15941)
- Find utilities when using the Svelte class shorthand syntax across multiple lines (#15974)
- Find utilities when using the Angular class shorthand syntax (#15974)
- Find utilities when using functions inside arrays (#15974)
- Ensure that
@tailwindcss/browser
does not pollute the global namespace (#15978)
- Ensure that
tailwind-merge
is not scanned when using the Vite plugin (#16005)
- Ensure CSS theme variables are available within shadow roots (#15975)
- Fix crash when project lives in the
/
directory (#15988)
- Ensure custom variants have a non-empty selector list (#16009)
- Upgrade: Ensure JavaScript config files on different drives are correctly migrated (#15927)
- Upgrade: Migrate
leading-[1]
to leading-none
(#16004)
- Upgrade: Do not migrate arbitrary leading utilities to bare values (#16004)
4.0.0 - 2025-01-21
Added
- New high-performance engine — where full builds are up to 5x faster, and incremental builds are over 100x faster — and measured in microseconds.
- Designed for the modern web — built on cutting-edge CSS features like cascade layers, registered custom properties with
@property
, and color-mix()
.
- Simplified installation — fewer dependencies, zero configuration, and just a single line of code in your CSS file.
- First-party Vite plugin — tight integration for maximum performance and minimum configuration.
- Automatic content detection — all of your template files are discovered automatically, with no configuration required.
- Built-in import support — no additional tooling necessary to bundle multiple CSS files.
- CSS-first configuration — a reimagined developer experience where you customize and extend the framework directly in CSS instead of a JavaScript configuration file.
- CSS theme variables — all of your design tokens exposed as native CSS variables so you can access them anywhere.
- Dynamic utility values and variants — stop guessing what values exist in your spacing scale, or extending your configuration for things like basic data attributes.
- Modernized P3 color palette — a redesigned, more vivid color palette that takes full advantage of modern display technology.
- Container queries — first-class APIs for styling elements based on their container size, no plugins required.
- New 3D transform utilities — transform elements in 3D space directly in your HTML.
- Expanded gradient APIs — radial and conic gradients, interpolation modes, and more.
- @starting-style support — a new variant you can use to create enter and exit transitions, without the need for JavaScript.
- not-* variant — style an element only when it doesn't match another variant, custom selector, or media or feature query.
- Even more new utilities and variants — including support for
color-scheme
, field-sizing
, complex shadows, inert
, and more.
Start using Tailwind CSS v4.0 today by installing it in a new project, or playing with it directly in the browser on Tailwind Play.
For existing projects, we've published a comprehensive upgrade guide and built an automated upgrade tool to get you on the latest version as quickly and painlessly as possible.
For a deep-dive into everything that's new, check out the announcement post.
Added
- Add support for using
@variant
to use variants in your CSS (#15663)
- Include
outline-color
when transitioning colors (#15690)
Fixed
- Add missing
main
and browser
fields for @tailwindcss/browser
(#15594)
- Support escaping
*
in theme namespace syntax (e.g.: --color-\*: initial;
) (#15603)
- Respect
@theme
options when resolving values in custom functional utilities (#15623)
- Discard invalid variants (e.g.
data-checked-[selected=1]:*
) (#15629)
- Ensure
-outline-offset-*
utilities are suggested in IntelliSense (#15646)
- Write to
stdout
when --output
is set to -
or omitted with @tailwindcss/cli
(#15656)
- Prevent
not-*
from being used with variants that have multiple sibling rules (#15689)
- Upgrade (experimental): Pretty print
--spacing(…)
to prevent ambiguity (#15596)
Changed
- Use more modern
--alpha(color / 50%)
syntax instead of --alpha(color, 50%)
(#15665)
- Rename
@variant
to @custom-variant
(#15663)
- Change
outline-hidden
to set outline-style: none
except in forced colors mode (#15690)
Added
- Add
@tailwindcss/browser
package to run Tailwind CSS in the browser (#15558)
- Add
@reference "…"
API as a replacement for the previous @import "…" reference
option (#15565)
- Add support for defining functional utilities in CSS (#15455)
- Add new
--spacing(…)
, --alpha(…)
, and --theme(…)
CSS functions (#15572)
- Add musl-based Linux builds of the standalone CLI (#15567)
- Improve performance of internal AST manipulations (#15529)
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)
- Only compile arbitrary values ending in
]
(#15503)
- Ensure
@apply
rules are processed in the correct order (#15542)
- Allow negative utility names in
@utility
(#15573)
- Remove all
@keyframes
contributed by JavaScript plugins when using @reference
imports (#15581)
- Upgrade (experimental): Do not extract class names from functions (e.g.
shadow
in filter: 'drop-shadow(…)'
) (#15566)
- Upgrade (experimental): Migrate
theme(spacing.2)
to --spacing(2)
(#15579)
- Upgrade (experimental): Migrate
theme(…)
to --theme(…)
(#15579)
Changed
- Remove
--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)
- Use Vite post-processor APIs for processing Svelte
<style>
blocks (#15436)
- Remove
@property
fallback rules for Firefox (#15622)
Fixed
- Ensure
Symbol.dispose
and Symbol.asyncDispose
are polyfilled (#15404)
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)
Fixed
- Ensure
@import "…" reference
never generates utilities (#15307)
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)
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)
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])(https://github.com/tailwindlabs/tailwindcss/pull/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)
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)
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)
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)
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)
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)
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)
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-*
utilities 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)
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)
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)
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)
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)
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)
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)
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)
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)
Added
- Add opacity modifier support to the
theme()
function in plugins (#14348)
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
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
3.4.17 - 2024-12-17
Fixed
- Work around Node v22.12+ issue (#15421)
3.4.16 - 2024-12-03
Fixed
- Ensure the TypeScript types for
PluginsConfig
allow undefined
values (#14668)
Changed
- Bumped lilconfig to v3.x (#15289)
3.4.15 - 2024-11-14
- Bump versions for security vulnerabilities (#14697)
- Ensure the TypeScript types for the
boxShadow
theme configuration allows arrays (#14856)
- Set fallback for opacity variables to ensure setting colors with the
selection:*
variant works in Chrome 131 (#15003)
3.4.14 - 2024-10-15
Fixed
- Don't set
display: none
on elements that use hidden="until-found"
(#14625)
3.4.13 - 2024-09-23
Fixed
- Improve source glob verification performance (#14481)
3.4.12 - 2024-09-17
Fixed
- Ensure using
@apply
with utilities that use @defaults
works with rules defined in the base layer when using optimizeUniversalDefaults
(#14427)
3.4.11 - 2024-09-11
Fixed
- Allow
anchor-size(…)
in arbitrary values (#14393)
3.4.10 - 2024-08-13
Fixed
- Bump versions of plugins in the Standalone CLI (#14185)
3.4.9 - 2024-08-08
Fixed
- No longer warns when broad glob patterns are detecting
vendor
folders
3.4.8 - 2024-08-07
Fixed
- Fix minification when using nested CSS (#14105)
- Warn when broad glob patterns are used in the content configuration (#14140)
3.4.7 - 2024-07-25
Fixed
- Fix class detection in Slim templates with attached attributes and ID (#14019)
- Ensure attribute values in
data-*
and aria-*
modifiers are always quoted in the generated CSS (#14037)
3.4.6 - 2024-07-16
Fixed
- Fix detection of some utilities in Slim/Pug templates (#14006)
Changed
- Loosen
:is()
wrapping rules when using an important selector (#13900)
3.4.5 - 2024-07-15
Fixed
- Disable automatic
var()
injection for anchor properties (#13826)
- Use no value instead of
blur(0px)
for backdrop-blur-none
and blur-none
utilities (#13830)
- Add
.mts
and .cts
config file detection (#13940)
- Don't generate utilities like
px-1
unnecessarily when using utilities like px-1.5
(#13959)
- Always generate
-webkit-backdrop-filter
for backdrop-*
utilities (#13997)
3.4.4 - 2024-06-05
Fixed
- Make it possible to use multiple
<alpha-value>
placeholders in a single color definition (#13740)
- Don't prefix classes in arbitrary values of
has-*
, group-has-*
, and peer-has-*
variants (#13770)
- Support negative values for
{col,row}-{start,end}
utilities (#13781)
- Update embedded browserslist database (#13792)
3.4.3 - 2024-03-27
Fixed
- Revert changes to glob handling (#13384)
3.4.2 - 2024-03-27
Fixed
- Ensure max specificity of
0,0,1
for button and input Preflight rules (#12735)
- Improve glob handling for folders with
(
, )
, [
or ]
in the file path (#12715)
- Split
:has
rules when using experimental.optimizeUniversalDefaults
(#12736)
- Sort arbitrary properties alphabetically across multiple class lists (#12911)
- Add
mix-blend-plus-darker
utility (#12923)
- Ensure dashes are allowed in variant modifiers (#13303)
- Fix crash showing completions in Intellisense when using a custom separator (#13306)
- Transpile
import.meta.url
in config files (#13322)
- Reset letter spacing for form elements (#13150)
- Fix missing
xx-large
and remove double x-large
absolute size (#13324)
- Don't error when encountering nested CSS unless trying to
@apply
a class that uses nesting (#13325)
- Ensure that arbitrary properties respect
important
configuration (#13353)
- Change dark mode selector so
@apply
works correctly with pseudo elements (#13379)
3.4.1 - 2024-01-05
Fixed
- Don't remove keyframe stops when using important utilities (#12639)
- Don't add spaces to gradients and grid track names when followed by
calc()
(#12704)
- Restore old behavior for
class
dark mode strategy (#12717)
- Improve glob handling for folders with
(
, )
, [
or ]
in the file path (#12715)
Added
- Add new
selector
and variant
strategies for dark mode (#12717)
Changed
- Support
rtl
and ltr
variants on same element as dir
attribute (#12717)
3.4.0 - 2023-12-19
Added
- Add
svh
, lvh
, and dvh
values to default height
/min-height
/max-height
theme (#11317)
- Add
has-*
variants for :has(...)
pseudo-class (#11318)
- Add
text-wrap
utilities including text-balance
and text-pretty
(#11320, #12031)
- Extend default
opacity
scale to include all steps of 5 (#11832)
- Update Preflight
html
styles to include shadow DOM :host
pseudo-class (#11200)
- Increase default values for
grid-rows-*
utilities from 1–6 to 1–12 (#12180)
- Add
size-*
utilities (#12287)
- Add utilities for CSS subgrid (#12298)
- Add spacing scale to
min-w-*
, min-h-*
, and max-w-*
utilities (#12300)
- Add
forced-color-adjust
utilities (#11931)
- Add
forced-colors
variant (#11694, #12582)
- Add
appearance-auto
utility (#12404)
- Add logical property values for
float
and clear
utilities (#12480)
- Add
*
variant for targeting direct children (#12551)
Changed
- Simplify the
sans
font-family stack (#11748)
- Disable the tap highlight overlay on iOS (#12299)
- Improve relative precedence of
rtl
, ltr
, forced-colors
, and dark
variants (#12584)
3.3.7 - 2023-12-18
Fixed
- Fix support for container query utilities with arbitrary values (#12534)
- Fix custom config loading in Standalone CLI (#12616)
3.3.6 - 2023-12-04
Fixed
- Don’t add spaces to negative numbers following a comma (#12324)
- Don't emit
@config
in CSS when watching via the CLI (#12327)
- Improve types for
resolveConfig
(#12272)
- Ensure configured
font-feature-settings
for mono
are included in Preflight (#12342)
- Improve candidate detection in minified JS arrays (without spaces) (#12396)
- Don't crash when given applying a variant to a negated version of a simple utility (#12514)
- Fix support for slashes in arbitrary modifiers (#12515)
- Fix source maps of variant utilities that come from an
@layer
rule (#12508)
- Fix loading of built-in plugins when using an ESM or TypeScript config with the Standalone CLI (#12506)
3.3.5 - 2023-10-25
Fixed
- Fix incorrect spaces around
-
in calc()
expression (#12283)
3.3.4 - 2023-10-24
Fixed
- Improve normalisation of
calc()
-like functions (#11686)
- Skip
calc()
normalisation in nested theme()
calls (#11705)
- Fix incorrectly generated CSS when using square brackets inside arbitrary properties (#11709)
- Make
content
optional for presets in TypeScript types (#11730)
- Handle variable colors that have variable fallback values (#12049)
- Batch reading content files to prevent
too many open files
error (#12079)
- Skip over classes inside
:not(…)
when nested in an at-rule (#12105)
- Update types to work with
Node16
module resolution (#12097)
- Don’t crash when important and parent selectors are equal in
@apply
(#12112)
- Eliminate irrelevant rules when applying variants (#12113)
- Improve RegEx parser, reduce possibilities as the key for arbitrary properties (#12121)
- Fix sorting of utilities that share multiple candidates (#12173)
- Ensure variants with arbitrary values and a modifier are correctly matched in the RegEx based parser (#12179)
- Fix crash when watching renamed files on FreeBSD (#12193)
- Allow plugins from a parent document to be used in an iframe (#12208)
- Add types for
tailwindcss/nesting
(#12269)
- Bump
jiti
, fast-glob
, and browserlist
dependencies (#11550)
- Improve automatic
var
injection for properties that accept a <dashed-ident>
(#12236)
3.3.3 - 2023-07-13
Fixed
- Fix issue where some pseudo-element variants generated the wrong selector (#10943, #10962, #11111)
- Make font settings propagate into buttons, inputs, etc. (#10940)
- Fix parsing of
theme()
inside calc()
when there are no spaces around operators (#11157)
- Ensure
repeating-conic-gradient
is detected as an image (#11180)
- Move unknown pseudo-elements outside of
:is
by default (#11345)
- Escape animation names when prefixes contain special characters (#11470)
- Don't prefix arbitrary classes in
group
and peer
variants (#11454)
- Sort classes using position of first matching rule (#11504)
- Allow variant to be an at-rule without a prelude (#11589)
- Make PostCSS plugin async to improve performance (#11548)
- Don’t error when a config file is missing (f97759f)
Added
- Add
aria-busy
utility (#10966)
Changed
- Reset padding for
<dialog>
elements in preflight (#11069)
3.3.2 - 2023-04-25
Fixed
- Don’t move unknown pseudo-elements to the end of selectors (#10943, #10962)
- Inherit gradient stop positions when using variants (#11002)
- Honor default
to
position of gradient when using implicit transparent colors (#11002)
- Ensure
@tailwindcss/oxide
doesn't leak in the stable engine (#10988)
- Ensure multiple
theme(spacing[5])
calls with bracket notation in arbitrary properties work (#11039)
- Normalize arbitrary modifiers (#11057)
Changed
- Drop support for Node.js v12 (#11089)
3.3.1 - 2023-03-30
Fixed
- Fix edge case bug when loading a TypeScript config file with webpack (#10898)
- Fix variant,
@apply
, and important
selectors when using :is()
or :has()
with pseudo-elements (#10903)
- Fix
safelist
config types (#10901)
- Fix build errors caused by
@tailwindcss/line-clamp
warning (#10915, #10919)
- Fix "process is not defined" error (#10919)
3.3.0 - 2023-03-27
Added
- Support ESM and TypeScript config files (#10785)
- Extend default color palette with new 950 shades (#10879)
- Add
line-height
modifier support to font-size
utilities (#9875)
- Add support for using variables as arbitrary values without
var(...)
(#9880, #9962)
- Add logical properties support for inline direction (#10166)
- Add
hyphens
utilities (#10071)
- Add
from-{position}
, via-{position}
and to-{position}
utilities (#10886)
- Add
list-style-image
utilities (#10817)
- Add
caption-side
utilities (#10470)
- Add
line-clamp
utilities from @tailwindcss/line-clamp
to core (#10768, #10876, #10862)
- Add
delay-0
and duration-0
utilities (#10294)
- Add
justify-normal
and justify-stretch
utilities (#10560)
- Add
content-normal
and content-stretch
utilities (#10645)
- Add
whitespace-break-spaces
utility (#10729)
- Add support for configuring default
font-variation-settings
for a font-family
(#10034, #10515)
Fixed
- Disallow using multiple selectors in arbitrary variants (#10655)
- Sort class lists deterministically for Prettier plugin (#10672)
- Ensure CLI builds have a non-zero exit code on failure (#10703)
- Ensure module dependencies for value
null
, is an empty Set
(#10877)
- Fix format assumption when resolving module dependencies (#10878)
Changed
- Mark
rtl
and ltr
variants as stable and remove warnings (#10764)
- Use
inset
instead of top
, right
, bottom
, and left
properties (#10765)
- Make
dark
and rtl
/ltr
variants insensitive to DOM order (#10766)
- Use
:is
to make important selector option insensitive to DOM order (#10835)
3.2.7 - 2023-02-16
Fixed
- Fix use of
:where(.btn)
when matching !btn
(#10601)
- Revert including
outline-color
in transition
and transition-colors
by default (#10604)
3.2.6 - 2023-02-08
Fixed
- Fix installation failing with yarn and pnpm by dropping
oxide-api-shim
(add1636)
3.2.5 - 2023-02-08
Added
- Add standalone CLI build for 64-bit Windows on ARM (
node16-win-arm64
) (#10001)
Fixed
- Cleanup unused
variantOrder
(#9829)
- Fix
foo-[abc]/[def]
not being handled correctly (#9866)
- Add container queries plugin to standalone CLI (#9865)
- Support renaming of output files by PostCSS plugins in CLI (#9944)
- Improve return value of
resolveConfig
, unwrap ResolvableTo
(#9972)
- Clip unbalanced brackets in arbitrary values (#9973)
- Don’t reorder webkit scrollbar pseudo elements (#9991)
- Deterministic sorting of arbitrary variants (#10016)
- Add
data
key to theme types (#10023)
- Prevent invalid arbitrary variant selectors from failing the build (#10059)
- Properly handle subtraction followed by a variable (#10074)
- Fix missing
string[]
in the theme.dropShadow
types (#10072)
- Update list of length units (#10100)
- Fix not matching arbitrary properties when closely followed by square brackets (#10212)
- Allow direct nesting in
root
or @layer
nodes (#10229)
- Don't prefix classes in arbitrary variants (#10214)
- Fix perf regression when checking for changed content (#10234)
- Fix missing
blocklist
member in the Config
type (#10239)
- Escape group names in selectors (#10276)
- Consider earlier variants before sorting functions (#10288)
- Allow variants with slashes (#10336)
- Ensure generated CSS is always sorted in the same order for a given set of templates (#10382)
- Handle variants when the same class appears multiple times in a selector (#10397)
- Handle group/peer variants with quoted strings (#10400)
- Parse alpha value from rgba/hsla colors when using variables (#10429)
- Sort by
layer
inside variants
layer (#10505)
- Add
--watch=always
option to prevent exit when stdin closes (#9966)
Changed
- Alphabetize
theme
keys in default config (#9953)
- Update esbuild to v17 (#10368)
- Include
outline-color
in transition
and transition-colors
utilities (#10385)
3.2.4 - 2022-11-11
Added
- Add
blocklist
option to prevent generating unwanted CSS (#9812)
Fixed
- Fix watching of files on Linux when renames are involved (#9796)
- Make sure errors are always displayed when watching for changes (#9810)
3.2.3 - 2022-11-09
Fixed
- Fixed use of
raw
content in the CLI (#9773)
- Pick up changes from files that are both context and content deps (#9787)
- Sort pseudo-elements ONLY after classes when using variants and
@apply
(#9765)
- Support important utilities in the safelist (pattern must include a
!
) (#9791)
3.2.2 - 2022-11-04
Fixed
- Escape special characters in resolved content base paths (#9650)
- Don't reuse container for array returning variant functions (#9644)
- Exclude non-relevant selectors when generating rules with the important modifier (#9677)
- Fix merging of arrays during config resolution (#9706)
- Ensure configured
font-feature-settings
are included in Preflight (#9707)
- Fix fractional values not being parsed properly inside arbitrary properties (#9705)
- Fix incorrect selectors when using
@apply
in selectors with combinators and pseudos (#9722)
- Fix cannot read properties of undefined (reading 'modifier') (#9656, aa979d6)
3.2.1 - 2022-10-21
Fixed
- Fix missing
supports
in types (#9616)
- Fix missing PostCSS dependencies in the CLI (#9617)
- Ensure
micromatch
is a proper CLI dependency (#9620)
- Ensure modifier values exist when using a
modifiers
object for matchVariant
(ba6551d)
3.2.0 - 2022-10-19
Added
- Add new
@config
directive (#9405)
- Add new
relative: true
option to resolve content paths relative to the config file (#9396)
- Add new
supports-*
variant (#9453)
- Add new
min-*
and max-*
variants (#9558)
- Add new
aria-*
variants (#9557, #9588)
- Add new
data-*
variants (#9559, #9588)
- Add new
break-keep
utility for word-break: keep-all
(#9393)
- Add new
collapse
utility for visibility: collapse
(#9181)
- Add new
fill-none
utility for fill: none
(#9403)
- Add new
stroke-none
utility for stroke: none
(#9403)
- Add new
place-content-baseline
utility for place-content: baseline
(#9498)
- Add new
place-items-baseline
utility for place-items: baseline
(#9507)
- Add new
content-baseline
utility for align-content: baseline
(#9507)
- Add support for configuring default
font-feature-settings
for a font family (#9039)
- Add standalone CLI build for 32-bit Linux on ARM (
node16-linux-armv7
) (#9084)
- Add future flag to disable color opacity utility plugins (#9088)
- Add negative value support for
outline-offset
(#9136)
- Add support for modifiers to
matchUtilities
(#9541)
- Allow negating utilities using
min
/max
/clamp
(#9237)
- Implement fallback plugins when there is ambiguity between plugins when using arbitrary values (#9376)
- Support
sort
function in matchVariant
(#9423)
- Upgrade to
postcss-nested
v6.0 (#9546)
Fixed
- Use absolute paths when resolving changed files for resilience against working directory changes (#9032)
- Fix ring color utility generation when using
respectDefaultRingColorOpacity
(#9070)
- Sort tags before classes when
@apply
-ing a selector with joined classes (#9107)
- Remove invalid
outline-hidden
utility (#9147)
- Honor the
hidden
attribute on elements in preflight (#9174)
- Don't stop watching atomically renamed files (#9173, #9215)
- Fix duplicate utilities issue causing memory leaks (#9208)
- Fix
fontFamily
config TypeScript types (#9214)
- Handle variants on complex selector utilities (#9262)
- Fix shared config mutation issue (#9294)
- Fix ordering of parallel variants (#9282)
- Handle variants in utility selectors using
:where()
and :has()
(#9309)
- Improve data type analysis for arbitrary values (#9320)
- Don't emit generated utilities with invalid uses of theme functions (#9319)
- Revert change that only listened for stdin close on TTYs (#9331)
- Ignore unset values (like
null
or undefined
) when resolving the classList for intellisense (#9385)
- Improve type checking for formal syntax (#9349, #9448)
- Fix incorrect required
content
key in custom plugin configs (#9502, #9545)
- Fix content path detection on Windows (#9569)
- Ensure
--content
is used in the CLI when passed (#9587)
3.1.8 - 2022-08-05
Fixed
- Don’t prefix classes within reused arbitrary variants (#8992)
- Fix usage of alpha values inside single-named colors that are functions (#9008)
- Fix
@apply
of user utilities when negative and non-negative versions both exist (#9027)
3.1.7 - 2022-07-29
Fixed
- Don't rewrite source maps for
@layer
rules (#8971)
Added
- Added types for
resolveConfig
(#8924)
3.1.6 - 2022-07-11
Fixed
- Fix usage on Node 12.x (b4e637e)
- Handle theme keys with slashes when using
theme()
in CSS (#8831)
3.1.5 - 2022-07-07
Added
- Support configuring a default
font-weight
for each font size utility (#8763)
- Add support for alpha values in safe list (#8774)
Fixed
- Improve types to support fallback values in the CSS-in-JS syntax used in plugin APIs (#8762)
- Support including
tailwindcss
and autoprefixer
in postcss.config.js
in standalone CLI (#8769)
- Fix using special-characters as prefixes (#8772)
- Don’t prefix classes used within arbitrary variants (#8773)
- Add more explicit types for the default theme (#8780)
3.1.4 - 2022-06-21
Fixed
- Provide default to
<alpha-value>
when using theme()
(#8652)
- Detect arbitrary variants with quotes (#8687)
- Don’t add spaces around raw
/
that are preceded by numbers (#8688)
3.1.3 - 2022-06-14
Fixed
- Fix extraction of multi-word utilities with arbitrary values and quotes (#8604)
- Fix casing of import of
corePluginList
type definition (#8587)
- Ignore PostCSS nodes returned by
addVariant
(#8608)
- Fix missing spaces around arithmetic operators (#8615)
- Detect alpha value in CSS
theme()
function when using quotes (#8625)
- Fix "Maximum call stack size exceeded" bug (#8636)
- Allow functions returning parallel variants to mutate the container (#8622)
- Remove text opacity CSS variables from
::marker
(#8622)
3.1.2 - 2022-06-10
Fixed
- Ensure
\
is a valid arbitrary variant token (#8576)
- Enable
postcss-import
in the CLI by default in watch mode (#8574, #8580)
3.1.1 - 2022-06-09
Fixed
- Fix candidate extractor regression (#8558)
- Split
::backdrop
into separate defaults group (#8567)
- Fix postcss plugin type (#8564)
- Fix class detection in markdown code fences and slim templates (#8569)
3.1.0 - 2022-06-08
Fixed
- Types: allow for arbitrary theme values (for 3rd party plugins) (#7926)
- Don’t split vars with numbers in them inside arbitrary values (#8091)
- Require matching prefix when detecting negatives (#8121)
- Handle duplicate At Rules without children (#8122)
- Allow arbitrary values with commas in
@apply
(#8125)
- Fix intellisense for plugins with multiple
@apply
rules (#8213)
- Improve type detection for arbitrary color values (#8201)
- Support PostCSS config options in config file in CLI (#8226)
- Remove default
[hidden]
style in preflight (#8248)
- Only check selectors containing base apply candidates for circular dependencies (#8222)
- Rewrite default class extractor (#8204)
- Move
important
selector to the front when @apply
-ing selector-modifying variants in custom utilities (#8313)
- Error when registering an invalid custom variant (#8345)
- Create tailwind.config.cjs file in ESM package when running init (#8363)
- Fix
matchVariant
that use at-rules and placeholders (#8392)
- Improve types of the
tailwindcss/plugin
(#8400)
- Allow returning parallel variants from
addVariant
or matchVariant
callback functions (#8455)
- Try using local
postcss
installation first in the CLI (#8270)
- Allow default ring color to be a function (#7587)
- Don't inherit
to
value from parent gradients (#8489)
- Remove process dependency from log functions (#8530)
- Ensure we can use
@import 'tailwindcss/...'
without node_modules (#8537)
Changed
- Only apply hover styles when supported (future) (#8394)
- Respect default ring color opacity (future) (#8448, 3f4005e)
Added
- Support PostCSS
Document
nodes (#7291)
- Add
text-start
and text-end
utilities (#6656)
- Support customizing class name when using
darkMode: 'class'
(#5800)
- Add
--poll
option to the CLI (#7725)
- Add new
border-spacing
utilities (#7102)
- Add
enabled
variant (#7905)
- Add TypeScript types for the
tailwind.config.js
file (#7891)
- Add
backdrop
variant (#7924, #8526)
- Add
grid-flow-dense
utility (#8193)
- Add
mix-blend-plus-lighter
utility (#8288)
- Add arbitrary variants (#8299)
- Add experimental
matchVariant
API (#8310, 34fd0fb8)
- Add
prefers-contrast
media query variants (#8410)
- Add opacity support when referencing colors with
theme
function (#8416)
- Add
postcss-import
support to the CLI (#8437)
- Add
optional
variant (#8486)
- Add
<alpha-value>
placeholder support for custom colors (#8501)
3.0.24 - 2022-04-12
Fixed
- Prevent nesting plugin from breaking other plugins (#7563)
- Recursively collapse adjacent rules (#7565)
- Preserve source maps for generated CSS (#7588)
- Split box shadows on top-level commas only (#7479)
- Use local user CSS cache for
@apply
(#7524)
- Invalidate context when main CSS changes (#7626)
- Only add
!
to selector class matching template candidate when using important modifier with multi-class selectors (#7664)
- Correctly parse and prefix animation names with dots (#7163)
- Fix extraction from template literal/function with array (#7481)
- Don't output unparsable arbitrary values (#7789)
- Fix generation of
div:not(.foo)
if .foo
is never defined (#7815)
- Allow for custom properties in
rgb
, rgba
, hsl
and hsla
colors (#7933)
- Remove autoprefixer as explicit peer-dependency to avoid invalid warnings in situations where it isn't actually needed (#7949)
- Ensure the
percentage
data type is validated correctly (#8015)
- Make sure
font-weight
is inherited by form controls in all browsers (#8078)
Changed
- Replace
chalk
with picocolors
(#6039)
- Replace
cosmiconfig
with lilconfig
(#6039)
- Update
cssnano
to avoid removing empty variables when minifying (#7818)
3.0.23 - 2022-02-16
Fixed
- Remove opacity variables from
:visited
pseudo class (#7458)
- Support arbitrary values + calc + theme with quotes (#7462)
- Don't duplicate layer output when scanning content with variants + wildcards (#7478)
- Implement
getClassOrder
instead of sortClassList
(#7459)
3.0.22 - 2022-02-11
Fixed
- Temporarily move
postcss
to dependencies (#7424)
3.0.21 - 2022-02-10
Fixed
- Move prettier plugin to dev dependencies (#7418)
3.0.20 - 2022-02-10
Added
- Expose
context.sortClassList(classes)
(#7412)
3.0.19 - 2022-02-07
Fixed
- Fix preflight border color fallback (#7288)
- Correctly parse shadow lengths without a leading zero (#7289)
- Don't crash when scanning extremely long class candidates (#7331)
- Use less hacky fix for URLs detected as custom properties (#7275)
- Correctly generate negative utilities when dash is before the prefix (#7295)
- Detect prefixed negative utilities in the safelist (#7295)
3.0.18 - 2022-01-28
Fixed
- Fix
@apply
order regression (in addComponents
, addUtilities
, ...) (#7232)
- Quick fix for incorrect arbitrary properties when using URLs (#7252)
3.0.17 - 2022-01-26
Fixed
- Remove false positive warning in CLI when using the
--content
option (#7220)
3.0.16 - 2022-01-24
Fixed
- Ensure to transpile the PostCSS Nesting plugin (tailwindcss/nesting) (#7080)
- Improve various warnings (#7118)
- Fix grammatical mistake (cca5a38)
3.0.15 - 2022-01-15
Fixed
- Temporarily remove optional chaining in nesting plugin (#7077)
3.0.14 - 2022-01-14
Added
- Show warnings for invalid content config (#7065)
Fixed
- Only emit utility/component variants when those layers exist (#7066)
- Ensure nesting plugins can receive options (#7016)
3.0.13 - 2022-01-11
Fixed
- Fix consecutive builds with at apply producing different CSS (#6999)
3.0.12 - 2022-01-07
Fixed
- Allow use of falsy values in theme config (#6917)
- Ensure we can apply classes that are grouped with non-class selectors (#6922)
- Improve standalone CLI compatibility on Linux by switching to the
linuxstatic
build target (#6914)
- Ensure
@apply
works consistently with or without @layer
(#6938)
- Only emit defaults when using base layer (#6926)
- Emit plugin defaults regardless of usage (#6926)
- Move default border color back to preflight (#6926)
- Change
experimental.optimizeUniversalDefaults
to only work with @tailwind base
(#6926)
3.0.11 - 2022-01-05
Fixed
- Preserve casing of CSS variables added by plugins (#6888)
- Ignore content paths that are passed in but don't actually exist (#6901)
- Revert change that applies Tailwind's defaults in isolated environments like CSS modules (9fdc391)
3.0.10 - 2022-01-04
Fixed
- Fix
@apply
in files without @tailwind
directives (#6580, #6875)
- CLI: avoid unnecessary writes to output files (#6550)
Added
- Allow piping data into the CLI (#6876)
3.0.9 - 2022-01-03
Fixed
- Improve
DEBUG
flag (#6797, #6804)
- Ensure we can use
<
and >
characters in modifiers (#6851)
- Validate
theme()
works in arbitrary values (#6852)
- Properly detect
theme()
value usage in arbitrary properties (#6854)
- Improve collapsing of duplicate declarations (#6856)
- Remove support for
TAILWIND_MODE=watch
(#6858)
3.0.8 - 2021-12-28
Fixed
- Reduce specificity of
abbr
rule in preflight (#6671)
- Support HSL with hue units in arbitrary values (#6726)
- Add
node16-linux-arm64
target for standalone CLI (#6693)
3.0.7 - 2021-12-17
Fixed
- Don't mutate custom color palette when overriding per-plugin colors (#6546)
- Improve circular dependency detection when using
@apply
(#6588)
- Only generate variants for non-
user
layers (#6589)
- Properly extract classes with arbitrary values in arrays and classes followed by escaped quotes (#6590)
- Improve jsx interpolation candidate matching (#6593)
- Ensure
@apply
of a rule inside an AtRule works (#6594)
3.0.6 - 2021-12-16
Fixed
- Support square bracket notation in paths (#6519)
- Ensure all plugins are executed for a given candidate (#6540)
3.0.5 - 2021-12-15
Fixed
- Revert: add
li
to list-style reset (9777562d)
3.0.4 - 2021-12-15
Fixed
- Insert always-on defaults layer in correct spot (#6526)
3.0.3 - 2021-12-15
Added
- Warn about invalid globs in
content
(#6449)
- Add standalone tailwindcss CLI (#6506)
- Add
li
to list-style reset (00f60e6)
Fixed
- Don't output unparsable values (#6469)
- Fix text decoration utilities from overriding the new text decoration color/style/thickness utilities when used with a modifier (#6378)
- Move defaults to their own always-on layer (#6500)
- Support negative values in safelist patterns (#6480)
3.0.2 - 2021-12-13
Fixed
- Temporarily disable optimize universal defaults, fixes issue with transforms/filters/rings not being
@apply
-able in CSS modules/Svelte components/Vue components (#6461)
3.0.1 - 2021-12-10
Fixed
- Ensure complex variants with multiple classes work (#6311)
- Re-add
default
interop to public available functions (#6348)
- Detect circular dependencies when using
@apply
(#6365)
- Fix defaults optimization when vendor prefixes are involved (#6369)
3.0.0 - 2021-12-09
Fixed
- Enforce the order of some variants (like
before
and after
) (#6018)
Added
- Add
placeholder
variant (#6106)
- Add composable
touch-action
utilities (#6115)
- Add support for "arbitrary properties" (#6161)
- Add
portrait
and landscape
variants (#6046)
- Add
text-decoration-style
, text-decoration-thickness
, and text-underline-offset
utilities (#6004)
- Add
menu
reset to preflight (#6213)
- Allow
0
as a valid length
value (#6233, #6259)
- Add CSS functions to data types (#6258)
- Support negative values for
scale-*
utilities (c48e629)
- Improve
length
data type, by validating each value individually (#6283)
Changed
- Deprecate
decoration-slice
and decoration-break
in favor box-decoration-slice
and box-decoration-break
(non-breaking) (#6004)
Changed
- Don't use pointer cursor on disabled buttons by default (#5772)
- Set default content value in preflight instead of within each before/after utility (#5820)
- Remove
prefix
as a function (#5829)
Added
- Add
flex-basis
utilities (#5671)
- Make negative values a first-class feature (#5709)
- Add
fit-content
values for min/max-width/height
utilities (#5638)
- Add
min/max-content
values for min/max-height
utilities (#5729)
- Add all standard
cursor-*
values by default (#5734)
- Add
grow-*
and shrink-*
utilities, deprecate flex-grow-*
and flex-shrink-*
(#5733)
- Add
text-decoration-color
utilities (#5760)
- Add new declarative
addVariant
API (#5809)
- Add first-class
print
variant for targeting printed media (#5885)
- Add
outline-style
, outline-color
, outline-width
and outline-offset
utilities (#5887)
- Add full color palette for
fill-*
and stroke-*
utilities (#5933)
- Add composable API for colored box shadows (#5979)
Fixed
- Configure chokidar's
awaitWriteFinish
setting to avoid occasional stale builds on Windows (#5774)
- Fix CLI
--content
option (#5775)
- Fix before/after utilities overriding custom content values at larger breakpoints (#5820)
- Cleanup duplicate properties (#5830)
- Allow
_
inside url()
when using arbitrary values (#5853)
- Prevent crashes when using comments in
@layer
AtRules (#5854)
- Handle color transformations properly with
theme(...)
for all relevant plugins (#4533, #5871)
- Ensure
@apply
-ing a utility with multiple definitions works (#5870)
Changed
- Remove AOT engine, make JIT the default (#5340)
- Throw when trying to
@apply
the group
class (#4666)
- Remove dependency on
modern-normalize
, inline and consolidate with Preflight (#5358)
- Enable extended color palette by default with updated color names (#5384)
- Move
vertical-align
values to config file instead of hard-coding (#5487)
- Rename
overflow-clip
to text-clip
and overflow-ellipsis
to text-ellipsis
(#5630)
Added
- Add native
aspect-ratio
utilities (#5359)
- Unify config callback helpers into single object (#5382)
- Preserve original color format when adding opacity whenever possible (#5154)
- Add
accent-color
utilities (#5387)
- Add
scroll-behavior
utilities (#5388)
- Add
will-change
utilities (#5448)
- Add
text-indent
utilities (#5449)
- Add
column
utilities (#5457)
- Add
border-hidden
utility (#5485)
- Add
align-sub
and align-super
utilities by default (#5486)
- Add
break-before
, break-inside
and break-after
utilities (#5530)
- Add
file
variant for ::file-selector-button
pseudo element (#4936)
- Add comprehensive arbitrary value support (#5568)
- Add
touch-action
utilities (#5603)
- Add
inherit
to default color palette (#5597)
- Add
overflow-clip
, overflow-x-clip
and overflow-y-clip
utilities (#5630)
- Add
[open]
variant (#5627)
- Add
scroll-snap
utilities (#5637)
- Add
border-x
and border-y
width and color utilities (#5639)
Fixed
- Fix defining colors as functions when color opacity plugins are disabled (#5470)
- Fix using negated
content
globs (#5625)
- Fix using backslashes in
content
globs (#5628)
2.2.19 - 2021-10-29
Fixed
- Ensure
corePlugins
order is consistent in AOT mode (#5928)
2.2.18 - 2021-10-29
Fixed
- Bump versions for security vulnerabilities (#5924)
2.2.17 - 2021-10-13
Fixed
- Configure chokidar's
awaitWriteFinish
setting to avoid occasional stale builds on Windows (#5758)
2.2.16 - 2021-09-26
Fixed
- JIT: Properly handle animations that use CSS custom properties (#5602)
2.2.15 - 2021-09-10
Fixed
- Ensure using CLI without
-i
for input file continues to work even though deprecated (#5464)
2.2.14 - 2021-09-08
Fixed
- Only use
@defaults
in JIT, switch back to clean-css
in case there's any meaningful differences in the output (bf248cb)
2.2.13 - 2021-09-08
Fixed
- Replace
clean-css
with cssnano
for CDN builds to fix minified builds (75cc3ca)
2.2.12 - 2021-09-08
Fixed
- Ensure that divide utilities inject a default border color (#5438)
2.2.11 - 2021-09-07
Fixed
- Rebundle to fix missing CLI peer dependencies
2.2.10 - 2021-09-06
Fixed
- Fix build error when using
presets: []
in config file (#4903)
Added
- Reintroduce universal selector optimizations under experimental
optimizeUniversalDefaults
flag (a9e160c)
2.2.9 - 2021-08-30
Fixed
- JIT: Fix
@apply
ing utilities that contain variants + the important modifier (#4854)
- JIT: Don't strip "null" when parsing tracked file paths (#5008)
- Pin
clean-css
to v5.1.4 to fix empty CSS variables in CDN builds (#5338)
2.2.8 - 2021-08-27
Fixed
- Improve accessibility of default link focus styles in Firefox (#5082)
- JIT: Fix animation variants corrupting keyframes rules (#5223)
- JIT: Ignore escaped commas when splitting selectors to apply prefixes (#5239)
- Nesting: Maintain PostCSS node sources when handling
@apply
(#5249)
- JIT: Fix support for animation lists (#5252)
- JIT: Fix arbitrary value support for
object-position
utilities (#5245)
- CLI: Abort watcher if stdin is closed to avoid zombie processes (#4997)
- JIT: Ignore arbitrary values with unbalanced brackets (#5293)
2.2.7 - 2021-07-23
Fixed
- Temporarily revert runtime performance optimizations introduced in v2.2.5, use universal selector again (#5060)
2.2.6 - 2021-07-21
Fixed
- Fix issue where base styles not generated for translate transforms in JIT (#5038)
2.2.5 - 2021-07-21
Added
- Added
self-baseline
utility (I know this is a patch release, no one's going to die relax) (#5000)
Changed
JIT: Optimize universal selector usage by inlining only the relevant selectors (#4850))
This provides a very significant performance boost on pages with a huge number of DOM nodes, but there's a chance it could be a breaking change in very rare edge cases we haven't thought of. Please open an issue if anything related to shadows, rings, transforms, filters, or backdrop-filters seems to be behaving differently after upgrading.
Fixed
- Fix support for
step-start
and step-end
in animation utilities (#4795))
- JIT: Prevent presence of
!*
in templates from ruining everything (#4816))
- JIT: Improve support for quotes in arbitrary values (#4817))
- Fix filter/backdrop-filter/transform utilities being inserted into the wrong position if not all core plugins are enabled (#4852))
- JIT: Fix
@layer
rules being mistakenly inserted during incremental rebuilds (#4853))
- Improve build performance for projects with many small non-Tailwind stylesheets (#4644)
- Ensure
[hidden]
works as expected on elements where we override the default display
value in Preflight (#4873)
- Fix variant configuration not being applied to
backdropOpacity
utilities (#4892)
2.2.4 - 2021-06-23
Fixed
- Remove
postinstall
script that was preventing people from installing the library (1eacfb9)
2.2.3 - 2021-06-23
Added
- Pass extended color palette to theme closures so it can be used without installing Tailwind when using
npx tailwindcss
(359252c)
Fixed
- JIT: Explicitly error when
-
is used as a custom separator (#4704)
- JIT: Don't add multiple
~
when stacking peer-*
variants (#4757)
- Remove outdated focus style fix in Preflight (#4780)
- Enable
purge
if provided on the CLI (#4772)
- JIT: Fix error when not using a config file with postcss-cli (#4773)
- Fix issue with
resolveConfig
not being importable in Next.js pages (#4725)
2.2.2 - 2021-06-18
Fixed
- JIT: Reintroduce
transform
, filter
, and backdrop-filter
classes purely to create stacking contexts to minimize the impact of the breaking change (#4700)
2.2.1 - 2021-06-18
Fixed
- Recover from errors gracefully in CLI watch mode (#4693)
- Fix issue with media queries not being generated properly when using PostCSS 7 (#4695)
2.2.0 - 2021-06-17
Changed
JIT: Use "tracking" context by default instead of "watching" context for improved reliability with most bundlers (#4514)
Depending on which tooling you use, you may need to explicitly set TAILWIND_MODE=watch
until your build runner has been updated to support PostCSS's dir-dependency
message type.
Added
- Add
background-origin
utilities (#4117)
- Improve
@apply
performance in projects that process many CSS sources (#3178)
- JIT: Don't use CSS variables for color utilities if color opacity utilities are disabled (#3984)
- JIT: Redesign
matchUtilities
API to make it more suitable for third-party use (#4232)
- JIT: Support applying important utility variants (#4260)
- JIT: Support coercing arbitrary values when the type isn't detectable (#4263)
- JIT: Support for
raw
syntax in purge
config (#4272)
- Add
empty
variant (#3298)
- Update
modern-normalize
to v1.1 (#4287)
- Implement
theme
function internally, remove postcss-functions
dependency (#4317)
- Add
screen
function to improve nesting plugin compatibility (#4318)
- JIT: Add universal shorthand color opacity syntax (#4348)
- JIT: Add
@tailwind variants
directive to replace @tailwind screens
(#4356)
- JIT: Add support for PostCSS
dir-dependency
messages in TAILWIND_DISABLE_TOUCH
mode (#4388)
- JIT: Add per-side border color utilities (#4404)
- JIT: Add support for
before
and after
pseudo-element variants and content
utilities (#4461)
- Add new
transform
and extract
APIs to simplify PurgeCSS/JIT customization (#4469)
- JIT: Add exhaustive pseudo-class and pseudo-element variant support (#4482)
- JIT: Add
caret-color
utilities (#4499)
- Rename
lightBlue
to sky
, emit console warning when using deprecated name (#4513)
- New CLI with improved JIT support,
--watch
mode, and more (#4526, 4558)
- JIT: Add new
peer-*
variants for styling based on sibling state (#4556)
- Expose
safelist
as a top-level option under purge
for both JIT and classic engines (#4580)
- JIT: Remove need for
transform
class when using classes like scale-*
, rotate-*
, etc. (#4604)
- JIT: Remove need for
filter
and backdrop-filter
classes when using classes like contrast-*
, backdrop-blur-*
, etc. (#4614)
- Support passing a custom path for your PostCSS configuration in the Tailwind CLI (#4607)
- Add
blur-none
by default with intent to deprecate blur-0
(#4614)
Fixed
- JIT: Improve support for Svelte class bindings (#4187)
- JIT: Improve support for
calc
and var
in arbitrary values (#4147)
- Convert
hsl
colors to hsla
when transforming for opacity support instead of rgba
(#3850)
- Fix
backdropBlur
variants not being generated (#4188)
- Improve animation value parsing (#4250)
- Ignore unknown object types when hashing config (82f4eaa)
- Ensure variants are grouped properly for plugins with order-dependent utilities (#4273)
- JIT: Fix temp file storage when node temp directories are kept on a different drive than the project itself (#4044)
- Support border-opacity utilities alongside default
border
utility (#4277)
- JIT: Fix source maps for expanded
@tailwind
directives (2f15411)
- JIT: Ignore whitespace when collapsing adjacent rules (15642fb)
- JIT: Generate group parent classes correctly when using custom separator (#4508)
- JIT: Fix incorrect stacking of multiple
group
variants (#4551)
- JIT: Fix memory leak due to holding on to unused contexts (#4571)
Internals
- Add integration tests for popular build runners (#4354)
2.1.4 - 2021-06-02
Fixed
- Skip
raw
PurgeCSS sources when registering template dependencies (#4542)
2.1.3 - 2021-06-01
Fixed
- Register PurgeCSS paths as PostCSS dependencies to guarantee proper cache-busting in webpack 5 (#4530)
2.1.2 - 2021-04-23
Fixed
- Fix issue where JIT engine would generate the wrong CSS when using PostCSS 7 (#4078)
2.1.1 - 2021-04-05
Fixed
- Fix issue where JIT engine would fail to compile when a source path isn't provided by the build runner for the current input file (#3978)
2.1.0 - 2021-04-05
Added
- Add alternate JIT engine (in preview) (#3905)
- Add new
mix-blend-mode
and background-blend-mode
utilities (#3920)
- Add new
box-decoration-break
utilities (#3911)
- Add new
isolation
utilities (#3914)
- Add
inline-table
display utility (#3563)
- Add
list-item
display utility (#3929)
- Add new
filter
and backdrop-filter
utilities (#3923)
2.0.4 - 2021-03-17
Fixed
- Pass full
var(--bg-opacity)
value as opacityValue
when defining colors as functions
2.0.3 - 2021-02-07
Fixed
- Ensure sourcemap input is deterministic when using
@apply
in Vue components (#3356)
- Ensure placeholder opacity is consistent across browsers (#3308)
- Fix issue where
theme()
didn't work with colors defined as functions (#2919)
- Enable
dark
variants by default for color opacity utilities (#2975)
Added
- Add support for a
tailwind.config.cjs
file in Node ESM projects (#3181)
- Add version comment to Preflight (#3255)
- Add
cursor-help
by default (#3199)
2.0.2 - 2020-12-11
Fixed
- Fix issue with
@apply
not working as expected with !important
inside an at-rule (#2824)
- Fix issue with
@apply
not working as expected with defined classes (#2832)
- Fix memory leak, and broken
@apply
when splitting up files (#3032)
Added
- Add default values for the
ring
utility (#2951)
2.0.1 - 2020-11-18
- Nothing, just the only thing I could do when I found out npm won't let me publish the same version under two tags.
2.0.0 - 2020-11-18
Added
- Add redesigned color palette (#2623, 700866c, #2633)
- Add dark mode support (#2279, #2631)
- Add
overflow-ellipsis
and overflow-clip
utilities (#1289)
- Add
transform-gpu
to force hardware acceleration on transforms when desired (#1380)
- Extend default spacing scale (#2630, 7f05204)
- Add spacing scale to
inset
plugin (#2630)
- Add percentage sizes to
translate
, inset
, and height
plugins (#2630, 5259560)
- Extend default font size scale (#2609, #2619)
- Support using
@apply
with complex classes, including variants like lg:hover:bg-blue-500
(#2159)
- Add new
2xl
breakpoint at 1536px by default (#2609)
- Add default line-height values for font-size utilities (#2609)
- Support defining theme values using arrays for CSS properties that support comma separated values (e13f083c4)
- Enable
group-hover
for color plugins, boxShadow
, and textDecoration
by default (28985b6, f6923b1)
- Enable
focus
for z-index utilities by default (ae5b3d3)
- Support
extend
in variants
configuration (#2651)
- Add
max-w-prose
class by default (#2574)
- Support flattening deeply nested color objects (#2148)
- Support defining presets as functions (#2680)
- Support deep merging of objects under
extend
(#2679, #2700)
- Enable
focus-within
for all plugins that have focus
enabled by default (1a21f072, f6923b1)
- Added new
ring
utilities for creating outline/focus rings using box shadows (#2747, 879f088, e0788ef)
- Added
5
and 95
to opacity scale (#2747)
- Add support for default duration and timing function values whenever enabling transitions (#2755)
Changed
- Completely redesign color palette (#2623, 700866c, #2633)
- Drop support for Node 8 and 10 (#2582)
- Removed
target
feature and dropped any compatibility with IE 11 (#2571)
- Upgrade to PostCSS 8 (but include PostCSS 7 compatibility build) (729b400, 1d8679d, c238ed1)
- Removed
shadow-outline
, shadow-solid
, and shadow-xs
by default in favor of new ring
API (#2747)
- Switch
normalize.css
to modern-normalize
(#2572)
- Rename
whitespace-no-wrap
to whitespace-nowrap
(#2664)
- Rename
flex-no-wrap
to flex-nowrap
(#2676)
- Remove
clearfix
utility, recommend flow-root
instead (#2766)
- Disable
hover
and focus
for fontWeight
utilities by default (f6923b1)
- Remove
grid-gap
fallbacks needed for old versions of Safari (5ec45fa)
- Change special use of 'default' in config to 'DEFAULT' (#2580)
- New
@apply
implementation, slight backwards incompatibilities with previous behavior (#2159)
- Make
theme
retrieve the expected resolved value when theme value is complex (e13f083c4)
- Move
truncate
class to textOverflow
core plugin (#2562)
- Remove
scrolling-touch
and scrolling-auto
utilities (#2573)
- Modernize default system font stacks (#1711)
- Upgrade to PurgeCSS 3.0 (8e4e0a0)
- Change default
text-6xl
font-size to 3.75rem instead of 4rem (#2619)
- Ignore
[hidden]
elements within space
and divide
utilities instead of template
elements (#2642)
- Automatically prefix keyframes and animation names when a prefix is configured (#2621, #2641)
- Merge
extend
objects deeply by default (#2679)
- Respect
preserveHtmlElements
option even when using custom PurgeCSS extractor (#2704)
- Namespace all internal custom properties under
tw-
to avoid collisions with end-user custom properties (#2771)
Fixed
- Fix issue where
ring-offset-0
didn't work due to unitless 0
in calc
function (3de0c48)
Changed
- Don't override ring color when overriding ring width with a variant (e40079a)
Fixed
- Prevent shadow/ring styles from cascading to children (e40079a)
- Ensure rings have a default color even if
colors.blue.500
is not present in config (e40079a)
Added
- Add scripts for generating a PostCSS 7 compatible build alongside PostCSS 8 version (#2773)
Changed
- All custom properties have been internally namespaced under
tw-
to avoid collisions with end-user custom properties (#2771)
Changed
All custom properties have been internally namespaced under tw-
to avoid collisions with end-user custom properties (#2771) I made a git boo-boo, check alpha.23 instead
Changed
- Upgrade to PostCSS 8, Autoprefixer 10, move
postcss
and autoprefixer
to peerDependencies (729b400)
Changed
- Remove
clearfix
utility, recommend flow-root
instead (#2766)
Fixed
- Don't crash when color palette is empty (278c203)
Changed
black
and white
have been added to colors.js
(b3ed724)
Fixed
- Add support for colors as closures to
ringColor
and ringOffsetColor
, previously would crash build (62a47f9)
Changed
- Remove
grid-gap
fallbacks needed for old versions of Safari (5ec45fa)
Added
- Enable
focus
, focus-within
, and dark
variants (when enabled) for all ring utilities by default (e0788ef)
Added
- Added
ring-inset
utility for rendering rings as inset shadows (879f088)
Changed
ringWidth
utilities always reset ring styles to ensure no accidental variable inheritance through the cascade (879f088)
Added
- Enable
focus-within
for outline
utilities by default (f6923b1)
- Enable
focus-within
for ringWidth
utilities by default (f6923b1)
- Enable
group-hover
for boxShadow
utilities by default (f6923b1)
- Enable
group-hover
and focus-within
for textDecoration
utilities by default (f6923b1)
Changed
- Disable
hover
and focus
for fontWeight
utilities by default (f6923b1)
Added
- Add support for default duration and timing function values whenever enabling transitions (#2755)
Fixed
- Prevent
boxShadow
utilities from overriding ring shadows added by components like in the custom forms plugin (c3dd3b6)
Fixed
- Convert
none
to 0 0 #0000
when used for shadows to ensure compatibility with ring
utilities (4eecc27)
Added
- Added new
ring
utilities (#2747)
- Added
5
and 95
to opacity scale (#2747)
Changed
- Removed
shadow-outline
, shadow-solid
, and shadow-xs
in favor of new ring
API (#2747)
Added
- Added
shadow-solid
utility, a 2px solid shadow that uses the current text color (369cfae)
- Enable
focus-within
where useful by default (1a21f072)
Changed
- Update
shadow-outline
to use the new blue (b078238)
Added
- Add
11
to spacing scale (7f05204)
- Add percentage-based height values (5259560)
- Add indigo to the color palette by default (700866c)
Changed
- Use
coolGray
as the default gray (700866c)
Changed
- Revert upgrading to PostCSS 8 lol
Changed
- Respect
preserveHtmlElements
option even when using custom PurgeCSS extractor (#2704)
- Set font-family and line-height to
inherit
on body
to behave more like v1.x (#2729)
Changed
Added
- Support deep merging of arrays of objects under
extend
(#2700)
Added
- Support flattening deeply nested color objects (#2148)
- Support defining presets as functions (#2680)
Changed
- Merge
extend
objects deeply by default (#2679)
- Rename
flex-no-wrap
to flex-nowrap
(#2676)
Added
- Support
extend
in variants
configuration (#2651)
- Add
max-w-prose
class by default (#2574)
Changed
- Revert use of logical properties for
space
and divide
utilities (#2644)
space
and divide
utilities ignore elements with [hidden]
now instead of only ignoring template
elements (#2642)
- Set default font on
body
, not just html
(#2643)
- Automatically prefix keyframes and animation names when a prefix is configured (#2621, #2641)
- Rename
whitespace-no-wrap
to whitespace-nowrap
(#2664)
1.9.6 - 2020-10-23
Changed
The presets
feature had unexpected behavior where a preset config without its own presets
key would not extend the default config. (#2662)
If you were depending on this unexpected behavior, just add presets: []
to your own preset to exclude the default configuration.
Added
- Added dark mode support (#2279, #2631)
- Added
overflow-ellipsis
and overflow-clip
utilities (#1289)
- Add
transform-gpu
to force hardware acceleration on transforms when beneficial (#1380)
- Extended spacing scale (#2630)
- Add spacing scale to
inset
plugin (#2630)
- Enable useful relative sizes for more plugins (#2630)
- Extend font size scale (#2609, #2619)
- Support using
@apply
with complex classes (#2159)
- Add new
2xl
breakpoint (#2609)
- Add default line-height values for font-size utilities (#2609)
- Support defining theme values using arrays wherever it makes sense (box-shadow, transition-property, etc.) (e13f083c4)
- Enable
group-hover
for color utilities by default (28985b6)
- Enable
focus
for z-index utilities by default (ae5b3d3)
Changed
- New
@apply
implementation, slight backwards incompatibilities with previous behavior (#2159)
- Move
truncate
class to textOverflow
core plugin (#2562)
- Removed
target
feature and dropped any compatibility with IE 11 (#2571)
- Switch
normalize.css
to modern-normalize
(#2572)
- Remove
scrolling-touch
and scrolling-auto
utilities (#2573)
- Change special use of 'default' in config to 'DEFAULT' (#2580)
- Drop support for Node 8 and 10 (#2582)
- Modernize default system font stacks (#1711)
- Upgrade to PurgeCSS 3.0
Upgrade to PostCSS 8.0 Reverted for now
- Use logical properties for
space
and divide
utilities (#1883)
- Make
theme
retrieve the expected resolved value when theme value is complex (e13f083c4)
- Adjust default font-size scale to include 60px instead of 64px (#2619)
- Update default colors in Preflight to match new color palette (#2633)
1.9.5 - 2020-10-19
Fixed
- Fix issue where using
theme
with default line-heights did not resolve correctly
1.9.4 - 2020-10-17
Fixed
- Fix issue changing plugins defined using the
withOptions
API would not trigger rebuilds in watch processes
1.9.3 - 2020-10-16
Fixed
Changed
- Remove console warnings about upcoming breaking changes
1.9.2 - 2020-10-14
Fixed
- Merge plugins when merging config with preset (#2561
- Use
word-wrap
and overflow-wrap
together, not one or the other since word-wrap
is IE-only
1.9.1 - 2020-10-14
Fixed
- Don't import
corePlugins
in resolveConfig
to avoid bundling browser-incompatible code (#2548)
1.9.0 - 2020-10-12
Added
- Add new
presets
config option (#2474)
- Scaffold new
tailwind.config.js
files with available future
flags commented out (#2379)
- Add
col-span-full
and row-span-full
(#2471)
- Make
outline
configurable, outline-none
more accessible by default, and add outline-black
and outline-white
(#2460)
- Add additional small
rotate
and skew
values (#2528)
- Add
xl
, 2xl
, and 3xl
border radius values (#2529)
- Add new utilities for
grid-auto-columns
and grid-auto-rows
(#2531)
- Promote
defaultLineHeights
and standardFontWeights
from experimental to future
Fixed
- Don't escape keyframe values (#2432)
- Use
word-wrap
instead of overflow-wrap
in ie11
target mode (#2391)
Experimental
- Add experimental
2xl
breakpoint (#2468)
- Rename
{u}-max-content
and {u}-min-content
utilities to {u}-max
and {u}-min
in experimental extended spacing scale (#2532)
- Support disabling dark mode variants globally (#2530)
1.8.13 - 2020-10-09
Fixed
- Support defining colors as closures even when opacity variables are not supported (#2536)
1.8.12 - 2020-10-07
Fixed
- Reset color opacity variable in utilities generated using closure colors (#2515)
1.8.11 - 2020-10-06
- Make
tailwindcss.plugin
work in ESM environments for reasons
1.8.10 - 2020-09-14
Fixed
- Prevent new
dark
experiment from causing third-party dark
variants to inherit stacking behavior (#2382)
1.8.9 - 2020-09-13
Fixed
- Add negative spacing values to inset plugin in the
extendedSpacingScale
experiment (#2358)
- Fix issue where
!important
was stripped from declarations within rules that used @apply
with applyComplexClasses
(#2376)
Changed
1.8.8 - 2020-09-11
Fixed
- Register dark mode plugin outside of
resolveConfig
code path (#2368)
1.8.7 - 2020-09-10
Fixed
- Fix issue where classes in escaped strings (like
class=\"block\"
) weren't extracted properly for purging (#2364)
1.8.6 - 2020-09-09
Fixed
- Fix issue where container padding not applied when using object syntax (#2353)
1.8.5 - 2020-09-07
Fixed
- Fix issue where
resolveConfig
didn't take into account configs added by feature flags (#2347)
1.8.4 - 2020-09-06
Fixed
- Fix issue where inserting extra PurgeCSS control comments could break integrated PurgeCSS support
- Fix issue where dark variant in 'class' mode was incompatible with 'group-hover' variant (#2337)
- Support basic nesting structure with
@apply
when using the applyComplexClasses
experiment (#2271)
Changed
- Rename
font-hairline
and font-thin
to font-thin
and font-extralight
behind standardFontWeights
flag (experimental until v1.9.0) (#2333)
1.8.3 - 2020-09-05
Fixed
- Fix issue where
font-variant-numeric
utilities would break in combination with most CSS minifier configurations (f3660ce)
- Only warn about
conservative
purge mode being deprecated once per process (58781b5)
1.8.2 - 2020-09-04
Fixed
- Fix bug where dark mode variants would cause an error if you had a
plugins
array in your config (#2322)
1.8.1 - 2020-09-04
Fixed
- Fix bug in the new font-variant-numeric utilities which broke the whole rule (#2318)
- Fix bug while purging (#2320)
1.8.0 - 2020-09-04
Added
- Dark mode variant (experimental) (#2279)
- New
preserveHtmlElements
option for purge
(#2283)
- New
layers
mode for purge
(#2288)
- New
font-variant-numeric
utilities (#2305)
- New
place-items
, place-content
, place-self
, justify-items
, and justify-self
utilities (#2306)
- Support configuring variants as functions (#2309)
Changed
- CSS within
@layer
at-rules are now grouped with the corresponding @tailwind
at-rule (#2312)
Deprecated
conservative
purge mode, deprecated in favor of layers
1.7.6 - 2020-08-29
Fixed
- Fix bug where the new experimental
@apply
implementation broke when applying a variant class with the important option globally enabled
1.7.5 - 2020-08-28
Changed
- Update lodash to latest to silence security warnings
1.7.4 - 2020-08-26
Added
- Add new -p flag to CLI to quickly scaffold a
postcss.config.js
file
Changed
- Make
@apply
insensitive to whitespace in the new applyComplexClasses
experiment
Fixed
- Fix bug where the new
applyComplexClasses
experiment didn't behave as expected with rules with multiple selectors, like .foo, .bar { color: red }
1.7.3 - 2020-08-20
Changed
- Log feature flag notices to stderr instead of stdout to preserve compatibility with pipe-based build systems
- Add missing bg-none utility for disabling background images
Fixed
- Fix bug that prevented defining colors as closures when the
gradientColorStops
plugin was enabled
1.7.2 - 2020-08-19
Added
- Reuse generated CSS as much as possible in long-running processes instead of needlessly recalculating
1.7.1 - 2020-08-28
Changed
- Don't issue duplicate flag notices in long-running build processes
1.7.0 - 2020-08-28
Added
- Gradients
- New background-clip utilities
- New
contents
display utility
- Default letter-spacing per font-size
- Divide border styles
- Access entire config object from plugins
- Define colors as closures
- Use
@apply
with variants and other complex classes (experimental)
- New additional color-palette (experimental)
- Extended spacing scale (experimental)
- Default line-heights per font-size by default (experimental)
- Extended font size scale (experimental)
Deprecated
1.6.3 - 2020-08-18
Fixed
- Fixes issue where motion-safe and motion-reduce variants didn't stack correctly with group-hover variants
1.6.2 - 2020-08-03
Fixed
- Fixes issue where
@keyframes
respecting the important option would break animations in Chrome
1.6.1 - 2020-08-02
Fixed
- Fixes an issue where animation keyframes weren't included in the build without @tailwind base (#2108)
1.6.0 - 2020-07-28
Added
- Animation support
- New
prefers-reduced-motion
variants
- New
overscroll-behaviour
utilities
- Generate CSS without an input file
1.5.2 - 2020-07-21
Fixed
- Fixes issue where you could no longer use
@apply
with unprefixed class names if you had configured a prefix
1.5.1 - 2020-07-15
Fixed
- Fixes accidental breaking change where adding component variants using the old manual syntax (as recommended in the docs) stopped working
1.5.0 - 2020-07-15
Added
- Component
variants
support
- Responsive
container
variants
- New
focus-visible
variant
- New
checked
variant
v0.0.0-658250a96 - 2020-07-12 [YANKED]
No release notes
1.4.6 - 2020-05-08
Changed
- Explicitly error when using a class as the important config option instead of just generating the wrong CSS
1.4.5 - 2020-05-06
Fixed
- Fix bug where the
divideColor
plugin was using the wrong '' in IE11 target mode
1.4.4 - 2020-05-01
Fixed
- Fix bug where target: 'browserslist' didn't work, only
target: ['browserslist', {...}]
did
1.4.3 - 2020-05-01
Changed
- Don't generate unnecessary CSS in color plugins when color opacity utilities are disabled
1.4.2 - 2020-05-01
Fixed
- Fix issue where
purge: { enabled: false }
was ignored, add purge: false
shorthand
1.4.1 - 2020-04-30
Changed
- Improve built-in PurgeCSS extractor to better support Haml and Slim templates
1.4.0 - 2020-04-29
Added
- New color opacity utilities
- Built-in PurgeCSS
- IE 11 target mode (experimental)
1.3.5 - 2020-04-23
Removed
- Drop
fs-extra
dependency to ^8.0.0
to preserve Node 8 compatibility until Tailwind 2.0
Fixed
- Fix missing unit in calc bug in space plugin (
space-x-0
didn't work for example)
1.3.4 - 2020-04-21
Fixed
- Fix bug where
divide-{x/y}-0
utilities didn't work due to missing unit in calc
call
1.3.3 - 2020-04-21
Added
- Add forgotten responsive variants for
space
, divideWidth
, and divideColor
utilities
1.3.1 - 2020-04-21
Fixed
- Fix bug where the
space-x
utilities were not being applied correctly due to referencing --space-y-reverse
instead of --space-x-reverse
1.3.0 - 2020-04-21
Added
- New
space
and divide
layout utilities
- New
transition-delay
utilities
- New
group-focus
variant
- Support for specifying a default line-height for each font-size utility
- Support for breakpoint-specific padding for
container
class
- Added
current
to the default color palette
- New
inline-grid
utility
- New
flow-root
display utility
- New
clear-none
utility
1.2.0 - 2020-02-05
Added
- CSS Transition support
- CSS Transform support
- CSS Grid support
- Added
max-w-{screen}
utilities
- Added
max-w-none
utility
- Added
rounded-md
utility
- Added
shadow-sm
utility
- Added
shadow-xs
utility
- Added
stroke-width
utilities
- Added fixed line-height utilities
- Added additional display utilities for table elements
- Added box-sizing utilities
- Added clear utilities
- Config file dependencies are now watchable
- Added new
plugin
and plugin.withOptions
APIs
Changed
- Allow plugins to extend the user's config
Added
- Add additional fixed-size line-height utilities
Removed
- Remove Inter from font-sans, plan to add later under new class
Added
- Add system-ui to default font stack
- Add shadow-xs, increase shadow-sm alpha to 0.05
- Support import syntax even without postcss-import
- Alias tailwind bin to tailwindcss
- Add fill/stroke to transition-colors
- Add transition-shadow, add box-shadow to default transition
- Combine gap/columnGap/rowGap
- Add grid row utilities
- Add skew utilities
Changed
- Use font-sans as default font
Added
- Adds missing dependency
resolve
which is required for making config dependencies watchable
Added
- CSS Transition support
- CSS Transform support
- CSS Grid support
- New
max-w-{screen}
utilities
- Added
max-w-none
utility
- Added "Inter" to the default sans-serif font stack
- Add
rounded-md
utility
- Add
shadow-sm
utility
- Added stroke-width utilities
- Added additional display utilities for table elements
- Added box-sizing utilities
- Added clear utilities
- Config file dependencies are now watchable
- Allow plugins to extend the user's config
- Add new
plugin
and plugin.withOptions
APIs
[v1.2.0-canary.3] - 2020-01-08 [YANKED]
No release notes
1.1.4 - 2019-11-25
Changed
- Note: Although this is a bugfix it could affect your site if you were working around the bug in your own code by not prefixing the
.group
class. I'm sorry 😞
Fixed
- Fixes a bug where the
.group
class was not receiving the user's configured prefix when using the prefix
option
Changed
- Don't watch
node_modules
files for changes
Fixed
- Fixes significant build performance regression in
v1.2.0-canary.0
1.1.3 - 2019-10-22
Fixed
- Fixes an issue where in some cases function properties in the user's
theme
config didn't receive the second utils argument
Added
- Automatically watch all config file dependencies (plugins, design tokens imported from other files, etc.) for changes when build watcher is running
- Add
justify-evenly
utility
Changed
- Allow plugins to add their own config file to be resolved with the user's custom config
1.1.2 - 2019-08-14
Fixed
- Fixes a bug with horizontal rules where they were displayed with a 2px border instead of a 1px border
- Fixes a bug with horizontal rules where they were rendered with default top/bottom margin
1.1.1 - 2019-08-09
Fixed
- Fixes issue where values like
auto
would fail to make it through the default negative margin config
1.1.0 - 2019-08-06
Added
- Added utilities for screenreader visibility
- Added utilities for placeholder color
- First, last, even, and odd child variants
- Disabled variant
- Visited variant
- Increase utility specificity using a scope instead of !important
- Add hover/focus variants for opacity by default
- Added
border-double
utility
- Support negative prefix for boxShadow and letterSpacing plugins
- Support passing config path via object
Fixed
- Placeholders no longer have a default opacity
- Make horizontal rules visible by default
- Generate correct negative margins when using calc
1.0.6 - 2019-08-01
Fixed
- Fixes issue where modifiers would mutate nested rules
1.0.5 - 2019-07-11
Added
- Support built-in variants for utilities that include pseudo-elements
Changed
- Update several dependencies, including postcss-js which fixes an issue with using
!important
directly in Tailwind utility plugins
1.0.4 - 2019-06-11
Changed
- Increase precision of percentage width values to avoid 1px rounding issues in grid layouts
1.0.3 - 2019-06-01
Changed
- Throws an error when someone tries to use
@tailwind preflight
instead of @tailwind base
, this is the source of many support requests
1.0.2 - 2019-05-27
Fixed
- Fixes a bug where
@screen
rules weren't bubbled properly when nested in plugins
1.0.1 - 2019-05-13
Fixed
- Fixes a bug where global variants weren't properly merged
1.0.0 - 2019-05-13
No release notes
Changed
- Use
9999
and -9999
for order-last
and order-first
utilities respectively
Added
- Add
bg-repeat-round
and bg-repeat-space
utilities
- Add
select-all
and select-auto
utilities
Changed
- Make all utilities responsive by default
Added
- Adds
responsive
variants for the new order utilities by default, should have been there all along
Fixed
- Fixes a bug where you couldn't extend the margin config
Added
- Added support for negative inset (
-top-6
, -right-4
) and z-index (-z-10
) utilities, using the same negative key syntax supported by the margin plugin
- Add missing fractions as well as x/12 fractions to width scale
- Add
order
utilities
- Add
cursor-text
class by default
Changed
- Make it possible to access your fully merged config file in JS
Removed
- Removed
negativeMargin
plugin, now the regular margin
plugin supports generating negative classes (like -mx-6
) by using negative keys in the config, like -6
Changed
- Make it possible to disable all core plugins using
corePlugins: false
- Make it possible to configure a single list of variants that applies to all utility plugins
- Make it possible to safelist which core plugins should be enabled
Fixed
- Fix a bug where stroke and fill plugins didn't properly handle the next object syntax for color definitions
- Fix a bug where you couldn't have comments near
@apply
directives
Added
- Add the
container
key to the scaffolded config file when generated with --full
Changed
- Bumps node dependency to 8.9.0 so we can keep our default config file clean, 6.9.0 is EOL next month anyways
Removed
- Removes
SFMono-Regular
from the beginning of the default monospace font stack, it has no italic support and Menlo looks better anyways
Fixed
- Fixes an issue where the user's config object was being mutated during processing (only affects @bradlc 😅)
- Fixes an issue where you couldn't use a closure to define theme sections under
extend
Added
- Support lazy evaluation in
theme.extend
Changed
- Use lighter default border color
- Revert #745 and use
bolder
for strong tags by default instead of fontWeight.bold
Changed
- Closures in the
theme
section of the config file are now passed a theme
function instead of an object
Fixed
- Fix issue where
@screen
didn't work at all 🙃
Added
- New config file structure
- New expanded default color palette
- New default
maxWidth
scale
- Added utilities for
list-style-type
and list-style-position
- Added
break-all
utility
Changed
object-position
utilities are now customizable under theme.objectPosition
cursor
utilities are now customizable under theme.cursors
flex-grow/shrink
utilities are now customizable under theme.flexGrow/flexShrink
- Default variant output position can be customized
- Extended default line-height scale
- Extended default letter-spacing scale
0.7.4 - 2019-01-23
Changed
- Update our PostCSS related dependencies
Fixed
- Fix bug where class names containing a
.
character had the responsive prefix added in the wrong place
0.7.3 - 2018-12-03
Changed
- Update Normalize to v8.0.1
0.7.2 - 2018-11-05
Added
- Add
--no-autoprefixer
option to CLI build
command
0.7.1 - 2018-11-05
Changed
- Update autoprefixer dependency
0.7.0 - 2018-10-31
Added
- Registering new variants from plugins
- Variant order can be customized per module
- Added focus-within variant
- Fancy CLI updates
- Option to generate config without comments
- Make configured prefix optional when using @apply
- Improve Flexbox behavior in IE 10/11
Changed
- Variant order in modules is now significant
- Normalize.css updated to v8.0.0
- Removed CSS fix for Chrome 62 button border radius change
0.6.6 - 2018-09-21
Changed
- Promote
shadowLookup
from experiment to official feature
0.6.5 - 2018-08-18
Fixed
- Fixes an issue where units were stripped from zero value properties
0.6.4 - 2018-07-16
Fixed
- Fixes an issue where changes to your configuration file were ignored when using
webpack --watch
0.6.3 - 2018-07-11
Fixed
- Fixes an issue where
@tailwind utilities
generated no output
0.6.2 - 2018-03-11
Added
- Added table layout utilities for styling tables
- Configuration can now be passed as an object
- Registering new variants from plugins (experimental)
- Allow
@apply
-ing classes that aren't defined but would be generated (experimental)
Changed
- Default config file changes
0.6.1 - 2018-06-22
Fixed
- Fix incorrect box-shadow syntax for the
.shadow-outline
utility 🤦♂️
0.6.0 - 2018-06-21
Added
- Added border collapse utilities for styling tables
- Added more axis-specific overflow utilities
- Added
.outline-none
utility for suppressing focus styles
- Added
.shadow-outline
utility as an alternative to default browser focus styles
- Extended default padding, margin, negative margin, width, and height scales
- Enable focus and hover variants for more modules by default
Changed
- Removed default
outline: none !important
styles from focusable but keyboard-inaccessible elements
- Moved screen prefix for responsive
group-hover
variants
- Default config file changes
0.5.3 - 2018-05-07
Changed
- Improve sourcemaps for replaced styles like
preflight
Fixed
- Fix bug where informational messages were being logged to stdout during build, preventing the ability to use Tailwind's output in Unix pipelines
0.5.2 - 2018-03-29
Fixed
- Fixes an issue with a dependency that had a security vulnerability
0.5.1 - 2018-03-13
Removed
- Reverts a change that renamed the
.roman
class to .not-italic
due to the fact that it breaks compatibility with cssnext: postcss/postcss-selector-not#10. We'll stick with .roman
for now with a plan to switch to .not-italic
in another breaking version should that issue get resolved in postcss-selector-not.
0.5.0 - 2018-03-13
Added
- Plugin system
- Added
.sticky position
utility
- Added
.cursor-wait
and .cursor-move
utilities
- Added
.bg-auto
background size utility
- Background sizes are now customizable
- Support for active variants
- Better postcss-import support
- Configuration options for the
.container
component
Changed
- The
.container
component is now a built-in plugin
- State variant precedence changes
- New config file keys
.overflow-x/y-scroll
now set overflow: scroll
instead of overflow: auto
.roman
renamed to .not-italic
0.4.3 - 2018-03-13
Changed
- Use
global.Object
to avoid issues with polyfills when importing the Tailwind config into other JS
0.4.2 - 2018-03-01
Added
- Add support for using a function to define class prefixes in addition to a simple string
Changed
- Improve the performance of @apply by using a lookup table instead of searching
Fixed
- Fix an issue where borders couldn't be applied to
img
tags without specifying a border style
0.4.1 - 2018-01-22
Changed
- Make default sans-serif font stack more future proof and safe to use with CSS
font
shorthand
- Replace stylefmt with Perfectionist to avoid weird stylelint conflicts
0.4.0 - 2017-12-15
Added
@apply
'd classes can now be made !important
explicitly
Changed
@apply
now strips !important
from any mixed in classes
- Default color palette tweaks
0.3.0 - 2017-12-01
Added
- Enable/disable modules and control which variants are generated for each
- Focus variants
- Group hover variants
- New
@variants
at-rule
- Customize the separator character
- Missing config keys now fallback to their default values
- New utilities
Changed
- Lists now have no margins by default
.pin
no longer sets width and height to 100%
- SVG
fill
no longer defaults to currentColor
0.2.2 - 2017-11-19
Fixed
- Fix issue with dist files not being published due to bug in latest npm
0.2.1 - 2017-11-18
Fixed
- Fix overly specific border-radius reset for Chrome 62 button styles
0.2.0 - 2017-11-17
Added
- Add a custom prefix to all utilities
- Optionally make all utilities
!important
- Round element corners independently
- Cascading border colors and styles
Changed
auto
is no longer a hard-coded margin value
- The
defaultConfig
function is now a separate module
- Rounded utilities now combine position and radius size
- Border width utilities no longer affect border color/style
@apply
is now very strict about what classes can be applied
- Add
options
key to your config
- Spacing, radius, and border width utility declaration order changes
0.1.6 - 2017-11-09
Fixed
- Fix CDN files not being published to npm
0.1.5 - 2017-11-08
Changed
- Apply the same default placeholder styling that's applied to inputs to textareas
Fixed
- Fix CLI tool not loading config files properly
0.1.4 - 2017-11-06
Added
- Autoprefix dist assets for quick hacking and prototyping
- Add
my-auto
, mt-auto
, and mb-auto
margin utilities
- Add
sans-serif
to end of default sans
font stack
Changed
- If using Webpack, it will now watch your config file changes
- When running
tailwind init [filename]
, automatically append .js
to filename if not present
- Support default fallback value in
config(...)
function, ie. config('colors.blue', #0000ff)
- Don't output empty media queries if Tailwind processes a file that doesn't use Tailwind
Fixed
- Move list utilities earlier in stylesheet to allow overriding with spacing utilities
0.1.3 - 2017-11-02
Added
- Add new
.scrolling-touch
and .scrolling-auto
utilities for controlling inertial scroll behavior on WebKit touch devices
- Generate separate dist files for preflight, utilities, and tailwind for CDN usage
0.1.2 - 2017-11-01
Changed
- Target Node 6.9.0 explicitly (instead of 8.6 implicitly) to support more users
Fixed
- Fix issue with config option not being respected in
tailwind build
0.1.1 - 2017-11-01
Fixed
- Fix
tailwind build
CLI command not writing output files
0.1.0 - 2017-11-01
Added