Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added
- Experimental: Add
@container-sizeutility (#18901)
4.1.16 - 2025-10-23
Fixed
- Discard candidates with an empty data type (#19172)
- Fix canonicalization of arbitrary variants with attribute selectors (#19176)
- Fix invalid colors due to nested
&(#19184) - Improve canonicalization for
& > :pseudoand& :pseudoarbitrary variants (#19178)
4.1.15 - 2025-10-20
Fixed
- Fix Safari devtools rendering issue due to
color-mixfallback (#19069) - Suppress Lightning CSS warnings about
:deep,:slotted, and:global(#19094) - Fix resolving theme keys when starting with the name of another theme key in JS configs and plugins (#19097)
- Allow named groups in combination with
not-*,has-*, andin-*(#19100) - Prevent important utilities from affecting other utilities (#19110)
- Don’t index into strings with the
theme(…)function (#19111) - Fix parsing issue when
\tis used in at-rules (#19130) - Upgrade: Canonicalize utilities containing
0values (#19095) - Upgrade: Migrate deprecated
break-wordstowrap-break-word(#19157)
Changed
- Remove the
postinstallscript from oxide ([#19149])(https://github.com/tailwindlabs/tailwindcss/pull/19149)
4.1.14 - 2025-10-01
Fixed
- Handle
'syntax in ClojureScript when extracting classes (#18888) - Handle
@variantinside@custom-variant(#18885) - Merge suggestions when using
@utility(#18900) - Ensure that file system watchers created when using the CLI are always cleaned up (#18905)
- Do not generate
grid-columnutilities when configuringgrid-column-startorgrid-column-end(#18907) - Do not generate
grid-rowutilities when configuringgrid-row-startorgrid-row-end(#18907) - Prevent duplicate CSS when overwriting a static utility with a theme key (#18056)
- Show Lightning CSS warnings (if any) when optimizing/minifying (#18918)
- Use
defaultexport condition for@tailwindcss/vite(#18948) - Re-throw errors from PostCSS nodes (#18373)
- Detect classes in markdown inline directives (#18967)
- Ensure files with only
@themeproduce no output when built (#18979) - Support Maud templates when extracting classes (#18988)
- Upgrade: Do not migrate
variant = 'outline'during upgrades (#18922) - Upgrade: Show version mismatch (if any) when running upgrade tool (#19028)
- Upgrade: Ensure first class inside
classNameis migrated (#19031) - Upgrade: Migrate classes inside
*ClassNameand*Classattributes (#19031)
4.1.13 - 2025-09-03
Changed
- Drop warning from browser build (#18731)
- Drop exact duplicate declarations when emitting CSS (#18809)
Fixed
- Don't transition
visibilitywhen usingtransition(#18795) - Discard matched variants with unknown named values (#18799)
- Discard matched variants with non-string values (#18799)
- Show suggestions for known
matchVariantvalues (#18798) - Replace deprecated
clipwithclip-pathinsr-only(#18769) - Hide internal fields from completions in
matchUtilities(#18820) - Ignore
.vercelfolders by default (can be overridden by@source …rules) (#18855) - Consider variants starting with
@-to be invalid (e.g.@-2xl:flex) (#18869) - Do not allow custom variants to start or end with a
-or_(#18867, #18872) - Upgrade: Migrate
ariatheme keys to@custom-variant(#18815) - Upgrade: Migrate
datatheme keys to@custom-variant(#18816) - Upgrade: Migrate
supportstheme keys to@custom-variant(#18817)
4.1.12 - 2025-08-13
Fixed
- Don't consider the global important state in
@apply(#18404) - Add missing suggestions for
flex-<number>utilities (#18642) - Fix trailing
)from interfering with extraction in Clojure keywords (#18345) - Detect classes inside Elixir charlist, word list, and string sigils (#18432)
- Track source locations through
@pluginand@config(#18345) - Allow boolean values of
process.env.DEBUGin@tailwindcss/node(#18485) - Ignore consecutive semicolons in the CSS parser (#18532)
- Center the dropdown icon added to an input with a paired datalist by default (#18511)
- Extract candidates in Slang templates (#18565)
- Improve error messages when encountering invalid functional utility names (#18568)
- Discard CSS AST objects with
falseorundefinedproperties (#18571) - Allow users to disable URL rebasing in
@tailwindcss/postcssviatransformAssetUrls: false(#18321) - Fix false-positive migrations in
addEventListenerand JavaScript variable names (#18718) - Fix Standalone CLI showing default Bun help when run via symlink on Windows (#18723)
- Read from
--border-color-*theme keys individe-*utilities for backwards compatibility (#18704) - Don't scan
.hdrand.exrfiles for classes by default (#18734)
4.1.11 - 2025-06-26
Fixed
- Add heuristic to skip candidate migrations inside
emit(…)(#18330) - Extract candidates with variants in Clojure/ClojureScript keywords (#18338)
- Document
--watch=alwaysin the CLI's usage (#18337) - Add support for Vite 7 to
@tailwindcss/vite(#18384)
4.1.10 - 2025-06-11
Fixed
- Fix incorrectly generated CSS when using percentages in arbitrary values with calc (e.g.
w-[calc(100%-var(--offset))]) (#18289)
4.1.9 - 2025-06-11
Fixed
- Correctly parse custom properties with strings containing semicolons (#18251)
- Upgrade: Migrate arbitrary modifiers without percentage signs to bare values (e.g.
/[0.16]→/16) (#18184) - Upgrade: Migrate CSS variable shorthands where fallback value contains function call (#18184)
- Upgrade: Migrate negative arbitrary values to negative bare values (e.g.
mb-[-32rem]→-mb-128) (#18212) - Upgrade: Do not migrate
blurinwire:model.blur(#18216) - Don't add spaces around CSS dashed idents when formatting math expressions (#18220)
4.1.8 - 2025-05-27
Added
- Improve error messages when
@applyfails (#18059)
Fixed
- Upgrade: Do not migrate declarations that look like candidates in
<style>blocks (#18057, 18068) - Upgrade: Don't error when looking for
tailwindcssin pnpm monorepos (#18065) - Upgrade: Don't error when updating dependencies in pnpm monorepos (#18065)
- Upgrade: Migrate deprecated
order-nonetoorder-0(#18126) - Support Leptos
class:attributes when extracting classes (#18093) - Fix "Cannot read properties of undefined" crash on malformed arbitrary value (#18133)
- Upgrade: Migrate
-mt-[0px]tomt-[0px]instead of the other way around (#18154) - Fix Haml pre-processing crash when there is no
\nat the end of the file (#18155) - Ignore
.pnpm-storefolders by default (can be overridden by@source …rules) (#18163) - Fix PostCSS crash when calling
toJSON()(#18083)
4.1.7 - 2025-05-15
Added
- Upgrade: Migrate bare values to named values (#18000)
- Upgrade: Added cache to improve template migration performance (#18025)
Fixed
- Allow
_before numbers during candidate extraction (#17961) - Prevent duplicate suggestions when using
@themeand@utilitytogether (#17675) - Ensure that media queries within
::beforeand::afterpseudo selectors create valid CSS rules in production builds (#17979) - Ensure that the standalone CLI does not leave temporary files behind (#17981)
- Ensure
-rotate-*utilities properly negate arbitrary values (#18014) - Ignore custom variants using
:merge(…)selectors in legacy JS plugins (#18020) - Ensure classes containing
.are properly extracted from Clojure files (#18038) - Upgrade: Fix error when using
@import … source(…)(#17963) - Upgrade: Change casing of utilities with named values to kebab-case to match updated theme variables (#18017)
- Upgrade: Don't migrate strings that match utility names in Vue attribute bindings other than
class(#18025)
4.1.6 - 2025-05-09
Added
- Upgrade: Automatically convert arbitrary values to named values when possible (e.g.
h-[1lh]toh-lh) (#17831, #17854) - Upgrade: Update dependencies in parallel for improved performance (#17898)
- Add detailed logging about
@sourcedirectives, discovered files and scanned files when usingDEBUG=*(#17906, #17952) - Add support for generating source maps in development (#17775)
Fixed
- Ensure negative arbitrary
scalevalues generate negative values (#17831) - Fix HAML extraction with embedded Ruby (#17846)
- Don't scan files for utilities when using
@reference(#17836) - Fix incorrectly replacing
_within arbitrary modifier shorthandbg-red-500/(--my_opacity)(#17889) - Don't scan
.logfiles for classes by default (#17906) - Ensure that custom utilities applying other custom utilities don't swallow nested
@applyrules (#17925) - Download platform specific package if
optionalDependenciesare skipped (#17929)
4.1.5 - 2025-04-30
Added
- Support using
@tailwindcss/upgradeto upgrade between versions of v4.* (#17717) - Add
h-lh/min-h-lh/max-h-lhutilities (#17790) - Transition
display,visibility,content-visibility,overlay, andpointer-eventswhen usingtransitionto simplify@starting-styleusage (#17812)
Fixed
- Don't scan
.geojsonor.dbfiles for classes by default (#17700, #17711) - Hide default shadow suggestions when missing default shadow theme keys (#17743)
- Replace
_with.in theme suggestions for@utilityif surrounded by digits (#17733) - Skip
color-mix(…)when opacity is100%(#17815) - PostCSS: Ensure that errors in imported stylesheets are recoverable (#17754)
- Upgrade: Bump all Tailwind CSS related dependencies during upgrade (#17763)
- Upgrade: Don't add
-to variants starting with@(#17814) - Upgrade: Don't format stylesheets that didn't change when upgrading (#17824)
Changed
- Ignore
.hg,.svn,.venv,venv,.yarn,.next,.turbo,.parcel-cache,__pycache__, and.svelte-kitfolders by default (can be overridden by@source …rules) (#17892) @sourcerules that point inside.hg,.svn,.venv,venv,.yarn,.next,.turbo,.parcel-cache,__pycache__, and.svelte-kitfolders no longer consider your.gitignorerules (#17892)
4.1.4 - 2025-04-14
Added
- Add experimental
@tailwindcss/oxide-wasm32-wasitarget for running Tailwind in browser environments like StackBlitz (#17558)
Fixed
- Ensure
color-mix(…)polyfills do not cause used CSS variables to be removed (#17555) - Ensure
color-mix(…)polyfills create fallbacks for theme variables that reference other theme variables (#17562) - Fix brace expansion in declining ranges like
{10..0..5}and{0..10..-5}(#17591) - Work around a Chrome rendering bug when using the
skew-*utilities (#17627) - Ensure container query variant names can contain hyphens (#17628)
- Ensure
shadow-inherit,inset-shadow-inherit,drop-shadow-inherit, andtext-shadow-inheritinherit the shadow color (#17647) - Ensure compatibility with array tuples used in
fontSizeJS theme keys (#17630) - Ensure folders with binary file extensions in their names are scanned for utilities (#17595)
- Upgrade: Convert
fontSizearray tuple syntax to CSS theme variables (#17630)
4.1.3 - 2025-04-04
Fixed
- Show warning when using unsupported bare value data type in
--value(…)(#17464) - PostCSS: Ensure changes to the input CSS file don't generate stale output when using Turbopack (#17554)
- Ensure classes are detected in Ruby's
%wsyntax in Slim templates (#17557)
4.1.2 - 2025-04-03
Fixed
- Don't rely on the presence of
@layer baseto polyfill@property(#17506) - Support setting multiple inset shadows as arbitrary values (#17523)
- Fix
drop-shadow-*utilities that are defined with multiple shadows (#17515) - PostCSS: Fix race condition when two changes are queued concurrently (#17514)
- PostCSS: Ensure files containing
@tailwind utilitiesare processed (#17514) - Ensure the
color-mix(…)polyfill creates fallbacks even when using colors that cannot be statically analyzed (#17513) - Fix slow incremental builds with
@tailwindcss/viteand@tailwindcss/postscss(especially on Windows) (#17511) - Vite: Fix missing CSS file in Qwik setups (#17533)
4.1.1 - 2025-04-02
Fixed
- Disable padding in
@source inline(…)brace expansion (#17491) - Inject polyfills after
@importand body-less@layer(#17493) - Ensure
@tailwindcss/clidoes not contain an import forjiti(#17502)
4.1.0 - 2025-04-01
Added
- Add
details-contentvariant (#15319) - Add
inverted-colorsvariant (#11693) - Add
noscriptvariant (#11929, #17431) - Add
items-baseline-lastandself-baseline-lastutilities (#13888, #17476) - Add
pointer-none,pointer-coarse, andpointer-finevariants (#16946) - Add
any-pointer-none,any-pointer-coarse, andany-pointer-finevariants (#16941) - Add safe alignment utilities (#14607)
- Add
user-validanduser-invalidvariants (#12370) - Add
wrap-anywhere,wrap-break-word, andwrap-normalutilities (#12128) - Add
@source inline(…)and@source not inline(…)(#17147) - Add
@source not "…"(#17255) - Add
text-shadow-*utilities (#17389) - Add
mask-*utilities (#17134) - Add
bg-{position,size}-*utilities for arbitrary values (#17432) - Add
shadow-*/<alpha>,inset-shadow-*/<alpha>,drop-shadow-*/<alpha>, andtext-shadow-*/<alpha>utilities to control shadow opacity (#17398, #17434) - Add
drop-shadow-<color>utilities (#17434) - Improve compatibility with older versions of Safari and Firefox (#17435)
Fixed
- Follow symlinks when resolving
@sourcedirectives (#17391) - Don't scan ignored files for classes when changing an ignored file triggers a rebuild using
@tailwindcss/cli(#17255) - Support negated
contentrules in legacy JavaScript configuration (#17255) - Interpret syntax like
@("@")md:…as@md:…in Razor files (#17427) - Disallow top-level braces, top-level semicolons, and unbalanced parentheses and brackets in arbitrary values (#17361)
- Ensure the
--theme(…)function still resolves to the CSS variables when using legacy JS plugins (#17458) - Detect used theme variables in CSS module files (#17433, #17467)
Changed
- Ignore
node_modulesby default (can be overridden by@source …rules) (#17255) @sourcerules that include file extensions or point insidenode_modules/folders no longer consider your.gitignorerules (#17255)- Deprecate
bg-{left,right}-{top,bottom}in favor ofbg-{top,bottom}-{left,right}utilities (#17378) - Deprecate
object-{left,right}-{top,bottom}in favor ofobject-{top,bottom}-{left,right}utilities (#17437)
4.0.17 - 2025-03-26
Fixed
- Fix an issue causing the CLI to hang when processing Ruby files (#17383)
4.0.16 - 2025-03-25
Added
- Add support for literal values in
--value('…')and--modifier('…')(#17304)
Fixed
- Fix class extraction followed by
(in Pug (#17320) - Ensure
@keyframesfor theme animations are emitted if they are referenced following a comma (#17352) - Vite: Ensure that updates to an imported CSS file are properly propagated after updating source files (#17347)
- Pre process
Slimtemplates embedded in Ruby files (#17336) - Error when input and output files resolve to the same file when using the CLI (#17311)
- Add missing suggestions when
--spacing(--value(integer, number))is used (#17308) - Add
::-webkit-details-markerpseudo tomarkervariant (#17362)
4.0.15 - 2025-03-20
Fixed
- Fix incorrect angle in
-bg-conic-*utilities (#17174) - Fix
border-[12px_4px]being interpreted as aborder-colorinstead of aborder-width(#17248) - Work around a crash in Safari 16.4 and 16.5 when using the default Preflight styles (#17306)
- Pre-process
<template lang="…">in Vue files (#17252) - Ensure that all CSS variables used by Preflight are prefixed (#17036)
- Prevent segfault when loaded in a worker thread on Linux (#17276)
- Ensure multiple
--value(…)or--modifier(…)calls don't delete subsequent declarations (#17273) - Fix class extraction followed by
(in Slim (#17278) - Export
PluginUtilsfromtailwindcss/pluginfor compatibility with v3 (#17299) - Remove redundant
line-height: initialfrom Preflight (#15212) - Increase Standalone hardware compatibility on macOS x64 builds (#17267)
- Ensure that the CSS file rebuilds if a new CSS variable is used from templates (#17301)
Changed
- The
--theme(…)function now returns CSS variables from your theme variables unless used inside positions where CSS variables are invalid (e.g. inside@mediaqueries) (#17036)
4.0.14 - 2025-03-13
Fixed
- Do not extract candidates with JS string interpolation
${(#17142) - Fix extraction of variants containing
.character (#17153) - Fix extracting candidates in Clojure/ClojureScript (#17087)
4.0.13 - 2025-03-11
Fixed
- Fix Haml pre-processing (#17051)
- Ensure
.nodeand.wasmfiles are not scanned for utilities (#17123) - Improve performance when scanning JSON files (#17125)
- Fix extracting candidates containing dots in Haml, Pug, and Slim pre processors (#17094, #17085, #17113)
- Don't create invalid CSS when encountering a link wrapped in square brackets (#17129)
4.0.12 - 2025-03-07
Fixed
- Vite: Fix
url(…)rebasing in transitively imported CSS files (#16965) - PostCSS: Rebase
url(…)s in imported CSS files (#16965) - Ensure utilities are sorted based on their actual property order (#16995)
- Ensure strings in Pug and Slim templates are handled correctly (#17000)
- Ensure classes between
}and{are properly extracted (#17001) - Fix
razor/cshtmlpre-processing (#17027) - Ensure extracting candidates from JS embedded in a PHP string works as expected (#17031)
4.0.11 - 2025-03-06
Fixed
- Ensure classes containing
--are extracted correctly (#16972) - Ensure classes containing numbers followed by dash or underscore are extracted correctly (#16980)
- Ensure arbitrary container queries are extracted correctly (#16984)
- Ensure classes ending in
[are extracted in Slim templating language (#16985) - Ensure arbitrary variables with data types are extracted correctly (#16986)
4.0.10 - 2025-03-05
Added
- Add
col-<number>androw-<number>utilities forgrid-columnandgrid-row(#15183)
Fixed
- Ensure
not-*does not remove:is(…)from variants (#16825) - Ensure
@keyframesare correctly emitted when using a prefix (#16850) - Don't swallow
@utilitydeclarations when@applyis used in nested rules (#16940) - Ensure
outline-hiddenbehaves likeoutline-noneoutside of forced colors mode (#16943) - Allow
!importanton CSS variables again (#16873) - Vite: Do not crash when encountering an
.svgfile with#or?in the filename (#16957) - Ensure utilities are properly detected within square brackets (#16306)
- Ensure utilities are properly detected using Angular's conditional class binding syntax (#16306)
- Ensure utilities starting with numbers are properly extracted from Slim templates (#16306)
- Discard arbitrary property candidates that have guaranteed-invalid property names (#16306)
Changed
- Removed
max-w-autoandmax-h-autoutilities as they generate invalid CSS (#16917) - Replaced the existing candidate extractor with a brand new extractor to improve maintainability, correctness, and performance (#16306)
4.0.9 - 2025-02-25
Fixed
- Make JS APIs available to plugins and configs in the Standalone CLI (#15934)
- Vite: Don't crash when importing a virtual module from JavaScript that ends in
.css(#16780) - Fix an issue where
@reference "…"would sometimes omit keyframe animations (#16774) - Ensure
z-*!utilities are properly marked as!important(#16795) - Read UTF-8 CSS files that start with a byte-order mark (BOM) (#16800)
- Ensure nested functions in selectors used with JavaScript plugins are not truncated (#16802)
Changed
- Emit variable fallbacks when using
@reference "…"instead of duplicate CSS variable declarations (#16774)
4.0.8 - 2025-02-21
Added
- Allow
@importwiththeme(…)options for stylesheets that contain more than just@themerules (#16514)
Fixed
- Don't add
!importantto CSS variable declarations when using the important modifier (#16668) - Vite: Ignore files and directories specified in your
.gitignorefile when using automatic source detection(#16631) - Vite: Don't rely on the module graph for detecting candidates to ensure setups with multiple Vite builds work as expected (#16631)
- Vite: Ensure Astro production builds always contain classes used in client-only components (#16631)
- Vite: Always scan raw file contents for utility classes before any other transforms have been applied to ensure utility classes are scanned without any additional escaping (#16631)
- Ensure utilities with more declarations are always sorted before utilities with fewer declarations when utilities only define CSS variables (#16715)
- Only include
translate-z-pxutilities once in compiled CSS (#16718)
Changed
4.0.7 - 2025-02-18
Fixed
- Export
tailwindcss/lib/util/flattenColorPalette.jsfor backward compatibility (#16411) - Fix sorting of numeric utility suggestions when they have different magnitudes (#16414)
- Show suggestions for fractions in IntelliSense (#16353)
- Don’t replace
_in suggested theme keys (#16433) - Ensure
--default-outline-widthcan be used to change theoutline-widthvalue of theoutlineutility (#16469) - Ensure drop shadow utilities don't inherit unexpectedly (#16471)
- Export config and plugin types from
tailwindcss/pluginfor backward compatibility (#16505) - Ensure JavaScript plugins that emit nested rules referencing the utility name work as expected (#16539)
- Statically link Visual Studio redistributables in
@tailwindcss/oxideWindows builds (#16602) - Ensure that Next.js splat routes are scanned for classes (#16457)
- Pin exact version of
tailwindcssin@tailwindcss/*packages (#16623) - Upgrade: Report errors when updating dependencies (#16504)
- Upgrade: Ensure a
darkModeJS config setting with block syntax converts to use@slot(#16507) - Upgrade: Ensure the latest version of
tailwindcssand@tailwindcss/postcssare installed when upgrading (#16620)
4.0.6 - 2025-02-10
Fixed
- Revert change to no longer include theme variables that aren't used in compiled CSS (#16403)
- Upgrade: Don't migrate
blurtoblur-smwhen used with Next.js<Image placeholder="blur" />(#16405)
4.0.5 - 2025-02-08
Added
- Add
@theme staticoption for always including theme variables in compiled CSS (#16211)
Fixed
- Remove rogue
console.logfrom@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
containersJS theme key is added to the--container-*namespace (#16169) - Ensure theme
@keyframesare generated even if an--animation-*variable spans multiple lines (#16237) - Vite: Skip parsing stylesheets with the
?commonjs-proxyflag (#16238) - Fix
order-firstandorder-lastfor Firefox (#16266) - Fix support for older instruction sets on Linux x64 builds of the standalone CLI (#16244)
- Ensure
NODE_PATHis respected when resolving JavaScript and CSS files (#16274) - Ensure Node addons are packaged correctly with FreeBSD builds (#16277)
- Fix an issue where
@variantinside 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-*andgrid-rows-*utilities (#16020) - Ensure escaped theme variables are handled correctly (#16064)
- Ensure we process Tailwind CSS features when only using
@referenceor@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
@keyframesin@theme reference(#16120) - Discard invalid declarations when parsing CSS (#16093)
- Do not emit empty CSS rules and at-rules (#16121)
- Handle
@variantwhen at the top-level of a stylesheet (#16129)
4.0.1 - 2025-01-29
Added
- Include
:openpseudo-class in existingopenvariant (#15349)
Fixed
- Remove invalid
min-w/h-noneutilities (#15845) - Discard CSS variable shorthand utilities that don't use valid CSS variables (#15738)
- Ensure font-size utilities with
nonemodifier 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
--spacingvariable (#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/browserdoes not pollute the global namespace (#15978) - Ensure that
tailwind-mergeis 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]toleading-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, andcolor-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.
4.0.0-beta.10 - 2025-01-21
Added
- Add support for using
@variantto use variants in your CSS (#15663) - Include
outline-colorwhen transitioning colors (#15690)
Fixed
- Add missing
mainandbrowserfields for@tailwindcss/browser(#15594) - Support escaping
*in theme namespace syntax (e.g.:--color-\*: initial;) (#15603) - Respect
@themeoptions 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
stdoutwhen--outputis 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
@variantto@custom-variant(#15663) - Change
outline-hiddento setoutline-style: noneexcept in forced colors mode (#15690)
4.0.0-beta.9 - 2025-01-09
Added
- Add
@tailwindcss/browserpackage to run Tailwind CSS in the browser (#15558) - Add
@reference "…"API as a replacement for the previous@import "…" referenceoption (#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, andplace-content-evenlyutilities (#15440) - Don’t detect arbitrary properties when preceded by an escape (#15456)
- Fix incorrectly named
bg-roundandbg-spaceutilities tobg-repeat-roundtobg-repeat-space(#15462) - Fix
inset-shadow-*suggestions in IntelliSense (#15471) - Only compile arbitrary values ending in
](#15503) - Ensure
@applyrules are processed in the correct order (#15542) - Allow negative utility names in
@utility(#15573) - Remove all
@keyframescontributed by JavaScript plugins when using@referenceimports (#15581) - Upgrade (experimental): Do not extract class names from functions (e.g.
shadowinfilter: 'drop-shadow(…)') (#15566) - Upgrade (experimental): Migrate
theme(spacing.2)to--spacing(2)(#15579) - Upgrade (experimental): Migrate
theme(…)to--theme(…)(#15579)
Changed
- Remove
--container-prosein favor of a deprecated--max-width-prosetheme variable so that*-proseis only available for max-width utilities and only for backward compatibility (#15439) - Use Vite post-processor APIs for processing Svelte
<style>blocks (#15436) - Remove
@propertyfallback rules for Firefox (#15622)
4.0.0-beta.8 - 2024-12-17
Fixed
- Ensure
Symbol.disposeandSymbol.asyncDisposeare polyfilled (#15404)
4.0.0-beta.7 - 2024-12-13
Added
- Export
tailwindcss/lib/util/flattenColorPalettefor backward compatibility (#15318) - Improve debug logs to get better insights (#15303)
Fixed
- Fix dependency related warnings when using
@tailwindcss/postcsson Windows (#15321) - Skip creating a compiler for CSS files that should not be processed (#15340)
- Fix missing
shadow-nonesuggestion 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-videoutility from theme (#15365)
4.0.0-beta.6 - 2024-12-06
Fixed
- Ensure
@import "…" referencenever generates utilities (#15307)
4.0.0-beta.5 - 2024-12-04
Added
- Parallelize parsing of individual source files (#15270)
- Add new
@import "…" referenceoption for importing Tailwind CSS configuration details into another CSS entry point without duplicating CSS (#15228) - Improve performance of
@tailwindcss/postcssby 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/vitein 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/postcssextension (#15273) - Fix missing font family suggestions in IntelliSense (#15288)
- Fix missing
@containersuggestion in IntelliSense (#15288)
4.0.0-beta.4 - 2024-11-29
Fixed
- Don't scan source files for utilities unless
@tailwind utilitiesis present in the CSS in@tailwindcss/postcssand@tailwindcss/vite(#15226) - Skip reserializing CSS files that don't use Tailwind features in
@tailwindcss/postcssand@tailwindcss/vite(#15226) - Upgrade (experimental): Do not migrate the
overflow-cliputility (#15244) - Upgrade (experimental): Rename
backdrop-blurtobackdrop-blur-smandbackdrop-blur-smtobackdrop-blur-xs(#15242)
4.0.0-beta.3 - 2024-11-27
Fixed
- Ensure any necessary vendor prefixes are generated for iOS Safari, Firefox, and Chrome (#15166)
- Ensure
.groupand.peerare prefixed when using theprefix(…)option (#15174) - Ensure 3D transforms render correctly in Safari (#15179)
- Ensure
--spacing-*variables take precedence over--container-*variables (#15180) - Fix scanning classes delimited by tab characters (#15169)
- Ensure opacity modifiers and semi-transparent gradients render correctly by default in Safari (#15201)
- Fix element size thrashing when transitioning gradients on elements with a defined font-size in Safari (#15216)
- Ensure
translate-*utilities work with arbitrary values that usecalc(…)(#15215) - Ensure gradient stop position utilities work with arbitrary values that use
calc(…)(#15215) - Ensure Node addons are packaged correctly with Windows ARM builds (#15171)
- Ensure the Vite plugin resolves CSS and JS files according to the configured resolver conditions ([#15173])(https://github.com/tailwindlabs/tailwindcss/pull/15173)
- Upgrade (experimental): Migrate prefixes for
.groupand.peerclasses (#15208)
Changed
- Interpolate gradients using OKLAB instead of OKLCH by default (#15201)
- Error when
layer(…)in@importis not first in the list of functions/conditions (#15109) - Use unitless line-height values for font-size variables in default theme (#15216)
- Don't register custom properties with explicit types unless those custom properties need to be animateable (#15215)
4.0.0-beta.2 - 2024-11-22
Fixed
- Use configured
--letter-spacingvalues for custom font size utilities (#15099) - Ensure
space-x/y-*anddivide-x/y-*with variants can undospace-x/y-reverseanddivide-x/y-reverse(#15094) - Don't print minified code when the build fails in the CLI (#15106)
- Generate the correct CSS for the
break-keeputility (#15108) - Detect single word utilities that include numbers (e.g.
h1) when scanning files (#15110) - Upgrade (experimental): Always add
layer(…)as the first param to@import(#15102)
Changed
- Revert the new base styles for buttons and form controls (#15100)
4.0.0-beta.1 - 2024-11-21
Added
- Upgrade (experimental): Drop unnecessary
opacitytheme values when migrating to CSS (#15067)
Fixed
- Ensure
opacitytheme 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-*, andflex-shrink-*(#15069) - Upgrade (experimental): Include
colorin the form reset snippet (#15064)
4.0.0-alpha.36 - 2024-11-21
Added
- Add consistent base styles for buttons and form controls (#15036)
- Upgrade (experimental): Convert
group-[]:flextoin-[.group]:flex(#15054) - Upgrade (experimental): Add form reset styles to CSS files for compatibility with v3 (#15036)
- Upgrade (experimental): Migrate
ringtoring-3(#15063)
Fixed
- Upgrade (experimental): Don't migrate arbitrary variants to
in-*that use the child combinator instead of the descendant combinator (#15054)
Changed
- Use single drop shadow values instead of multiple (#15056)
- Do not parse invalid candidates with empty arbitrary values (#15055)
4.0.0-alpha.35 - 2024-11-20
Added
- Reintroduce
max-w-screen-*utilities that read from the--breakpointnamespace as deprecated utilities (#15013) - Support using CSS variables as arbitrary values without
var(…)by using parentheses instead of square brackets (e.g.bg-(--my-color)) (#15020) - Add new
in-*variant (#15025) - Bundle
@tailwindcss/forms,@tailwindcss/typography, and@tailwindcss/aspect-ratiowith the standalone CLI (#15028) - Allow
addUtilities()andaddComponents()to work with child combinators and other complex selectors (#15029) - Support colors that use
<alpha-value>in JS configs and plugins (#15033) - Add new
transition-discreteandtransition-normalutilities fortransition-behavior(#15051) - Upgrade (experimental): Migrate
[&>*]to the*variant (#15022) - Upgrade (experimental): Migrate
[&_*]to the**variant (#15022) - Upgrade (experimental): Warn when trying to migrating a project that is not on Tailwind CSS v3 (#15015)
- Upgrade (experimental): Migrate colors that use
<alpha-value>in JS configs (#15033)
Fixed
- Ensure
flexis suggested (#15014) - Improve module resolution for
cjs-only andesm-only plugins (#15041) - Perform
calc(…)on just values for negative-rotate-*utilities, not on therotateX/Y/Z(…)functions themselves (#15044) - Upgrade (experimental): Resolve imports when specifying a CSS entry point on the command-line (#15010)
- Upgrade (experimental): Resolve nearest Tailwind config file when CSS file does not contain
@config(#15001) - Upgrade (experimental): Improve output when CSS imports can not be found (#15038)
- Upgrade (experimental): Ignore analyzing imports with external URLs (e.g.:
@import "https://fonts.google.com") (#15040) - Upgrade (experimental): Ignore analyzing imports with
url(…)(e.g.:@import url("https://fonts.google.com")) (#15040) - Upgrade (experimental): Use
resolveJsIdwhen resolvingtailwindcss/package.json(#15041) - Upgrade (experimental): Ensure children of Tailwind root file are not considered Tailwind root files (#15048)
Changed
- Bring back support for color opacity modifiers to read from
--opacity-*theme values (#14278)
4.0.0-alpha.34 - 2024-11-14
Added
- Support opacity values in increments of
0.25by default (#14980) - Support specifying the color interpolation method for gradients via modifier (#14984)
- Reintroduce
containercomponent as a utility (#14993, #14999) - Upgrade (experimental): Migrate
containercomponent configuration to CSS (#14999)
Fixed
- Ensure that CSS inside Svelte
<style>blocks always run the expected Svelte processors when using the Vite extension (#14981) - Upgrade (experimental): Ensure it's safe to migrate
blur,rounded, orshadow(#14979) - Upgrade (experimental): Do not rename classes using custom defined theme values (#14976)
- Upgrade (experimental): Ensure
@configis injected in nearest common ancestor stylesheet (#14989) - Upgrade (experimental): Add missing
layer(…)to imports above Tailwind directives (#14982)
4.0.0-alpha.33 - 2024-11-11
Fixed
- Don't reset horizontal padding on date/time pseudo-elements (#14959)
- Don't emit
calc()with invalid values for bare values that aren't integers in spacing utilities (#14962) - Ensure spacing scale values work as line-height modifiers (#14966)
4.0.0-alpha.32 - 2024-11-11
Added
- Support derived spacing scales based on a single
--spacingtheme value (#14857) - Add
svh,dvh,svw,dvw, andautovalues to all width/height/size utilities (#14857) - Add new
**variant (#14903) - Process
<style>blocks inside Svelte files when using the Vite extension (#14151) - Normalize date/time input styles in Preflight (#14931)
- Upgrade (experimental): Migrate
grid-cols-[subgrid]andgrid-rows-[subgrid]togrid-cols-subgridandgrid-rows-subgrid(#14840) - Upgrade (experimental): Support migrating projects with multiple config files (#14863)
- Upgrade (experimental): Rename
shadowtoshadow-sm,shadow-smtoshadow-xs, andshadow-xstoshadow-2xs(#14875) - Upgrade (experimental): Rename
inset-shadowtoinset-shadow-sm,inset-shadow-smtoinset-shadow-xs, andinset-shadow-xstoinset-shadow-2xs(#14875) - Upgrade (experimental): Rename
drop-shadowtodrop-shadow-smanddrop-shadow-smtodrop-shadow-xs(#14875) - Upgrade (experimental): Rename
roundedtorounded-smandrounded-smtorounded-xs(#14875) - Upgrade (experimental): Rename
blurtoblur-smandblur-smtoblur-xs(#14875) - Upgrade (experimental): Migrate
theme()usage and JS config files to use the new--spacingmultiplier where possible (#14905) - Upgrade (experimental): Migrate arbitrary values in variants to built-in values where possible (#14841)
Fixed
- Detect classes in new files when using
@tailwindcss/postcss(#14829) - Fix crash when using
@sourcecontaining..(#14831) - Ensure instances of the same variant with different values are always sorted deterministically (e.g.
data-focus:flexanddata-active:flex) (#14835) - Ensure
--inset-ring=*and--inset-shadow-*variables are ignored byinset-*utilities (#14855) - Ensure
url(…)containing special characters such as;or{}end up in one declaration (#14879) - Ensure adjacent rules are merged together after handling nesting when generating optimized CSS (#14873)
- Rebase
url()inside imported CSS files when using Vite (#14877) - Ensure that CSS transforms from other Vite plugins correctly work in full builds (e.g.
:deep()in Vue) (#14871) - Ensure the CSS
theme()function handles newlines and tabs in its arguments list (#14917) - Don't unset keys like
--inset-shadow-*when unsetting keys like--inset-*(#14906) - Ensure spacing utilities with no value (e.g.
pxortranslate-y) don't generate CSS (#14911) - Don't override user-agent background color for input elements in Preflight (#14913)
- Don't attempt to convert CSS variables (which should already be percentages) to percentages when used as opacity modifiers (#14916)
- Ensure custom utilities registered with the plugin API can start with
@(#14793) - Upgrade (experimental): Install
@tailwindcss/postcssnext totailwindcss(#14830) - Upgrade (experimental): Remove whitespace around
,separator when print arbitrary values (#14838) - Upgrade (experimental): Fix crash during upgrade when content globs escape root of project (#14896)
- Upgrade (experimental): Don't convert
theme(…/15%)to modifier unless it is the entire arbitrary value of a utility (#14922) - Upgrade (experimental): Convert
,toin arbitrarygrid-cols-*,grid-rows-*, andobject-*values (#14927)
Changed
- Remove
--drop-shadow-nonefrom the default theme in favor of a staticdrop-shadow-noneutility (#14847) - Rename
shadowtoshadow-sm,shadow-smtoshadow-xs, andshadow-xstoshadow-2xs(#14849) - Rename
inset-shadowtoinset-shadow-sm,inset-shadow-smtoinset-shadow-xs, andinset-shadow-xstoinset-shadow-2xs(#14849) - Rename
drop-shadowtodrop-shadow-smanddrop-shadow-smtodrop-shadow-xs(#14849) - Rename
roundedtorounded-smandrounded-smtorounded-xs(#14849) - Rename
blurtoblur-smandblur-smtoblur-xs(#14849) - Remove fixed line-height theme values and derive
leading-*utilities from--spacing-*scale (#14857) - Remove
--transition-timing-function-linearfrom the default theme in favor of a staticease-linearutility (#14880) - Remove default
--spacing-*scale in favor of--spacingmultiplier (#14857) - Remove
var(…)fallbacks from theme values in utilities (#14881) - Remove static
font-weightutilities and add--font-weight-*values to the default theme (#14883) - Rename
--transition-timing-function-*variables to--ease-*(#14886) - Rename
--width-*variables to--container-*(#14898) - Rename
--font-size-*variables to--text-*(#14909) - Rename
--font-family-*variables to--font-*(#14885) - Rename
--letter-spacing-*variables to--tracking-*(#14921) - Rename
--line-height-*variables to--leading-*(#14925) - Revert specificity of
*variant to match v3 behavior (#14920) - Replace
outline-nonewithoutline-hidden, add new simplifiedoutline-noneutility (#14926) - Revert adding borders by default to form inputs (#14929)
- Deprecate
shadow-innerutility (#14933) - Remove
--leading-nonefrom the default theme in favor of a staticleading-noneutility (#14934)
4.0.0-alpha.31 - 2024-10-29
Added
- Support specifying the base path for automatic source detection using a
source(…)function on@tailwind utilitiesor@import "tailwindcss"(#14820) - Support disabling automatic source detection with
source(none)(#14820) - Support passing directories to
@sourcewithout needing to pass a complete glob (#14820) - Upgrade (experimental): Bump
prettier-plugin-tailwindcssto latest version during upgrade (#14808)
Fixed
- Support calling
config()with no arguments in plugin API (#14799)
Changed
- Use logical
*-inlineand*-blockproperties for all x/y utilities likepx-*,my-*,scroll-px-*, andinset-y-*(#14805) - Respect automatic source detection heuristics in sources registered with
@source(#14820)
4.0.0-alpha.30 - 2024-10-24
Added
- Support
not-*with all built-in media query andsupports-*variants (#14743) - Support
not-*with custom variants containing at-rules (#14743) - Support
group-*,peer-*, andhas-*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
exportsin theirpackage.jsonare 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
@importstatements 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 ofm-[var(--spacing-1\_5)]) (#14778) - Upgrade (experimental): Ensure
layer(…)on@importis only removed when@utilityis present (#14783)
Changed
- Don't convert underscores in the first argument to
var()andtheme()to spaces (#14776, #14781) - Sort text alignment and wrapping utilities with typography utilities (#14787)
- Sort line height and letter spacing utilities before text color utilities (#14787)
4.0.0-alpha.29 - 2024-10-23
Added
- Upgrade (experimental): Migrate
pluginswith options to CSS (#14700) - Upgrade (experimental): Allow JS configuration files with
corePluginsoptions to be migrated to CSS (#14742) - Upgrade (experimental): Migrate
@importstatements for relative CSS files to use relative path syntax (e.g../file.css) (#14755) - Upgrade (experimental): Migrate
max-w-screen-*utilities tomax-w-[var(…)](#14754) - Upgrade (experimental): Migrate
@variantsand@responsivedirectives (#14748) - Upgrade (experimental): Migrate
@screendirective (#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
postcssas 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\/2astheme('width.1/2')) (#14739) - Ensure JS theme keys containing special characters correctly produce utility classes (e.g.
'1/2': 50%tow-1/2) (#14739) - Always emit keyframes registered in
addUtilities(#14747) - Ensure loading stylesheets via the
?rawand?urlstatic asset query works when using the Vite plugin (#14716) - Upgrade (experimental): Migrate
flex-growtogrowandflex-shrinktoshrink(#14721) - Upgrade (experimental): Minify arbitrary values when printing candidates (#14720)
- Upgrade (experimental): Ensure legacy theme values ending in
1(liketheme(spacing.1)) are correctly migrated to custom properties (#14724) - Upgrade (experimental): Migrate arbitrary values to bare values for the
from-*,via-*, andto-*utilities (#14725) - Upgrade (experimental): Ensure
layer(utilities)is removed from@importto keep@utilitytop-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 = !bordertolet 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
@sourcerules forcontentpaths that are already covered by automatic source detection (#14714)
4.0.0-alpha.28 - 2024-10-17
Added
- Add first draft of new wide-gamut color palette (#14693)
- Support linear gradient angles as bare values (#14707)
- Interpolate gradients in OKLCH by default (#14708)
- Upgrade (experimental): Migrate
theme(…)calls tovar(…)or to the moderntheme(…)syntax (#14664, #14695) - Upgrade (experimental): Support migrating JS configurations to CSS that contain functions inside the
themeobject (#14675)
Fixed
- Ensure
themevalues defined outside ofextendin 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
screensconfig (#14691)
4.0.0-alpha.27 - 2024-10-15
Added
- Add support for
tailwindcss/colors.js,tailwindcss/defaultTheme.js, andtailwindcss/plugin.jsexports (#14595) - Support
keyframesin JS config file themes (#14594) - Support the
colorparameter 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 atailwind.config.{js,ts,…}is detected (#14635) - Upgrade (experimental): Migrate
@media screen(…)when running codemods (#14603) - Upgrade (experimental): Migrate
aria-*,data-*, andsupports-*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
!importantwhen stringifying CSS (#14611) - Don't set
display: noneon elements that usehidden="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
addComponentsandmatchComponents(#14590) - Ensure
boxShadowandanimationtheme keys in JS config files are accessible under--shadow-*and--animate-*using thetheme()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 thetheme([path] / [modifier])function (#14653) - Ensure
font-stretchutilities only accepts positive integer bare values (#14670) - Upgrade (experimental): Ensure CSS before a layer stays unlayered when running codemods (#14596)
- Upgrade (experimental): Resolve issues where some prefixed candidates were not properly migrated (#14600)
4.0.0-alpha.26 - 2024-10-03
Added
- Add support for prefixes (#14501)
- Expose timing information in debug mode (#14553)
- Add support for
blocklistin JS config files (#14556) - Add
color-schemeutilities (#14567) - Add support for
importantoption 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
@applyin CSS files (#14574) - Upgrade (experimental): Update variant order in template files (#14524)
- Upgrade (experimental): Convert
bg-gradient-*utilities tobg-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
@utilityis top-level and cannot be nested (#14525) - Only setup a single compiler in
@tailwindcss/postcssfor initial builds (#14565) - Ensure editing imported CSS files triggers a rebuild (#14561)
- Ensure
@applyand 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@importat-rules when the styles do not need to be imported into a layer (#14513) - Upgrade (experimental): Don't wrap comment nodes in
@layerwhen running codemods (#14517) - Upgrade (experimental): Fix scenario where selectors can be lost in multi-selector rules (#14518)
- Upgrade (experimental): Ensure custom CSS before
@tailwindrules is wrapped with@layer basewhen prepending@import "tailwindcss"to the top of the file (#14536)
Changed
- Disallow bare values with decimal places (#14562)
4.0.0-alpha.25 - 2024-09-24
Added
- Add support for
aria,supports, anddatavariants defined in JS config files (#14407) - Add
@tailwindcss/upgradetooling (#14434) - Support
screensin JS config files (#14415) - Add
bg-radial-*andbg-conic-*utilities for radial and conic gradients (#14467) - Add new
shadow-initialandinset-shadow-initialutilities for resetting shadow colors (#14468) - Add
field-sizing-*utilities (#14469) - Include gradient color properties in color transitions (#14489)
- Upgrade (experimental): Convert important syntax in
@applyin CSS files (#14411) - Upgrade (experimental): Convert
@tailwinddirectives to@importrules in CSS files (#14411, #14504) - Upgrade (experimental): Convert custom CSS in
@layer utilitiesand@layer componentsto use@utilityin CSS files (#14455)
Fixed
- Support
borderRadius.*as an alias for--radius-*when using dot notation inside thetheme()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 intransition-*utility output (#14482) - Ensure
rtlandltrvariants work with[dir=auto](#14306)
Changed
- Preserve explicit
leading-*,tracking-*, andfont-{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
@importresolution to speed up initial builds (#14446) - Remove automatic
var(…)injection (#13657) - Only apply
:hoverstates on devices that support@media (hover: hover)(#14500)
4.0.0-alpha.24 - 2024-09-11
Added
- Support CSS
theme()functions inside other@custom-media,@container, and@supportsrules (#14358) - Export
Configtype fromtailwindcssfor JS config files (#14360) - Add support for
matchVariantplugins using the@plugindirective (#14371) - Warn when the
tailwindcsspackage 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 defaultvalues (#14359) - Improve IntelliSense completions for
borderutilities (#14370)
4.0.0-alpha.23 - 2024-09-05
Added
- Add opacity modifier support to the
theme()function in plugins (#14348)
4.0.0-alpha.22 - 2024-09-04
Added
- Support TypeScript for
@pluginand@configfiles (#14317) - Add
defaultoption to@themeto 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
@configfiles 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
referencevalues 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.transformerset tolightningcss(#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
addBaseplugins using the@plugindirective (#14172) - Add support for the
tailwindcss/pluginexport (#14173) - Add support for the
theme()function in plugins (#14207) - Add support for
addComponents,matchComponents,prefixplugin APIs (#14221) - Add support for
tailwindcss/colorsandtailwindcss/defaultThemeexports for use with plugins (#14221) - Add support for the
@tailwindcss/typographyand@tailwindcss/formsplugins (#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
inlineoption when defining@themevalues (#14095) - Add
inertvariant (#14129) - Add support for explicitly registering content paths using new
@sourceat-rule (#14078) - Add support for scanning
<style>tags in Vue files to the Vite plugin (#14158) - Add support for basic
addUtilitiesandmatchUtilitiesplugins using the@plugindirective (#14114)
Fixed
- Ensure
@applyworks inside@utility(#14144)
[4.0.0-alpha.18] - 2024-07-25
Added
- Add support for basic
addVariantplugins with new@plugindirective (#13982, #14008) - Add
@variantat-rule for defining custom variants in CSS (#13992, #14008) - Add
@utilityat-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
variantsandutilitieswith modifiers (#13977) - Add missing utilities that exist in v3, such as
resize,fill-none,accent-none,drop-shadow-none, and negativehue-rotateandbackdrop-hue-rotateutilities (#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-*andaria-*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-4xlutility (#13827) - Add
backdrop-blur-noneandblur-noneutilities (#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
@propertyfallbacks work correctly with properties with noinitial-value(#13949)
[4.0.0-alpha.16] - 2024-06-07
Added
- Add
nth-*variants (#13661) - Add
bg-linear-*utilities as an alias for the existingbg-gradient-*utilities (#13783) - Support arbitrary linear gradient angles (e.g.
bg-linear-[125deg]) (#13783)
Fixed
- Use
lengthdata type forbackground-sizeinstead ofbackground-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-bottomandbg-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
@propertyrules for Firefox (#13655)
Changed
- Use
remunits for breakpoints by default instead ofpx(#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 inspace-*/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-letterrespects::selectionstyles (#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
startingvariant for@starting-style(#13329) - Target
:popover-openin existingopenvariant (#13331)
Fixed
- Remove percentage values for
translate-zutilities (#13321, #13327) - Generate unique CSS bundle hashes in
@tailwindcss/vitewhen Tailwind-generated CSS changes (#13218) - Inherit letter spacing in form controls (#13328)
- Ensure
buildcommand is executed when using--outputinstead of-o(#13369) - Prevent
@tailwindcss/vitefrom hanging in serve mode (#13380)
[4.0.0-alpha.10] - 2024-03-19
Added
Fixed
- Validate bare values (#13245)
- Parse candidates in
.sveltefiles withclass:abc="condition"syntax (#13274)
Changed
- Inline
@importrules intailwindcss/index.cssat 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 intransition-*utilities (#13219)
Changed
- Move
optimizeCssto 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-nonefrom being overridden when conditionally styling::before/::after(#13187) - Remove default borders from
iframeelements (#13189)
Changed
- Replace
--radius-noneand--radius-fulltheme values with staticrounded-noneandrounded-fullutilities (#13186)
Added
- Improve performance of incremental rebuilds for
@tailwindcss/cli(#13169) - Improve performance of incremental rebuilds for
@tailwindcss/postcss(#13170)
[4.0.0-alpha.7] - 2024-03-08
Added
- Add
font-stretchutilities (#13153) - Publish packages with npm provenance (#13160)
- Build native packages for Android (#13115, #13161)
- Make CSS optimization and minification configurable in PostCSS plugin and CLI (#13130)
Fixed
- Don't error on
@applywith leading/trailing whitespace (#13144) - Correctly parse CSS using Windows line endings (#13162)
[4.0.0-alpha.6] - 2024-03-07
Fixed
- Only set
border-stylefor appropriate border side (#13124)
Changed
- Error when
@themecontains unsupported rules/declarations (#13125)
[4.0.0-alpha.5] - 2024-03-06
Fixed
- Don't scan ignored files even if a
.gitfolder is not present (#13119)
[4.0.0-alpha.4] - 2024-03-06
Fixed
- Support importing framework CSS files without including a
.cssextension (#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-sliceanddecoration-cloneutilities (#13107)
[4.0.0-alpha.2] - 2024-03-06
Changed
- Move the CLI into a separate
@tailwindcss/clipackage (#13095)
[4.0.0-alpha.1] - 2024-03-06
- First 4.0.0-alpha.1 release
3.4.18 - 2024-10-01
Fixed
- Improve support for raw
supports-[…]queries in arbitrary values (#13605) - Fix
require.cacheerror when loaded through a TypeScript file in Node 22.18+ (#18665) - Support
import.meta.resolve(…)in configs for new enough Node.js versions (#18938) - Allow using newer versions of
postcss-load-configfor better ESM and TypeScript PostCSS config support with the CLI (#18938) - Remove irrelevant utility rules when matching important classes (#19030)
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
PluginsConfigallowundefinedvalues (#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
boxShadowtheme 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: noneon elements that usehidden="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
@applywith utilities that use@defaultsworks with rules defined in the base layer when usingoptimizeUniversalDefaults(#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
vendorfolders
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-*andaria-*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)forbackdrop-blur-noneandblur-noneutilities (#13830) - Add
.mtsand.ctsconfig file detection (#13940) - Don't generate utilities like
px-1unnecessarily when using utilities likepx-1.5(#13959) - Always generate
-webkit-backdrop-filterforbackdrop-*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-*, andpeer-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,1for button and input Preflight rules (#12735) - Improve glob handling for folders with
(,),[or]in the file path (#12715) - Split
:hasrules when usingexperimental.optimizeUniversalDefaults(#12736) - Sort arbitrary properties alphabetically across multiple class lists (#12911)
- Add
mix-blend-plus-darkerutility (#12923) - Ensure dashes are allowed in variant modifiers (#13303)
- Fix crash showing completions in Intellisense when using a custom separator (#13306)
- Transpile
import.meta.urlin config files (#13322) - Reset letter spacing for form elements (#13150)
- Fix missing
xx-largeand remove doublex-largeabsolute size (#13324) - Don't error when encountering nested CSS unless trying to
@applya class that uses nesting (#13325) - Ensure that arbitrary properties respect
importantconfiguration (#13353) - Change dark mode selector so
@applyworks 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
classdark mode strategy (#12717) - Improve glob handling for folders with
(,),[or]in the file path (#12715)
Added
- Add new
selectorandvariantstrategies for dark mode (#12717)
Changed
- Support
rtlandltrvariants on same element asdirattribute (#12717)
3.4.0 - 2023-12-19
Added
- Add
svh,lvh, anddvhvalues to defaultheight/min-height/max-heighttheme (#11317) - Add
has-*variants for:has(...)pseudo-class (#11318) - Add
text-wraputilities includingtext-balanceandtext-pretty(#11320, #12031) - Extend default
opacityscale to include all steps of 5 (#11832) - Update Preflight
htmlstyles to include shadow DOM:hostpseudo-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-*, andmax-w-*utilities (#12300) - Add
forced-color-adjustutilities (#11931) - Add
forced-colorsvariant (#11694, #12582) - Add
appearance-autoutility (#12404) - Add logical property values for
floatandclearutilities (#12480) - Add
*variant for targeting direct children (#12551)
Changed
- Simplify the
sansfont-family stack (#11748) - Disable the tap highlight overlay on iOS (#12299)
- Improve relative precedence of
rtl,ltr,forced-colors, anddarkvariants (#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
@configin CSS when watching via the CLI (#12327) - Improve types for
resolveConfig(#12272) - Ensure configured
font-feature-settingsformonoare 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
@layerrule (#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
-incalc()expression (#12283)
3.3.4 - 2023-10-24
Fixed
- Improve normalisation of
calc()-like functions (#11686) - Skip
calc()normalisation in nestedtheme()calls (#11705) - Fix incorrectly generated CSS when using square brackets inside arbitrary properties (#11709)
- Make
contentoptional for presets in TypeScript types (#11730) - Handle variable colors that have variable fallback values (#12049)
- Batch reading content files to prevent
too many open fileserror (#12079) - Skip over classes inside
:not(…)when nested in an at-rule (#12105) - Update types to work with
Node16module 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, andbrowserlistdependencies (#11550) - Improve automatic
varinjection 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()insidecalc()when there are no spaces around operators (#11157) - Ensure
repeating-conic-gradientis detected as an image (#11180) - Move unknown pseudo-elements outside of
:isby default (#11345) - Escape animation names when prefixes contain special characters (#11470)
- Don't prefix arbitrary classes in
groupandpeervariants (#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-busyutility (#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
toposition of gradient when using implicit transparent colors (#11002) - Ensure
@tailwindcss/oxidedoesn'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, andimportantselectors when using:is()or:has()with pseudo-elements (#10903) - Fix
safelistconfig types (#10901) - Fix build errors caused by
@tailwindcss/line-clampwarning (#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-heightmodifier support tofont-sizeutilities (#9875) - Add support for using variables as arbitrary values without
var(...)(#9880, #9962) - Add logical properties support for inline direction (#10166)
- Add
hyphensutilities (#10071) - Add
from-{position},via-{position}andto-{position}utilities (#10886) - Add
list-style-imageutilities (#10817) - Add
caption-sideutilities (#10470) - Add
line-clamputilities from@tailwindcss/line-clampto core (#10768, #10876, #10862) - Add
delay-0andduration-0utilities (#10294) - Add
justify-normalandjustify-stretchutilities (#10560) - Add
content-normalandcontent-stretchutilities (#10645) - Add
whitespace-break-spacesutility (#10729) - Add support for configuring default
font-variation-settingsfor afont-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 emptySet(#10877) - Fix format assumption when resolving module dependencies (#10878)
Changed
- Mark
rtlandltrvariants as stable and remove warnings (#10764) - Use
insetinstead oftop,right,bottom, andleftproperties (#10765) - Make
darkandrtl/ltrvariants insensitive to DOM order (#10766) - Use
:isto 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-colorintransitionandtransition-colorsby 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, unwrapResolvableTo(#9972) - Clip unbalanced brackets in arbitrary values (#9973)
- Don’t reorder webkit scrollbar pseudo elements (#9991)
- Deterministic sorting of arbitrary variants (#10016)
- Add
datakey 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 thetheme.dropShadowtypes (#10072) - Update list of length units (#10100)
- Fix not matching arbitrary properties when closely followed by square brackets (#10212)
- Allow direct nesting in
rootor@layernodes (#10229) - Don't prefix classes in arbitrary variants (#10214)
- Fix perf regression when checking for changed content (#10234)
- Fix missing
blocklistmember in theConfigtype (#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
layerinsidevariantslayer (#10505) - Add
--watch=alwaysoption to prevent exit when stdin closes (#9966)
Changed
- Alphabetize
themekeys in default config (#9953) - Update esbuild to v17 (#10368)
- Include
outline-colorintransitionandtransition-colorsutilities (#10385)
3.2.4 - 2022-11-11
Added
- Add
blocklistoption 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
rawcontent 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-settingsare included in Preflight (#9707) - Fix fractional values not being parsed properly inside arbitrary properties (#9705)
- Fix incorrect selectors when using
@applyin 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
supportsin types (#9616) - Fix missing PostCSS dependencies in the CLI (#9617)
- Ensure
micromatchis a proper CLI dependency (#9620) - Ensure modifier values exist when using a
modifiersobject formatchVariant(ba6551d)
3.2.0 - 2022-10-19
Added
- Add new
@configdirective (#9405) - Add new
relative: trueoption to resolve content paths relative to the config file (#9396) - Add new
supports-*variant (#9453) - Add new
min-*andmax-*variants (#9558) - Add new
aria-*variants (#9557, #9588) - Add new
data-*variants (#9559, #9588) - Add new
break-keeputility forword-break: keep-all(#9393) - Add new
collapseutility forvisibility: collapse(#9181) - Add new
fill-noneutility forfill: none(#9403) - Add new
stroke-noneutility forstroke: none(#9403) - Add new
place-content-baselineutility forplace-content: baseline(#9498) - Add new
place-items-baselineutility forplace-items: baseline(#9507) - Add new
content-baselineutility foralign-content: baseline(#9507) - Add support for configuring default
font-feature-settingsfor 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
sortfunction inmatchVariant(#9423) - Upgrade to
postcss-nestedv6.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-hiddenutility (#9147) - Honor the
hiddenattribute on elements in preflight (#9174) - Don't stop watching atomically renamed files (#9173, #9215)
- Fix duplicate utilities issue causing memory leaks (#9208)
- Fix
fontFamilyconfig 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
nullorundefined) when resolving the classList for intellisense (#9385) - Improve type checking for formal syntax (#9349, #9448)
- Fix incorrect required
contentkey in custom plugin configs (#9502, #9545) - Fix content path detection on Windows (#9569)
- Ensure
--contentis 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
@applyof user utilities when negative and non-negative versions both exist (#9027)
3.1.7 - 2022-07-29
Fixed
- Don't rewrite source maps for
@layerrules (#8971)
Added
- Added types for
resolveConfig(#8924)
3.1.6 - 2022-07-11
Fixed
3.1.5 - 2022-07-07
Added
- Support configuring a default
font-weightfor 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
tailwindcssandautoprefixerinpostcss.config.jsin 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 usingtheme()(#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
corePluginListtype 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-importin the CLI by default in watch mode (#8574, #8580)
3.1.1 - 2022-06-09
Fixed
- Fix candidate extractor regression (#8558)
- Split
::backdropinto 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
@applyrules (#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
importantselector 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
matchVariantthat use at-rules and placeholders (#8392) - Improve types of the
tailwindcss/plugin(#8400) - Allow returning parallel variants from
addVariantormatchVariantcallback functions (#8455) - Try using local
postcssinstallation first in the CLI (#8270) - Allow default ring color to be a function (#7587)
- Don't inherit
tovalue 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
Documentnodes (#7291) - Add
text-startandtext-endutilities (#6656) - Support customizing class name when using
darkMode: 'class'(#5800) - Add
--polloption to the CLI (#7725) - Add new
border-spacingutilities (#7102) - Add
enabledvariant (#7905) - Add TypeScript types for the
tailwind.config.jsfile (#7891) - Add
backdropvariant (#7924, #8526) - Add
grid-flow-denseutility (#8193) - Add
mix-blend-plus-lighterutility (#8288) - Add arbitrary variants (#8299)
- Add experimental
matchVariantAPI (#8310, 34fd0fb8) - Add
prefers-contrastmedia query variants (#8410) - Add opacity support when referencing colors with
themefunction (#8416) - Add
postcss-importsupport to the CLI (#8437) - Add
optionalvariant (#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.foois never defined (#7815) - Allow for custom properties in
rgb,rgba,hslandhslacolors (#7933) - Remove autoprefixer as explicit peer-dependency to avoid invalid warnings in situations where it isn't actually needed (#7949)
- Ensure the
percentagedata type is validated correctly (#8015) - Make sure
font-weightis inherited by form controls in all browsers (#8078)
Changed
- Replace
chalkwithpicocolors(#6039) - Replace
cosmiconfigwithlilconfig(#6039) - Update
cssnanoto avoid removing empty variables when minifying (#7818)
3.0.23 - 2022-02-16
Fixed
- Remove opacity variables from
:visitedpseudo class (#7458) - Support arbitrary values + calc + theme with quotes (#7462)
- Don't duplicate layer output when scanning content with variants + wildcards (#7478)
- Implement
getClassOrderinstead ofsortClassList(#7459)
3.0.22 - 2022-02-11
Fixed
- Temporarily move
postcssto 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
@applyorder regression (inaddComponents,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
--contentoption (#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
linuxstaticbuild target (#6914) - Ensure
@applyworks 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.optimizeUniversalDefaultsto 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
@applyin files without@tailwinddirectives (#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
DEBUGflag (#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
abbrrule in preflight (#6671) - Support HSL with hue units in arbitrary values (#6726)
- Add
node16-linux-arm64target 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-
userlayers (#6589) - Properly extract classes with arbitrary values in arrays and classes followed by escaped quotes (#6590)
- Improve jsx interpolation candidate matching (#6593)
- Ensure
@applyof 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
lito 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
lito 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
defaultinterop 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
beforeandafter) (#6018)
Added
- Add
placeholdervariant (#6106) - Add composable
touch-actionutilities (#6115) - Add support for "arbitrary properties" (#6161)
- Add
portraitandlandscapevariants (#6046) - Add
text-decoration-style,text-decoration-thickness, andtext-underline-offsetutilities (#6004) - Add
menureset to preflight (#6213) - Allow
0as a validlengthvalue (#6233, #6259) - Add CSS functions to data types (#6258)
- Support negative values for
scale-*utilities (c48e629) - Improve
lengthdata type, by validating each value individually (#6283)
Changed
- Deprecate
decoration-sliceanddecoration-breakin favorbox-decoration-sliceandbox-decoration-break(non-breaking) (#6004)
3.0.0-alpha.2 - 2021-11-08
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
prefixas a function (#5829)
Added
- Add
flex-basisutilities (#5671) - Make negative values a first-class feature (#5709)
- Add
fit-contentvalues formin/max-width/heightutilities (#5638) - Add
min/max-contentvalues formin/max-heightutilities (#5729) - Add all standard
cursor-*values by default (#5734) - Add
grow-*andshrink-*utilities, deprecateflex-grow-*andflex-shrink-*(#5733) - Add
text-decoration-colorutilities (#5760) - Add new declarative
addVariantAPI (#5809) - Add first-class
printvariant for targeting printed media (#5885) - Add
outline-style,outline-color,outline-widthandoutline-offsetutilities (#5887) - Add full color palette for
fill-*andstroke-*utilities (#5933) - Add composable API for colored box shadows (#5979)
Fixed
- Configure chokidar's
awaitWriteFinishsetting to avoid occasional stale builds on Windows (#5774) - Fix CLI
--contentoption (#5775) - Fix before/after utilities overriding custom content values at larger breakpoints (#5820)
- Cleanup duplicate properties (#5830)
- Allow
_insideurl()when using arbitrary values (#5853) - Prevent crashes when using comments in
@layerAtRules (#5854) - Handle color transformations properly with
theme(...)for all relevant plugins (#4533, #5871) - Ensure
@apply-ing a utility with multiple definitions works (#5870)
3.0.0-alpha.1 - 2021-10-01
Changed
- Remove AOT engine, make JIT the default (#5340)
- Throw when trying to
@applythegroupclass (#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-alignvalues to config file instead of hard-coding (#5487) - Rename
overflow-cliptotext-clipandoverflow-ellipsistotext-ellipsis(#5630)
Added
- Add native
aspect-ratioutilities (#5359) - Unify config callback helpers into single object (#5382)
- Preserve original color format when adding opacity whenever possible (#5154)
- Add
accent-colorutilities (#5387) - Add
scroll-behaviorutilities (#5388) - Add
will-changeutilities (#5448) - Add
text-indentutilities (#5449) - Add
columnutilities (#5457) - Add
border-hiddenutility (#5485) - Add
align-subandalign-superutilities by default (#5486) - Add
break-before,break-insideandbreak-afterutilities (#5530) - Add
filevariant for::file-selector-buttonpseudo element (#4936) - Add comprehensive arbitrary value support (#5568)
- Add
touch-actionutilities (#5603) - Add
inheritto default color palette (#5597) - Add
overflow-clip,overflow-x-clipandoverflow-y-cliputilities (#5630) - Add
[open]variant (#5627) - Add
scroll-snaputilities (#5637) - Add
border-xandborder-ywidth and color utilities (#5639)
Fixed
- Fix defining colors as functions when color opacity plugins are disabled (#5470)
- Fix using negated
contentglobs (#5625) - Fix using backslashes in
contentglobs (#5628)
2.2.19 - 2021-10-29
Fixed
- Ensure
corePluginsorder 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
awaitWriteFinishsetting 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
-ifor input file continues to work even though deprecated (#5464)
2.2.14 - 2021-09-08
Fixed
- Only use
@defaultsin JIT, switch back toclean-cssin case there's any meaningful differences in the output (bf248cb)
2.2.13 - 2021-09-08
Fixed
- Replace
clean-csswithcssnanofor 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
optimizeUniversalDefaultsflag (a9e160c)
2.2.9 - 2021-08-30
Fixed
- JIT: Fix
@applying utilities that contain variants + the important modifier (#4854) - JIT: Don't strip "null" when parsing tracked file paths (#5008)
- Pin
clean-cssto 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-positionutilities (#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-baselineutility (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-startandstep-endin 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
@layerrules 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 defaultdisplayvalue in Preflight (#4873) - Fix variant configuration not being applied to
backdropOpacityutilities (#4892)
2.2.4 - 2021-06-23
Fixed
- Remove
postinstallscript 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 stackingpeer-*variants (#4757) - Remove outdated focus style fix in Preflight (#4780)
- Enable
purgeif provided on the CLI (#4772) - JIT: Fix error when not using a config file with postcss-cli (#4773)
- Fix issue with
resolveConfignot being importable in Next.js pages (#4725)
2.2.2 - 2021-06-18
Fixed
- JIT: Reintroduce
transform,filter, andbackdrop-filterclasses 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=watchuntil your build runner has been updated to support PostCSS'sdir-dependencymessage type.
Added
- Add
background-originutilities (#4117) - Improve
@applyperformance 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
matchUtilitiesAPI 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
rawsyntax inpurgeconfig (#4272) - Add
emptyvariant (#3298) - Update
modern-normalizeto v1.1 (#4287) - Implement
themefunction internally, removepostcss-functionsdependency (#4317) - Add
screenfunction to improve nesting plugin compatibility (#4318) - JIT: Add universal shorthand color opacity syntax (#4348)
- JIT: Add
@tailwind variantsdirective to replace@tailwind screens(#4356) - JIT: Add support for PostCSS
dir-dependencymessages inTAILWIND_DISABLE_TOUCHmode (#4388) - JIT: Add per-side border color utilities (#4404)
- JIT: Add support for
beforeandafterpseudo-element variants andcontentutilities (#4461) - Add new
transformandextractAPIs to simplify PurgeCSS/JIT customization (#4469) - JIT: Add exhaustive pseudo-class and pseudo-element variant support (#4482)
- JIT: Add
caret-colorutilities (#4499) - Rename
lightBluetosky, emit console warning when using deprecated name (#4513) - New CLI with improved JIT support,
--watchmode, and more (#4526, 4558) - JIT: Add new
peer-*variants for styling based on sibling state (#4556) - Expose
safelistas a top-level option underpurgefor both JIT and classic engines (#4580) - JIT: Remove need for
transformclass when using classes likescale-*,rotate-*, etc. (#4604) - JIT: Remove need for
filterandbackdrop-filterclasses when using classes likecontrast-*,backdrop-blur-*, etc. (#4614) - Support passing a custom path for your PostCSS configuration in the Tailwind CLI (#4607)
- Add
blur-noneby default with intent to deprecateblur-0(#4614)
Fixed
- JIT: Improve support for Svelte class bindings (#4187)
- JIT: Improve support for
calcandvarin arbitrary values (#4147) - Convert
hslcolors tohslawhen transforming for opacity support instead ofrgba(#3850) - Fix
backdropBlurvariants 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
borderutility (#4277) - JIT: Fix source maps for expanded
@tailwinddirectives (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
groupvariants (#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
rawPurgeCSS 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-modeandbackground-blend-modeutilities (#3920) - Add new
box-decoration-breakutilities (#3911) - Add new
isolationutilities (#3914) - Add
inline-tabledisplay utility (#3563) - Add
list-itemdisplay utility (#3929) - Add new
filterandbackdrop-filterutilities (#3923)
2.0.4 - 2021-03-17
Fixed
- Pass full
var(--bg-opacity)value asopacityValuewhen defining colors as functions
2.0.3 - 2021-02-07
Fixed
- Ensure sourcemap input is deterministic when using
@applyin 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
darkvariants by default for color opacity utilities (#2975)
Added
- Add support for a
tailwind.config.cjsfile in Node ESM projects (#3181) - Add version comment to Preflight (#3255)
- Add
cursor-helpby default (#3199)
2.0.2 - 2020-12-11
Fixed
- Fix issue with
@applynot working as expected with!importantinside an at-rule (#2824) - Fix issue with
@applynot working as expected with defined classes (#2832) - Fix memory leak, and broken
@applywhen splitting up files (#3032)
Added
- Add default values for the
ringutility (#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-ellipsisandoverflow-cliputilities (#1289) - Add
transform-gputo force hardware acceleration on transforms when desired (#1380) - Extend default spacing scale (#2630, 7f05204)
- Add spacing scale to
insetplugin (#2630) - Add percentage sizes to
translate,inset, andheightplugins (#2630, 5259560) - Extend default font size scale (#2609, #2619)
- Support using
@applywith complex classes, including variants likelg:hover:bg-blue-500(#2159) - Add new
2xlbreakpoint 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-hoverfor color plugins,boxShadow, andtextDecorationby default (28985b6, f6923b1) - Enable
focusfor z-index utilities by default (ae5b3d3) - Support
extendinvariantsconfiguration (#2651) - Add
max-w-proseclass 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-withinfor all plugins that havefocusenabled by default (1a21f072, f6923b1) - Added new
ringutilities for creating outline/focus rings using box shadows (#2747, 879f088, e0788ef) - Added
5and95to 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
targetfeature 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, andshadow-xsby default in favor of newringAPI (#2747) - Switch
normalize.csstomodern-normalize(#2572) - Rename
whitespace-no-wraptowhitespace-nowrap(#2664) - Rename
flex-no-wraptoflex-nowrap(#2676) - Remove
clearfixutility, recommendflow-rootinstead (#2766) - Disable
hoverandfocusforfontWeightutilities by default (f6923b1) - Remove
grid-gapfallbacks needed for old versions of Safari (5ec45fa) - Change special use of 'default' in config to 'DEFAULT' (#2580)
- New
@applyimplementation, slight backwards incompatibilities with previous behavior (#2159) - Make
themeretrieve the expected resolved value when theme value is complex (e13f083c4) - Move
truncateclass totextOverflowcore plugin (#2562) - Remove
scrolling-touchandscrolling-autoutilities (#2573) - Modernize default system font stacks (#1711)
- Upgrade to PurgeCSS 3.0 (8e4e0a0)
- Change default
text-6xlfont-size to 3.75rem instead of 4rem (#2619) - Ignore
[hidden]elements withinspaceanddivideutilities instead oftemplateelements (#2642) - Automatically prefix keyframes and animation names when a prefix is configured (#2621, #2641)
- Merge
extendobjects deeply by default (#2679) - Respect
preserveHtmlElementsoption even when using custom PurgeCSS extractor (#2704) - Namespace all internal custom properties under
tw-to avoid collisions with end-user custom properties (#2771)
2.0.0-alpha.25 - 2020-11-17
Fixed
- Fix issue where
ring-offset-0didn't work due to unitless0incalcfunction (3de0c48)
2.0.0-alpha.24 - 2020-11-16
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.500is not present in config (e40079a)
2.0.0-alpha.23 - 2020-11-16
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)
2.0.0-alpha.22 - 2020-11-16
Changed
All custom properties have been internally namespaced underI made a git boo-boo, check alpha.23 insteadtw-to avoid collisions with end-user custom properties (#2771)
2.0.0-alpha.21 - 2020-11-15
Changed
- Upgrade to PostCSS 8, Autoprefixer 10, move
postcssandautoprefixerto peerDependencies (729b400)
2.0.0-alpha.20 - 2020-11-13
Changed
- Remove
clearfixutility, recommendflow-rootinstead (#2766)
2.0.0-alpha.19 - 2020-11-13
Fixed
- Don't crash when color palette is empty (278c203)
2.0.0-alpha.18 - 2020-11-13
Changed
blackandwhitehave been added tocolors.js(b3ed724)
Fixed
- Add support for colors as closures to
ringColorandringOffsetColor, previously would crash build (62a47f9)
2.0.0-alpha.17 - 2020-11-13
Changed
- Remove
grid-gapfallbacks needed for old versions of Safari (5ec45fa)
2.0.0-alpha.16 - 2020-11-12
Added
- Enable
focus,focus-within, anddarkvariants (when enabled) for all ring utilities by default (e0788ef)
2.0.0-alpha.15 - 2020-11-11
Added
- Added
ring-insetutility for rendering rings as inset shadows (879f088)
Changed
ringWidthutilities always reset ring styles to ensure no accidental variable inheritance through the cascade (879f088)
2.0.0-alpha.14 - 2020-11-11
Added
- Enable
focus-withinforoutlineutilities by default (f6923b1) - Enable
focus-withinforringWidthutilities by default (f6923b1) - Enable
group-hoverforboxShadowutilities by default (f6923b1) - Enable
group-hoverandfocus-withinfortextDecorationutilities by default (f6923b1)
Changed
- Disable
hoverandfocusforfontWeightutilities by default (f6923b1)
2.0.0-alpha.13 - 2020-11-11
Added
- Add support for default duration and timing function values whenever enabling transitions (#2755)
2.0.0-alpha.12 - 2020-11-10
Fixed
- Prevent
boxShadowutilities from overriding ring shadows added by components like in the custom forms plugin (c3dd3b6)
2.0.0-alpha.11 - 2020-11-09
Fixed
- Convert
noneto0 0 #0000when used for shadows to ensure compatibility withringutilities (4eecc27)
2.0.0-alpha.10 - 2020-11-09
Added
Changed
- Removed
shadow-outline,shadow-solid, andshadow-xsin favor of newringAPI (#2747)
2.0.0-alpha.9 - 2020-11-07
Added
- Added
shadow-solidutility, a 2px solid shadow that uses the current text color (369cfae) - Enable
focus-withinwhere useful by default (1a21f072)
Changed
- Update
shadow-outlineto use the new blue (b078238)
2.0.0-alpha.8 - 2020-11-06
Added
- Add
11to spacing scale (7f05204) - Add percentage-based height values (5259560)
- Add indigo to the color palette by default (700866c)
Changed
- Use
coolGrayas the default gray (700866c)
2.0.0-alpha.7 - 2020-11-05
Changed
- Revert upgrading to PostCSS 8 lol
2.0.0-alpha.6 - 2020-11-04
Changed
- Respect
preserveHtmlElementsoption even when using custom PurgeCSS extractor (#2704) - Set font-family and line-height to
inheritonbodyto behave more like v1.x (#2729)
2.0.0-alpha.5 - 2020-10-30
Changed
- Upgrade to PostCSS 8 (59aa484)
2.0.0-alpha.4 - 2020-10-29
Added
- Support deep merging of arrays of objects under
extend(#2700)
2.0.0-alpha.3 - 2020-10-27
Added
- Support flattening deeply nested color objects (#2148)
- Support defining presets as functions (#2680)
Changed
2.0.0-alpha.2 - 2020-10-25
Added
Changed
- Revert use of logical properties for
spaceanddivideutilities (#2644) spaceanddivideutilities ignore elements with[hidden]now instead of only ignoringtemplateelements (#2642)- Set default font on
body, not justhtml(#2643) - Automatically prefix keyframes and animation names when a prefix is configured (#2621, #2641)
- Rename
whitespace-no-wraptowhitespace-nowrap(#2664)
1.9.6 - 2020-10-23
Changed
-
The
presetsfeature had unexpected behavior where a preset config without its ownpresetskey 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.
2.0.0-alpha.1 - 2020-10-20
Added
- Added dark mode support (#2279, #2631)
- Added
overflow-ellipsisandoverflow-cliputilities (#1289) - Add
transform-gputo force hardware acceleration on transforms when beneficial (#1380) - Extended spacing scale (#2630)
- Add spacing scale to
insetplugin (#2630) - Enable useful relative sizes for more plugins (#2630)
- Extend font size scale (#2609, #2619)
- Support using
@applywith complex classes (#2159) - Add new
2xlbreakpoint (#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-hoverfor color utilities by default (28985b6) - Enable
focusfor z-index utilities by default (ae5b3d3)
Changed
- New
@applyimplementation, slight backwards incompatibilities with previous behavior (#2159) - Move
truncateclass totextOverflowcore plugin (#2562) - Removed
targetfeature and dropped any compatibility with IE 11 (#2571) - Switch
normalize.csstomodern-normalize(#2572) - Remove
scrolling-touchandscrolling-autoutilities (#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.0Reverted for now- Use logical properties for
spaceanddivideutilities (#1883) - Make
themeretrieve 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
themewith default line-heights did not resolve correctly
1.9.4 - 2020-10-17
Fixed
- Fix issue changing plugins defined using the
withOptionsAPI would not trigger rebuilds in watch processes
1.9.3 - 2020-10-16
Fixed
- Fix issue where
tailwindcss init --fullscaffolded a corrupt config file (https://github.com/tailwindlabs/tailwindcss/issues/2556)
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-wrapandoverflow-wraptogether, not one or the other sinceword-wrapis IE-only
1.9.1 - 2020-10-14
Fixed
- Don't import
corePluginsinresolveConfigto avoid bundling browser-incompatible code (#2548)
1.9.0 - 2020-10-12
Added
- Add new
presetsconfig option (#2474) - Scaffold new
tailwind.config.jsfiles with availablefutureflags commented out (#2379) - Add
col-span-fullandrow-span-full(#2471) - Make
outlineconfigurable,outline-nonemore accessible by default, and addoutline-blackandoutline-white(#2460) - Add additional small
rotateandskewvalues (#2528) - Add
xl,2xl, and3xlborder radius values (#2529) - Add new utilities for
grid-auto-columnsandgrid-auto-rows(#2531) - Promote
defaultLineHeightsandstandardFontWeightsfrom experimental to future
Fixed
- Don't escape keyframe values (#2432)
- Use
word-wrapinstead ofoverflow-wrapinie11target mode (#2391)
Experimental
- Add experimental
2xlbreakpoint (#2468) - Rename
{u}-max-contentand{u}-min-contentutilities to{u}-maxand{u}-minin 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.pluginwork in ESM environments for reasons
1.8.10 - 2020-09-14
Fixed
- Prevent new
darkexperiment from causing third-partydarkvariants to inherit stacking behavior (#2382)
1.8.9 - 2020-09-13
Fixed
- Add negative spacing values to inset plugin in the
extendedSpacingScaleexperiment (#2358) - Fix issue where
!importantwas stripped from declarations within rules that used@applywithapplyComplexClasses(#2376)
Changed
1.8.8 - 2020-09-11
Fixed
- Register dark mode plugin outside of
resolveConfigcode 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
resolveConfigdidn'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
@applywhen using theapplyComplexClassesexperiment (#2271)
Changed
- Rename
font-hairlineandfont-thintofont-thinandfont-extralightbehindstandardFontWeightsflag (experimental until v1.9.0) (#2333)
1.8.3 - 2020-09-05
Fixed
- Fix issue where
font-variant-numericutilities would break in combination with most CSS minifier configurations (f3660ce) - Only warn about
conservativepurge 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
pluginsarray 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
preserveHtmlElementsoption forpurge(#2283) - New
layersmode forpurge(#2288) - New
font-variant-numericutilities (#2305) - New
place-items,place-content,place-self,justify-items, andjustify-selfutilities (#2306) - Support configuring variants as functions (#2309)
Changed
- CSS within
@layerat-rules are now grouped with the corresponding@tailwindat-rule (#2312)
Deprecated
conservativepurge mode, deprecated in favor oflayers
1.7.6 - 2020-08-29
Fixed
- Fix bug where the new experimental
@applyimplementation 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.jsfile
Changed
- Make
@applyinsensitive to whitespace in the newapplyComplexClassesexperiment
Fixed
- Fix bug where the new
applyComplexClassesexperiment 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
gradientColorStopsplugin 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
contentsdisplay utility - Default letter-spacing per font-size
- Divide border styles
- Access entire config object from plugins
- Define colors as closures
- Use
@applywith 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
- Deprecated gap utilities
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
@keyframesrespecting 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-motionvariants - New
overscroll-behaviourutilities - Generate CSS without an input file
1.5.2 - 2020-07-21
Fixed
- Fixes issue where you could no longer use
@applywith 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
variantssupport - Responsive
containervariants - New
focus-visiblevariant - New
checkedvariant
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
divideColorplugin 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, addpurge: falseshorthand
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-extradependency to^8.0.0to preserve Node 8 compatibility until Tailwind 2.0
Fixed
- Fix missing unit in calc bug in space plugin (
space-x-0didn't work for example)
1.3.4 - 2020-04-21
Fixed
- Fix bug where
divide-{x/y}-0utilities didn't work due to missing unit incalccall
1.3.3 - 2020-04-21
Added
- Add forgotten responsive variants for
space,divideWidth, anddivideColorutilities
1.3.1 - 2020-04-21
Fixed
- Fix bug where the
space-xutilities were not being applied correctly due to referencing--space-y-reverseinstead of--space-x-reverse
1.3.0 - 2020-04-21
Added
- New
spaceanddividelayout utilities - New
transition-delayutilities - New
group-focusvariant - Support for specifying a default line-height for each font-size utility
- Support for breakpoint-specific padding for
containerclass - Added
currentto the default color palette - New
inline-gridutility - New
flow-rootdisplay utility - New
clear-noneutility
1.2.0 - 2020-02-05
Added
- CSS Transition support
- CSS Transform support
- CSS Grid support
- Added
max-w-{screen}utilities - Added
max-w-noneutility - Added
rounded-mdutility - Added
shadow-smutility - Added
shadow-xsutility - Added
stroke-widthutilities - 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
pluginandplugin.withOptionsAPIs
Changed
- Allow plugins to extend the user's config
1.2.0-canary.8 - 2020-02-05
Added
- Add additional fixed-size line-height utilities
1.2.0-canary.7 - 2020-02-04
Removed
- Remove Inter from font-sans, plan to add later under new class
1.2.0-canary.6 - 2020-02-03
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
1.2.0-canary.5 - 2020-01-08
Added
- Adds missing dependency
resolvewhich is required for making config dependencies watchable
1.2.0-canary.4 - 2020-01-08
Added
- CSS Transition support
- CSS Transform support
- CSS Grid support
- New
max-w-{screen}utilities - Added
max-w-noneutility - Added "Inter" to the default sans-serif font stack
- Add
rounded-mdutility - Add
shadow-smutility - 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
pluginandplugin.withOptionsAPIs
[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
.groupclass. I'm sorry 😞
Fixed
- Fixes a bug where the
.groupclass was not receiving the user's configured prefix when using theprefixoption
1.2.0-canary.1 - 2019-10-22
Changed
- Don't watch
node_modulesfiles 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
themeconfig didn't receive the second utils argument
1.2.0-canary.0 - 2019-10-14
Added
- Automatically watch all config file dependencies (plugins, design tokens imported from other files, etc.) for changes when build watcher is running
- Add
justify-evenlyutility
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
autowould 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-doubleutility - 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
!importantdirectly 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 preflightinstead of@tailwind base, this is the source of many support requests
1.0.2 - 2019-05-27
Fixed
- Fixes a bug where
@screenrules 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
1.0.0-beta.10 - 2019-05-12
Changed
- Use
9999and-9999fororder-lastandorder-firstutilities respectively
1.0.0-beta.9 - 2019-05-12
Added
- Add
bg-repeat-roundandbg-repeat-spaceutilities - Add
select-allandselect-autoutilities
Changed
- Make all utilities responsive by default
1.0.0-beta.8 - 2019-04-28
Added
- Adds
responsivevariants for the new order utilities by default, should have been there all along
1.0.0-beta.7 - 2019-04-27
Fixed
- Fixes a bug where you couldn't extend the margin config
1.0.0-beta.6 - 2019-04-27
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
orderutilities - Add
cursor-textclass by default
Changed
- Make it possible to access your fully merged config file in JS
Removed
- Removed
negativeMarginplugin, now the regularmarginplugin supports generating negative classes (like-mx-6) by using negative keys in the config, like-6
1.0.0-beta.5 - 2019-04-18
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
@applydirectives
1.0.0-beta.4 - 2019-03-29
Added
- Add the
containerkey 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-Regularfrom 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
1.0.0-beta.3 - 2019-03-18
Added
- Support lazy evaluation in
theme.extend
Changed
- Use lighter default border color
- Revert #745 and use
bolderfor strong tags by default instead offontWeight.bold
1.0.0-beta.2 - 2019-03-17
Changed
- Closures in the
themesection of the config file are now passed athemefunction instead of an object
Fixed
- Fix issue where
@screendidn't work at all 🙃
1.0.0-beta.1 - 2019-03-17
Added
- New config file structure
- New expanded default color palette
- New default
maxWidthscale - Added utilities for
list-style-typeandlist-style-position - Added
break-allutility
Changed
object-positionutilities are now customizable undertheme.objectPositioncursorutilities are now customizable undertheme.cursorsflex-grow/shrinkutilities are now customizable undertheme.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-autoprefixeroption to CLIbuildcommand
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
shadowLookupfrom 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 utilitiesgenerated 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-outlineutility 🤦♂️
0.6.0 - 2018-06-21
Added
- Added border collapse utilities for styling tables
- Added more axis-specific overflow utilities
- Added
.outline-noneutility for suppressing focus styles - Added
.shadow-outlineutility 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 !importantstyles from focusable but keyboard-inaccessible elements - Moved screen prefix for responsive
group-hovervariants - 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
.romanclass to.not-italicdue to the fact that it breaks compatibility with cssnext: postcss/postcss-selector-not#10. We'll stick with.romanfor now with a plan to switch to.not-italicin another breaking version should that issue get resolved in postcss-selector-not.
0.5.0 - 2018-03-13
Added
- Plugin system
- Added
.sticky positionutility - Added
.cursor-waitand.cursor-moveutilities - Added
.bg-autobackground size utility - Background sizes are now customizable
- Support for active variants
- Better postcss-import support
- Configuration options for the
.containercomponent
Changed
- The
.containercomponent is now a built-in plugin - State variant precedence changes
- New config file keys
.overflow-x/y-scrollnow setoverflow: scrollinstead ofoverflow: auto.romanrenamed to.not-italic
0.4.3 - 2018-03-13
Changed
- Use
global.Objectto 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
imgtags 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
fontshorthand - Replace stylefmt with Perfectionist to avoid weird stylelint conflicts
0.4.0 - 2017-12-15
Added
@apply'd classes can now be made!importantexplicitly
Changed
@applynow strips!importantfrom 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
@variantsat-rule - Customize the separator character
- Missing config keys now fallback to their default values
- New utilities
Changed
- Lists now have no margins by default
.pinno longer sets width and height to 100%- SVG
fillno 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
autois no longer a hard-coded margin value- The
defaultConfigfunction is now a separate module - Rounded utilities now combine position and radius size
- Border width utilities no longer affect border color/style
@applyis now very strict about what classes can be applied- Add
optionskey 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, andmb-automargin utilities - Add
sans-serifto end of defaultsansfont stack
Changed
- If using Webpack, it will now watch your config file changes
- When running
tailwind init [filename], automatically append.jsto 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-touchand.scrolling-autoutilities 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 buildCLI command not writing output files
0.1.0 - 2017-11-01
Added
- Everything!