Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

tailwindcss

tailwindlabs39.6mMIT4.0.6TypeScript support: included

A utility-first CSS framework for rapidly building custom user interfaces.

readme

<picture> <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/tailwindlabs/tailwindcss/HEAD/.github/logo-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/tailwindlabs/tailwindcss/HEAD/.github/logo-light.svg"> Tailwind CSS </picture>

A utility-first CSS framework for rapidly building custom user interfaces.

Build Status Total Downloads Latest Release License


Documentation

For full documentation, visit tailwindcss.com.

Community

For help, discussion about best practices, or any other conversation that would benefit from being searchable:

Discuss Tailwind CSS on GitHub

For chatting with others using the framework:

Join the Tailwind CSS Discord Server

Contributing

If you're interested in contributing to Tailwind CSS, please read our contributing docs before submitting a pull request.

changelog

Changelog

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

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

Unreleased

Fixed

  • Export tailwindcss/lib/util/flattenColorPalette.js for backward compatibility (#16411)
  • Fix sorting numeric utilities when they have different magnitudes (#16414)

4.0.6 - 2025-02-10

Fixed

  • Revert change to no longer include theme variables that aren't used in compiled CSS (#16403)

4.0.5 - 2025-02-08

Added

  • Add @theme static option for always including theme variables in compiled CSS (#16211)

Fixed

  • Remove rogue console.log from @tailwindcss/vite (#16307)

Changed

  • Don't include theme variables that aren't used in compiled CSS (#16211)

4.0.4 - 2025-02-06

Fixed

  • Fix a crash when setting JS theme values to null (#16210)
  • Ensure escaped underscores in CSS variables in arbitrary values are properly unescaped (#16206)
  • Ensure that the containers JS theme key is added to the --container-* namespace (#16169)
  • Ensure theme @keyframes are generated even if an --animation-* variable spans multiple lines (#16237)
  • Vite: Skip parsing stylesheets with the ?commonjs-proxy flag (#16238)
  • Fix order-first and order-last for Firefox (#16266)
  • Fix support for older instruction sets on Linux x64 builds of the standalone CLI (#16244)
  • Ensure NODE_PATH is respected when resolving JavaScript and CSS files (#16274)
  • Ensure Node addons are packaged correctly with FreeBSD builds (#16277)
  • Fix an issue where @variant inside a referenced stylesheet could cause a stack overflow (#16300)

4.0.3 - 2025-02-01

Fixed

  • Fix incorrect removal of @import url(); (#16144)

4.0.2 - 2025-01-31

Fixed

  • Only generate positive grid-cols-* and grid-rows-* utilities (#16020)
  • Ensure escaped theme variables are handled correctly (#16064)
  • Ensure we process Tailwind CSS features when only using @reference or @variant (#16057)
  • Refactor gradient implementation to work around prettier/prettier#17058 (#16072)
  • Vite: Ensure hot-reloading works with SolidStart setups (#16052)
  • Vite: Fix a crash when starting the development server in SolidStart setups (#16052)
  • Vite: Don't rebase URLs that appear to be aliases (#16078)
  • Vite: Transform <style> blocks in HTML files (#16069)
  • Prevent camel-casing CSS custom properties added by JavaScript plugins (#16103)
  • Do not emit @keyframes in @theme reference (#16120)
  • Discard invalid declarations when parsing CSS (#16093)
  • Do not emit empty CSS rules and at-rules (#16121)
  • Handle @variant when at the top-level of a stylesheet (#16129)

4.0.1 - 2025-01-29

Added

  • Include :open pseudo-class in existing open variant (#15349)

Fixed

  • Remove invalid min-w/h-none utilities (#15845)
  • Discard CSS variable shorthand utilities that don't use valid CSS variables (#15738)
  • Ensure font-size utilities with none modifier have a line-height set e.g. text-sm/none (#15921)
  • Ensure font-size utilities with unknown modifier don't generate CSS (#15921)
  • Don’t suggest font weight utilities more than once (#15857)
  • Suggest container query variants (#15857)
  • Disable bare value suggestions when not using the --spacing variable (#15857)
  • Ensure suggested classes are properly sorted (#15857)
  • Don’t look at .gitignore files outside initialized repos (#15941)
  • Find utilities when using the Svelte class shorthand syntax across multiple lines (#15974)
  • Find utilities when using the Angular class shorthand syntax (#15974)
  • Find utilities when using functions inside arrays (#15974)
  • Ensure that @tailwindcss/browser does not pollute the global namespace (#15978)
  • Ensure that tailwind-merge is not scanned when using the Vite plugin (#16005)
  • Ensure CSS theme variables are available within shadow roots (#15975)
  • Fix crash when project lives in the / directory (#15988)
  • Ensure custom variants have a non-empty selector list (#16009)
  • Upgrade: Ensure JavaScript config files on different drives are correctly migrated (#15927)
  • Upgrade: Migrate leading-[1] to leading-none (#16004)
  • Upgrade: Do not migrate arbitrary leading utilities to bare values (#16004)

4.0.0 - 2025-01-21

Added

  • New high-performance engine — where full builds are up to 5x faster, and incremental builds are over 100x faster — and measured in microseconds.
  • Designed for the modern web — built on cutting-edge CSS features like cascade layers, registered custom properties with @property, and color-mix().
  • Simplified installation — fewer dependencies, zero configuration, and just a single line of code in your CSS file.
  • First-party Vite plugin — tight integration for maximum performance and minimum configuration.
  • Automatic content detection — all of your template files are discovered automatically, with no configuration required.
  • Built-in import support — no additional tooling necessary to bundle multiple CSS files.
  • CSS-first configuration — a reimagined developer experience where you customize and extend the framework directly in CSS instead of a JavaScript configuration file.
  • CSS theme variables — all of your design tokens exposed as native CSS variables so you can access them anywhere.
  • Dynamic utility values and variants — stop guessing what values exist in your spacing scale, or extending your configuration for things like basic data attributes.
  • Modernized P3 color palette — a redesigned, more vivid color palette that takes full advantage of modern display technology.
  • Container queries — first-class APIs for styling elements based on their container size, no plugins required.
  • New 3D transform utilities — transform elements in 3D space directly in your HTML.
  • Expanded gradient APIs — radial and conic gradients, interpolation modes, and more.
  • @starting-style support — a new variant you can use to create enter and exit transitions, without the need for JavaScript.
  • not-* variant — style an element only when it doesn't match another variant, custom selector, or media or feature query.
  • Even more new utilities and variants — including support for color-scheme, field-sizing, complex shadows, inert, and more.

Start using Tailwind CSS v4.0 today by installing it in a new project, or playing with it directly in the browser on Tailwind Play.

For existing projects, we've published a comprehensive upgrade guide and built an automated upgrade tool to get you on the latest version as quickly and painlessly as possible.

For a deep-dive into everything that's new, check out the announcement post.

4.0.0-beta.10 - 2025-01-21

Added

  • Add support for using @variant to use variants in your CSS (#15663)
  • Include outline-color when transitioning colors (#15690)

Fixed

  • Add missing main and browser fields for @tailwindcss/browser (#15594)
  • Support escaping * in theme namespace syntax (e.g.: --color-\*: initial;) (#15603)
  • Respect @theme options when resolving values in custom functional utilities (#15623)
  • Discard invalid variants (e.g. data-checked-[selected=1]:*) (#15629)
  • Ensure -outline-offset-* utilities are suggested in IntelliSense (#15646)
  • Write to stdout when --output is set to - or omitted with @tailwindcss/cli (#15656)
  • Prevent not-* from being used with variants that have multiple sibling rules (#15689)
  • Upgrade (experimental): Pretty print --spacing(…) to prevent ambiguity (#15596)

Changed

  • Use more modern --alpha(color / 50%) syntax instead of --alpha(color, 50%) (#15665)
  • Rename @variant to @custom-variant (#15663)
  • Change outline-hidden to set outline-style: none except in forced colors mode (#15690)

4.0.0-beta.9 - 2025-01-09

Added

  • Add @tailwindcss/browser package to run Tailwind CSS in the browser (#15558)
  • Add @reference "…" API as a replacement for the previous @import "…" reference option (#15565)
  • Add support for defining functional utilities in CSS (#15455)
  • Add new --spacing(…), --alpha(…), and --theme(…) CSS functions (#15572)
  • Add musl-based Linux builds of the standalone CLI (#15567)
  • Improve performance of internal AST manipulations (#15529)

Fixed

  • Use the correct property value for place-content-between, place-content-around, and place-content-evenly utilities (#15440)
  • Don’t detect arbitrary properties when preceded by an escape (#15456)
  • Fix incorrectly named bg-round and bg-space utilities to bg-repeat-round to bg-repeat-space (#15462)
  • Fix inset-shadow-* suggestions in IntelliSense (#15471)
  • Only compile arbitrary values ending in ] (#15503)
  • Ensure @apply rules are processed in the correct order (#15542)
  • Allow negative utility names in @utility (#15573)
  • Remove all @keyframes contributed by JavaScript plugins when using @reference imports (#15581)
  • Upgrade (experimental): Do not extract class names from functions (e.g. shadow in filter: 'drop-shadow(…)') (#15566)
  • Upgrade (experimental): Migrate theme(spacing.2) to --spacing(2) (#15579)
  • Upgrade (experimental): Migrate theme(…) to --theme(…) (#15579)

Changed

  • Remove --container-prose in favor of a deprecated --max-width-prose theme variable so that *-prose is only available for max-width utilities and only for backward compatibility (#15439)
  • Use Vite post-processor APIs for processing Svelte <style> blocks (#15436)
  • Remove @property fallback rules for Firefox (#15622)

4.0.0-beta.8 - 2024-12-17

Fixed

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

4.0.0-beta.7 - 2024-12-13

Added

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

Fixed

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

Changed

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

4.0.0-beta.6 - 2024-12-06

Fixed

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

4.0.0-beta.5 - 2024-12-04

Added

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

Fixed

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

4.0.0-beta.4 - 2024-11-29

Fixed

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

4.0.0-beta.3 - 2024-11-27

Fixed

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

Changed

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

4.0.0-beta.2 - 2024-11-22

Fixed

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

Changed

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

4.0.0-beta.1 - 2024-11-21

Added

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

Fixed

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

4.0.0-alpha.36 - 2024-11-21

Added

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

Fixed

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

Changed

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

4.0.0-alpha.35 - 2024-11-20

Added

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

Fixed

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

Changed

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

4.0.0-alpha.34 - 2024-11-14

Added

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

Fixed

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

4.0.0-alpha.33 - 2024-11-11

Fixed

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

4.0.0-alpha.32 - 2024-11-11

Added

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

Fixed

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

Changed

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

4.0.0-alpha.31 - 2024-10-29

Added

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

Fixed

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

Changed

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

4.0.0-alpha.30 - 2024-10-24

Added

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

Fixed

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

Changed

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

4.0.0-alpha.29 - 2024-10-23

Added

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

Fixed

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

Changed

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

4.0.0-alpha.28 - 2024-10-17

Added

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

Fixed

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

4.0.0-alpha.27 - 2024-10-15

Added

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

Fixed

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

4.0.0-alpha.26 - 2024-10-03

Added

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

Fixed

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

Changed

  • Disallow bare values with decimal places (#14562)

4.0.0-alpha.25 - 2024-09-24

Added

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

Fixed

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

Changed

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

4.0.0-alpha.24 - 2024-09-11

Added

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

Fixed

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

4.0.0-alpha.23 - 2024-09-05

Added

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

4.0.0-alpha.22 - 2024-09-04

Added

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

Fixed

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

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

Added

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

Fixed

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

Changed

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

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

Added

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

Fixed

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

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

Added

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

Fixed

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

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

Added

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

Fixed

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

Changed

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

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

Added

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

Fixed

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

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

Added

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

Fixed

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

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

Fixed

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

Changed

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

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

Fixed

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

Changed

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

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

Fixed

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

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

Fixed

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

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

Added

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

Fixed

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

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

Added

Fixed

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

Changed

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

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

Added

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

Fixed

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

Changed

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

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

Fixed

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

Changed

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

Added

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

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

Added

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

Fixed

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

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

Fixed

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

Changed

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

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

Fixed

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

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

Fixed

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

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

Added

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

Fixed

  • Node compatibility fix (#13104)

Changes

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

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

Changed

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

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

  • First 4.0.0-alpha.1 release

3.4.17 - 2024-12-17

Fixed

  • Work around Node v22.12+ issue (#15421)

3.4.16 - 2024-12-03

Fixed

  • Ensure the TypeScript types for PluginsConfig allow undefined values (#14668)

Changed

  • Bumped lilconfig to v3.x (#15289)

3.4.15 - 2024-11-14

  • Bump versions for security vulnerabilities (#14697)
  • Ensure the TypeScript types for the boxShadow theme configuration allows arrays (#14856)
  • Set fallback for opacity variables to ensure setting colors with the selection:* variant works in Chrome 131 (#15003)

3.4.14 - 2024-10-15

Fixed

  • Don't set display: none on elements that use hidden="until-found" (#14625)

3.4.13 - 2024-09-23

Fixed

  • Improve source glob verification performance (#14481)

3.4.12 - 2024-09-17

Fixed

  • Ensure using @apply with utilities that use @defaults works with rules defined in the base layer when using optimizeUniversalDefaults (#14427)

3.4.11 - 2024-09-11

Fixed

  • Allow anchor-size(…) in arbitrary values (#14393)

3.4.10 - 2024-08-13

Fixed

  • Bump versions of plugins in the Standalone CLI (#14185)

3.4.9 - 2024-08-08

Fixed

  • No longer warns when broad glob patterns are detecting vendor folders

3.4.8 - 2024-08-07

Fixed

  • Fix minification when using nested CSS (#14105)
  • Warn when broad glob patterns are used in the content configuration (#14140)

3.4.7 - 2024-07-25

Fixed

  • Fix class detection in Slim templates with attached attributes and ID (#14019)
  • Ensure attribute values in data-* and aria-* modifiers are always quoted in the generated CSS (#14037)

3.4.6 - 2024-07-16

Fixed

  • Fix detection of some utilities in Slim/Pug templates (#14006)

Changed

  • Loosen :is() wrapping rules when using an important selector (#13900)

3.4.5 - 2024-07-15

Fixed

  • Disable automatic var() injection for anchor properties (#13826)
  • Use no value instead of blur(0px) for backdrop-blur-none and blur-none utilities (#13830)
  • Add .mts and .cts config file detection (#13940)
  • Don't generate utilities like px-1 unnecessarily when using utilities like px-1.5 (#13959)
  • Always generate -webkit-backdrop-filter for backdrop-* utilities (#13997)

3.4.4 - 2024-06-05

Fixed

  • Make it possible to use multiple <alpha-value> placeholders in a single color definition (#13740)
  • Don't prefix classes in arbitrary values of has-*, group-has-*, and peer-has-* variants (#13770)
  • Support negative values for {col,row}-{start,end} utilities (#13781)
  • Update embedded browserslist database (#13792)

3.4.3 - 2024-03-27

Fixed

  • Revert changes to glob handling (#13384)

3.4.2 - 2024-03-27

Fixed

  • Ensure max specificity of 0,0,1 for button and input Preflight rules (#12735)
  • Improve glob handling for folders with (, ), [ or ] in the file path (#12715)
  • Split :has rules when using experimental.optimizeUniversalDefaults (#12736)
  • Sort arbitrary properties alphabetically across multiple class lists (#12911)
  • Add mix-blend-plus-darker utility (#12923)
  • Ensure dashes are allowed in variant modifiers (#13303)
  • Fix crash showing completions in Intellisense when using a custom separator (#13306)
  • Transpile import.meta.url in config files (#13322)
  • Reset letter spacing for form elements (#13150)
  • Fix missing xx-large and remove double x-large absolute size (#13324)
  • Don't error when encountering nested CSS unless trying to @apply a class that uses nesting (#13325)
  • Ensure that arbitrary properties respect important configuration (#13353)
  • Change dark mode selector so @apply works correctly with pseudo elements (#13379)

3.4.1 - 2024-01-05

Fixed

  • Don't remove keyframe stops when using important utilities (#12639)
  • Don't add spaces to gradients and grid track names when followed by calc() (#12704)
  • Restore old behavior for class dark mode strategy (#12717)
  • Improve glob handling for folders with (, ), [ or ] in the file path (#12715)

Added

  • Add new selector and variant strategies for dark mode (#12717)

Changed

  • Support rtl and ltr variants on same element as dir attribute (#12717)

3.4.0 - 2023-12-19

Added

  • Add svh, lvh, and dvh values to default height/min-height/max-height theme (#11317)
  • Add has-* variants for :has(...) pseudo-class (#11318)
  • Add text-wrap utilities including text-balance and text-pretty (#11320, #12031)
  • Extend default opacity scale to include all steps of 5 (#11832)
  • Update Preflight html styles to include shadow DOM :host pseudo-class (#11200)
  • Increase default values for grid-rows-* utilities from 1–6 to 1–12 (#12180)
  • Add size-* utilities (#12287)
  • Add utilities for CSS subgrid (#12298)
  • Add spacing scale to min-w-*, min-h-*, and max-w-* utilities (#12300)
  • Add forced-color-adjust utilities (#11931)
  • Add forced-colors variant (#11694, #12582)
  • Add appearance-auto utility (#12404)
  • Add logical property values for float and clear utilities (#12480)
  • Add * variant for targeting direct children (#12551)

Changed

  • Simplify the sans font-family stack (#11748)
  • Disable the tap highlight overlay on iOS (#12299)
  • Improve relative precedence of rtl, ltr, forced-colors, and dark variants (#12584)

3.3.7 - 2023-12-18

Fixed

  • Fix support for container query utilities with arbitrary values (#12534)
  • Fix custom config loading in Standalone CLI (#12616)

3.3.6 - 2023-12-04

Fixed

  • Don’t add spaces to negative numbers following a comma (#12324)
  • Don't emit @config in CSS when watching via the CLI (#12327)
  • Improve types for resolveConfig (#12272)
  • Ensure configured font-feature-settings for mono are included in Preflight (#12342)
  • Improve candidate detection in minified JS arrays (without spaces) (#12396)
  • Don't crash when given applying a variant to a negated version of a simple utility (#12514)
  • Fix support for slashes in arbitrary modifiers (#12515)
  • Fix source maps of variant utilities that come from an @layer rule (#12508)
  • Fix loading of built-in plugins when using an ESM or TypeScript config with the Standalone CLI (#12506)

3.3.5 - 2023-10-25

Fixed

  • Fix incorrect spaces around - in calc() expression (#12283)

3.3.4 - 2023-10-24

Fixed

  • Improve normalisation of calc()-like functions (#11686)
  • Skip calc() normalisation in nested theme() calls (#11705)
  • Fix incorrectly generated CSS when using square brackets inside arbitrary properties (#11709)
  • Make content optional for presets in TypeScript types (#11730)
  • Handle variable colors that have variable fallback values (#12049)
  • Batch reading content files to prevent too many open files error (#12079)
  • Skip over classes inside :not(…) when nested in an at-rule (#12105)
  • Update types to work with Node16 module resolution (#12097)
  • Don’t crash when important and parent selectors are equal in @apply (#12112)
  • Eliminate irrelevant rules when applying variants (#12113)
  • Improve RegEx parser, reduce possibilities as the key for arbitrary properties (#12121)
  • Fix sorting of utilities that share multiple candidates (#12173)
  • Ensure variants with arbitrary values and a modifier are correctly matched in the RegEx based parser (#12179)
  • Fix crash when watching renamed files on FreeBSD (#12193)
  • Allow plugins from a parent document to be used in an iframe (#12208)
  • Add types for tailwindcss/nesting (#12269)
  • Bump jiti, fast-glob, and browserlist dependencies (#11550)
  • Improve automatic var injection for properties that accept a <dashed-ident> (#12236)

3.3.3 - 2023-07-13

Fixed

  • Fix issue where some pseudo-element variants generated the wrong selector (#10943, #10962, #11111)
  • Make font settings propagate into buttons, inputs, etc. (#10940)
  • Fix parsing of theme() inside calc() when there are no spaces around operators (#11157)
  • Ensure repeating-conic-gradient is detected as an image (#11180)
  • Move unknown pseudo-elements outside of :is by default (#11345)
  • Escape animation names when prefixes contain special characters (#11470)
  • Don't prefix arbitrary classes in group and peer variants (#11454)
  • Sort classes using position of first matching rule (#11504)
  • Allow variant to be an at-rule without a prelude (#11589)
  • Make PostCSS plugin async to improve performance (#11548)
  • Don’t error when a config file is missing (f97759f)

Added

  • Add aria-busy utility (#10966)

Changed

  • Reset padding for <dialog> elements in preflight (#11069)

3.3.2 - 2023-04-25

Fixed

  • Don’t move unknown pseudo-elements to the end of selectors (#10943, #10962)
  • Inherit gradient stop positions when using variants (#11002)
  • Honor default to position of gradient when using implicit transparent colors (#11002)
  • Ensure @tailwindcss/oxide doesn't leak in the stable engine (#10988)
  • Ensure multiple theme(spacing[5]) calls with bracket notation in arbitrary properties work (#11039)
  • Normalize arbitrary modifiers (#11057)

Changed

  • Drop support for Node.js v12 (#11089)

3.3.1 - 2023-03-30

Fixed

  • Fix edge case bug when loading a TypeScript config file with webpack (#10898)
  • Fix variant, @apply, and important selectors when using :is() or :has() with pseudo-elements (#10903)
  • Fix safelist config types (#10901)
  • Fix build errors caused by @tailwindcss/line-clamp warning (#10915, #10919)
  • Fix "process is not defined" error (#10919)

3.3.0 - 2023-03-27

Added

  • Support ESM and TypeScript config files (#10785)
  • Extend default color palette with new 950 shades (#10879)
  • Add line-height modifier support to font-size utilities (#9875)
  • Add support for using variables as arbitrary values without var(...) (#9880, #9962)
  • Add logical properties support for inline direction (#10166)
  • Add hyphens utilities (#10071)
  • Add from-{position}, via-{position} and to-{position} utilities (#10886)
  • Add list-style-image utilities (#10817)
  • Add caption-side utilities (#10470)
  • Add line-clamp utilities from @tailwindcss/line-clamp to core (#10768, #10876, #10862)
  • Add delay-0 and duration-0 utilities (#10294)
  • Add justify-normal and justify-stretch utilities (#10560)
  • Add content-normal and content-stretch utilities (#10645)
  • Add whitespace-break-spaces utility (#10729)
  • Add support for configuring default font-variation-settings for a font-family (#10034, #10515)

Fixed

  • Disallow using multiple selectors in arbitrary variants (#10655)
  • Sort class lists deterministically for Prettier plugin (#10672)
  • Ensure CLI builds have a non-zero exit code on failure (#10703)
  • Ensure module dependencies for value null, is an empty Set (#10877)
  • Fix format assumption when resolving module dependencies (#10878)

Changed

  • Mark rtl and ltr variants as stable and remove warnings (#10764)
  • Use inset instead of top, right, bottom, and left properties (#10765)
  • Make dark and rtl/ltr variants insensitive to DOM order (#10766)
  • Use :is to make important selector option insensitive to DOM order (#10835)

3.2.7 - 2023-02-16

Fixed

  • Fix use of :where(.btn) when matching !btn (#10601)
  • Revert including outline-color in transition and transition-colors by default (#10604)

3.2.6 - 2023-02-08

Fixed

  • Fix installation failing with yarn and pnpm by dropping oxide-api-shim (add1636)

3.2.5 - 2023-02-08

Added

  • Add standalone CLI build for 64-bit Windows on ARM (node16-win-arm64) (#10001)

Fixed

  • Cleanup unused variantOrder (#9829)
  • Fix foo-[abc]/[def] not being handled correctly (#9866)
  • Add container queries plugin to standalone CLI (#9865)
  • Support renaming of output files by PostCSS plugins in CLI (#9944)
  • Improve return value of resolveConfig, unwrap ResolvableTo (#9972)
  • Clip unbalanced brackets in arbitrary values (#9973)
  • Don’t reorder webkit scrollbar pseudo elements (#9991)
  • Deterministic sorting of arbitrary variants (#10016)
  • Add data key to theme types (#10023)
  • Prevent invalid arbitrary variant selectors from failing the build (#10059)
  • Properly handle subtraction followed by a variable (#10074)
  • Fix missing string[] in the theme.dropShadow types (#10072)
  • Update list of length units (#10100)
  • Fix not matching arbitrary properties when closely followed by square brackets (#10212)
  • Allow direct nesting in root or @layer nodes (#10229)
  • Don't prefix classes in arbitrary variants (#10214)
  • Fix perf regression when checking for changed content (#10234)
  • Fix missing blocklist member in the Config type (#10239)
  • Escape group names in selectors (#10276)
  • Consider earlier variants before sorting functions (#10288)
  • Allow variants with slashes (#10336)
  • Ensure generated CSS is always sorted in the same order for a given set of templates (#10382)
  • Handle variants when the same class appears multiple times in a selector (#10397)
  • Handle group/peer variants with quoted strings (#10400)
  • Parse alpha value from rgba/hsla colors when using variables (#10429)
  • Sort by layer inside variants layer (#10505)
  • Add --watch=always option to prevent exit when stdin closes (#9966)

Changed

  • Alphabetize theme keys in default config (#9953)
  • Update esbuild to v17 (#10368)
  • Include outline-color in transition and transition-colors utilities (#10385)

3.2.4 - 2022-11-11

Added

  • Add blocklist option to prevent generating unwanted CSS (#9812)

Fixed

  • Fix watching of files on Linux when renames are involved (#9796)
  • Make sure errors are always displayed when watching for changes (#9810)

3.2.3 - 2022-11-09

Fixed

  • Fixed use of raw content in the CLI (#9773)
  • Pick up changes from files that are both context and content deps (#9787)
  • Sort pseudo-elements ONLY after classes when using variants and @apply (#9765)
  • Support important utilities in the safelist (pattern must include a !) (#9791)

3.2.2 - 2022-11-04

Fixed

  • Escape special characters in resolved content base paths (#9650)
  • Don't reuse container for array returning variant functions (#9644)
  • Exclude non-relevant selectors when generating rules with the important modifier (#9677)
  • Fix merging of arrays during config resolution (#9706)
  • Ensure configured font-feature-settings are included in Preflight (#9707)
  • Fix fractional values not being parsed properly inside arbitrary properties (#9705)
  • Fix incorrect selectors when using @apply in selectors with combinators and pseudos (#9722)
  • Fix cannot read properties of undefined (reading 'modifier') (#9656, aa979d6)

3.2.1 - 2022-10-21

Fixed

  • Fix missing supports in types (#9616)
  • Fix missing PostCSS dependencies in the CLI (#9617)
  • Ensure micromatch is a proper CLI dependency (#9620)
  • Ensure modifier values exist when using a modifiers object for matchVariant (ba6551d)

3.2.0 - 2022-10-19

Added

  • Add new @config directive (#9405)
  • Add new relative: true option to resolve content paths relative to the config file (#9396)
  • Add new supports-* variant (#9453)
  • Add new min-* and max-* variants (#9558)
  • Add new aria-* variants (#9557, #9588)
  • Add new data-* variants (#9559, #9588)
  • Add new break-keep utility for word-break: keep-all (#9393)
  • Add new collapse utility for visibility: collapse (#9181)
  • Add new fill-none utility for fill: none (#9403)
  • Add new stroke-none utility for stroke: none (#9403)
  • Add new place-content-baseline utility for place-content: baseline (#9498)
  • Add new place-items-baseline utility for place-items: baseline (#9507)
  • Add new content-baseline utility for align-content: baseline (#9507)
  • Add support for configuring default font-feature-settings for a font family (#9039)
  • Add standalone CLI build for 32-bit Linux on ARM (node16-linux-armv7) (#9084)
  • Add future flag to disable color opacity utility plugins (#9088)
  • Add negative value support for outline-offset (#9136)
  • Add support for modifiers to matchUtilities (#9541)
  • Allow negating utilities using min/max/clamp (#9237)
  • Implement fallback plugins when there is ambiguity between plugins when using arbitrary values (#9376)
  • Support sort function in matchVariant (#9423)
  • Upgrade to postcss-nested v6.0 (#9546)

Fixed

  • Use absolute paths when resolving changed files for resilience against working directory changes (#9032)
  • Fix ring color utility generation when using respectDefaultRingColorOpacity (#9070)
  • Sort tags before classes when @apply-ing a selector with joined classes (#9107)
  • Remove invalid outline-hidden utility (#9147)
  • Honor the hidden attribute on elements in preflight (#9174)
  • Don't stop watching atomically renamed files (#9173, #9215)
  • Fix duplicate utilities issue causing memory leaks (#9208)
  • Fix fontFamily config TypeScript types (#9214)
  • Handle variants on complex selector utilities (#9262)
  • Fix shared config mutation issue (#9294)
  • Fix ordering of parallel variants (#9282)
  • Handle variants in utility selectors using :where() and :has() (#9309)
  • Improve data type analysis for arbitrary values (#9320)
  • Don't emit generated utilities with invalid uses of theme functions (#9319)
  • Revert change that only listened for stdin close on TTYs (#9331)
  • Ignore unset values (like null or undefined) when resolving the classList for intellisense (#9385)
  • Improve type checking for formal syntax (#9349, #9448)
  • Fix incorrect required content key in custom plugin configs (#9502, #9545)
  • Fix content path detection on Windows (#9569)
  • Ensure --content is used in the CLI when passed (#9587)

3.1.8 - 2022-08-05

Fixed

  • Don’t prefix classes within reused arbitrary variants (#8992)
  • Fix usage of alpha values inside single-named colors that are functions (#9008)
  • Fix @apply of user utilities when negative and non-negative versions both exist (#9027)

3.1.7 - 2022-07-29

Fixed

  • Don't rewrite source maps for @layer rules (#8971)

Added

  • Added types for resolveConfig (#8924)

3.1.6 - 2022-07-11

Fixed

  • Fix usage on Node 12.x (b4e637e)
  • Handle theme keys with slashes when using theme() in CSS (#8831)

3.1.5 - 2022-07-07

Added

  • Support configuring a default font-weight for each font size utility (#8763)
  • Add support for alpha values in safe list (#8774)

Fixed

  • Improve types to support fallback values in the CSS-in-JS syntax used in plugin APIs (#8762)
  • Support including tailwindcss and autoprefixer in postcss.config.js in standalone CLI (#8769)
  • Fix using special-characters as prefixes (#8772)
  • Don’t prefix classes used within arbitrary variants (#8773)
  • Add more explicit types for the default theme (#8780)

3.1.4 - 2022-06-21

Fixed

  • Provide default to <alpha-value> when using theme() (#8652)
  • Detect arbitrary variants with quotes (#8687)
  • Don’t add spaces around raw / that are preceded by numbers (#8688)

3.1.3 - 2022-06-14

Fixed

  • Fix extraction of multi-word utilities with arbitrary values and quotes (#8604)
  • Fix casing of import of corePluginList type definition (#8587)
  • Ignore PostCSS nodes returned by addVariant (#8608)
  • Fix missing spaces around arithmetic operators (#8615)
  • Detect alpha value in CSS theme() function when using quotes (#8625)
  • Fix "Maximum call stack size exceeded" bug (#8636)
  • Allow functions returning parallel variants to mutate the container (#8622)
  • Remove text opacity CSS variables from ::marker (#8622)

3.1.2 - 2022-06-10

Fixed

  • Ensure \ is a valid arbitrary variant token (#8576)
  • Enable postcss-import in the CLI by default in watch mode (#8574, #8580)

3.1.1 - 2022-06-09

Fixed

  • Fix candidate extractor regression (#8558)
  • Split ::backdrop into separate defaults group (#8567)
  • Fix postcss plugin type (#8564)
  • Fix class detection in markdown code fences and slim templates (#8569)

3.1.0 - 2022-06-08

Fixed

  • Types: allow for arbitrary theme values (for 3rd party plugins) (#7926)
  • Don’t split vars with numbers in them inside arbitrary values (#8091)
  • Require matching prefix when detecting negatives (#8121)
  • Handle duplicate At Rules without children (#8122)
  • Allow arbitrary values with commas in @apply (#8125)
  • Fix intellisense for plugins with multiple @apply rules (#8213)
  • Improve type detection for arbitrary color values (#8201)
  • Support PostCSS config options in config file in CLI (#8226)
  • Remove default [hidden] style in preflight (#8248)
  • Only check selectors containing base apply candidates for circular dependencies (#8222)
  • Rewrite default class extractor (#8204)
  • Move important selector to the front when @apply-ing selector-modifying variants in custom utilities (#8313)
  • Error when registering an invalid custom variant (#8345)
  • Create tailwind.config.cjs file in ESM package when running init (#8363)
  • Fix matchVariant that use at-rules and placeholders (#8392)
  • Improve types of the tailwindcss/plugin (#8400)
  • Allow returning parallel variants from addVariant or matchVariant callback functions (#8455)
  • Try using local postcss installation first in the CLI (#8270)
  • Allow default ring color to be a function (#7587)
  • Don't inherit to value from parent gradients (#8489)
  • Remove process dependency from log functions (#8530)
  • Ensure we can use @import 'tailwindcss/...' without node_modules (#8537)

Changed

  • Only apply hover styles when supported (future) (#8394)
  • Respect default ring color opacity (future) (#8448, 3f4005e)

Added

  • Support PostCSS Document nodes (#7291)
  • Add text-start and text-end utilities (#6656)
  • Support customizing class name when using darkMode: 'class' (#5800)
  • Add --poll option to the CLI (#7725)
  • Add new border-spacing utilities (#7102)
  • Add enabled variant (#7905)
  • Add TypeScript types for the tailwind.config.js file (#7891)
  • Add backdrop variant (#7924, #8526)
  • Add grid-flow-dense utility (#8193)
  • Add mix-blend-plus-lighter utility (#8288)
  • Add arbitrary variants (#8299)
  • Add experimental matchVariant API (#8310, 34fd0fb8)
  • Add prefers-contrast media query variants (#8410)
  • Add opacity support when referencing colors with theme function (#8416)
  • Add postcss-import support to the CLI (#8437)
  • Add optional variant (#8486)
  • Add <alpha-value> placeholder support for custom colors (#8501)

3.0.24 - 2022-04-12

Fixed

  • Prevent nesting plugin from breaking other plugins (#7563)
  • Recursively collapse adjacent rules (#7565)
  • Preserve source maps for generated CSS (#7588)
  • Split box shadows on top-level commas only (#7479)
  • Use local user CSS cache for @apply (#7524)
  • Invalidate context when main CSS changes (#7626)
  • Only add ! to selector class matching template candidate when using important modifier with multi-class selectors (#7664)
  • Correctly parse and prefix animation names with dots (#7163)
  • Fix extraction from template literal/function with array (#7481)
  • Don't output unparsable arbitrary values (#7789)
  • Fix generation of div:not(.foo) if .foo is never defined (#7815)
  • Allow for custom properties in rgb, rgba, hsl and hsla colors (#7933)
  • Remove autoprefixer as explicit peer-dependency to avoid invalid warnings in situations where it isn't actually needed (#7949)
  • Ensure the percentage data type is validated correctly (#8015)
  • Make sure font-weight is inherited by form controls in all browsers (#8078)

Changed

  • Replace chalk with picocolors (#6039)
  • Replace cosmiconfig with lilconfig (#6039)
  • Update cssnano to avoid removing empty variables when minifying (#7818)

3.0.23 - 2022-02-16

Fixed

  • Remove opacity variables from :visited pseudo class (#7458)
  • Support arbitrary values + calc + theme with quotes (#7462)
  • Don't duplicate layer output when scanning content with variants + wildcards (#7478)
  • Implement getClassOrder instead of sortClassList (#7459)

3.0.22 - 2022-02-11

Fixed

  • Temporarily move postcss to dependencies (#7424)

3.0.21 - 2022-02-10

Fixed

  • Move prettier plugin to dev dependencies (#7418)

3.0.20 - 2022-02-10

Added

  • Expose context.sortClassList(classes) (#7412)

3.0.19 - 2022-02-07

Fixed

  • Fix preflight border color fallback (#7288)
  • Correctly parse shadow lengths without a leading zero (#7289)
  • Don't crash when scanning extremely long class candidates (#7331)
  • Use less hacky fix for URLs detected as custom properties (#7275)
  • Correctly generate negative utilities when dash is before the prefix (#7295)
  • Detect prefixed negative utilities in the safelist (#7295)

3.0.18 - 2022-01-28

Fixed

  • Fix @apply order regression (in addComponents, addUtilities, ...) (#7232)
  • Quick fix for incorrect arbitrary properties when using URLs (#7252)

3.0.17 - 2022-01-26

Fixed

  • Remove false positive warning in CLI when using the --content option (#7220)

3.0.16 - 2022-01-24

Fixed

  • Ensure to transpile the PostCSS Nesting plugin (tailwindcss/nesting) (#7080)
  • Improve various warnings (#7118)
  • Fix grammatical mistake (cca5a38)

3.0.15 - 2022-01-15

Fixed

  • Temporarily remove optional chaining in nesting plugin (#7077)

3.0.14 - 2022-01-14

Added

  • Show warnings for invalid content config (#7065)

Fixed

  • Only emit utility/component variants when those layers exist (#7066)
  • Ensure nesting plugins can receive options (#7016)

3.0.13 - 2022-01-11

Fixed

  • Fix consecutive builds with at apply producing different CSS (#6999)

3.0.12 - 2022-01-07

Fixed

  • Allow use of falsy values in theme config (#6917)
  • Ensure we can apply classes that are grouped with non-class selectors (#6922)
  • Improve standalone CLI compatibility on Linux by switching to the linuxstatic build target (#6914)
  • Ensure @apply works consistently with or without @layer (#6938)
  • Only emit defaults when using base layer (#6926)
  • Emit plugin defaults regardless of usage (#6926)
  • Move default border color back to preflight (#6926)
  • Change experimental.optimizeUniversalDefaults to only work with @tailwind base (#6926)

3.0.11 - 2022-01-05

Fixed

  • Preserve casing of CSS variables added by plugins (#6888)
  • Ignore content paths that are passed in but don't actually exist (#6901)
  • Revert change that applies Tailwind's defaults in isolated environments like CSS modules (9fdc391)

3.0.10 - 2022-01-04

Fixed

  • Fix @apply in files without @tailwind directives (#6580, #6875)
  • CLI: avoid unnecessary writes to output files (#6550)

Added

  • Allow piping data into the CLI (#6876)

3.0.9 - 2022-01-03

Fixed

  • Improve DEBUG flag (#6797, #6804)
  • Ensure we can use < and > characters in modifiers (#6851)
  • Validate theme() works in arbitrary values (#6852)
  • Properly detect theme() value usage in arbitrary properties (#6854)
  • Improve collapsing of duplicate declarations (#6856)
  • Remove support for TAILWIND_MODE=watch (#6858)

3.0.8 - 2021-12-28

Fixed

  • Reduce specificity of abbr rule in preflight (#6671)
  • Support HSL with hue units in arbitrary values (#6726)
  • Add node16-linux-arm64 target for standalone CLI (#6693)

3.0.7 - 2021-12-17

Fixed

  • Don't mutate custom color palette when overriding per-plugin colors (#6546)
  • Improve circular dependency detection when using @apply (#6588)
  • Only generate variants for non-user layers (#6589)
  • Properly extract classes with arbitrary values in arrays and classes followed by escaped quotes (#6590)
  • Improve jsx interpolation candidate matching (#6593)
  • Ensure @apply of a rule inside an AtRule works (#6594)

3.0.6 - 2021-12-16

Fixed

  • Support square bracket notation in paths (#6519)
  • Ensure all plugins are executed for a given candidate (#6540)

3.0.5 - 2021-12-15

Fixed

  • Revert: add li to list-style reset (9777562d)

3.0.4 - 2021-12-15

Fixed

  • Insert always-on defaults layer in correct spot (#6526)

3.0.3 - 2021-12-15

Added

  • Warn about invalid globs in content (#6449)
  • Add standalone tailwindcss CLI (#6506)
  • Add li to list-style reset (00f60e6)

Fixed

  • Don't output unparsable values (#6469)
  • Fix text decoration utilities from overriding the new text decoration color/style/thickness utilities when used with a modifier (#6378)
  • Move defaults to their own always-on layer (#6500)
  • Support negative values in safelist patterns (#6480)

3.0.2 - 2021-12-13

Fixed

  • Temporarily disable optimize universal defaults, fixes issue with transforms/filters/rings not being @apply-able in CSS modules/Svelte components/Vue components (#6461)

3.0.1 - 2021-12-10

Fixed

  • Ensure complex variants with multiple classes work (#6311)
  • Re-add default interop to public available functions (#6348)
  • Detect circular dependencies when using @apply (#6365)
  • Fix defaults optimization when vendor prefixes are involved (#6369)

3.0.0 - 2021-12-09

Fixed

  • Enforce the order of some variants (like before and after) (#6018)

Added

  • Add placeholder variant (#6106)
  • Add composable touch-action utilities (#6115)
  • Add support for "arbitrary properties" (#6161)
  • Add portrait and landscape variants (#6046)
  • Add text-decoration-style, text-decoration-thickness, and text-underline-offset utilities (#6004)
  • Add menu reset to preflight (#6213)
  • Allow 0 as a valid length value (#6233, #6259)
  • Add CSS functions to data types (#6258)
  • Support negative values for scale-* utilities (c48e629)
  • Improve length data type, by validating each value individually (#6283)

Changed

  • Deprecate decoration-slice and decoration-break in favor box-decoration-slice and box-decoration-break (non-breaking) (#6004)

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 prefix as a function (#5829)

Added

  • Add flex-basis utilities (#5671)
  • Make negative values a first-class feature (#5709)
  • Add fit-content values for min/max-width/height utilities (#5638)
  • Add min/max-content values for min/max-height utilities (#5729)
  • Add all standard cursor-* values by default (#5734)
  • Add grow-* and shrink-* utilities, deprecate flex-grow-* and flex-shrink-* (#5733)
  • Add text-decoration-color utilities (#5760)
  • Add new declarative addVariant API (#5809)
  • Add first-class print variant for targeting printed media (#5885)
  • Add outline-style, outline-color, outline-width and outline-offset utilities (#5887)
  • Add full color palette for fill-* and stroke-* utilities (#5933)
  • Add composable API for colored box shadows (#5979)

Fixed

  • Configure chokidar's awaitWriteFinish setting to avoid occasional stale builds on Windows (#5774)
  • Fix CLI --content option (#5775)
  • Fix before/after utilities overriding custom content values at larger breakpoints (#5820)
  • Cleanup duplicate properties (#5830)
  • Allow _ inside url() when using arbitrary values (#5853)
  • Prevent crashes when using comments in @layer AtRules (#5854)
  • Handle color transformations properly with theme(...) for all relevant plugins (#4533, #5871)
  • Ensure @apply-ing a utility with multiple definitions works (#5870)

3.0.0-alpha.1 - 2021-10-01

Changed

  • Remove AOT engine, make JIT the default (#5340)
  • Throw when trying to @apply the group class (#4666)
  • Remove dependency on modern-normalize, inline and consolidate with Preflight (#5358)
  • Enable extended color palette by default with updated color names (#5384)
  • Move vertical-align values to config file instead of hard-coding (#5487)
  • Rename overflow-clip to text-clip and overflow-ellipsis to text-ellipsis (#5630)

Added

  • Add native aspect-ratio utilities (#5359)
  • Unify config callback helpers into single object (#5382)
  • Preserve original color format when adding opacity whenever possible (#5154)
  • Add accent-color utilities (#5387)
  • Add scroll-behavior utilities (#5388)
  • Add will-change utilities (#5448)
  • Add text-indent utilities (#5449)
  • Add column utilities (#5457)
  • Add border-hidden utility (#5485)
  • Add align-sub and align-super utilities by default (#5486)
  • Add break-before, break-inside and break-after utilities (#5530)
  • Add file variant for ::file-selector-button pseudo element (#4936)
  • Add comprehensive arbitrary value support (#5568)
  • Add touch-action utilities (#5603)
  • Add inherit to default color palette (#5597)
  • Add overflow-clip, overflow-x-clip and overflow-y-clip utilities (#5630)
  • Add [open] variant (#5627)
  • Add scroll-snap utilities (#5637)
  • Add border-x and border-y width and color utilities (#5639)

Fixed

  • Fix defining colors as functions when color opacity plugins are disabled (#5470)
  • Fix using negated content globs (#5625)
  • Fix using backslashes in content globs (#5628)

2.2.19 - 2021-10-29

Fixed

  • Ensure corePlugins order is consistent in AOT mode (#5928)

2.2.18 - 2021-10-29

Fixed

  • Bump versions for security vulnerabilities (#5924)

2.2.17 - 2021-10-13

Fixed

  • Configure chokidar's awaitWriteFinish setting to avoid occasional stale builds on Windows (#5758)

2.2.16 - 2021-09-26

Fixed

  • JIT: Properly handle animations that use CSS custom properties (#5602)

2.2.15 - 2021-09-10

Fixed

  • Ensure using CLI without -i for input file continues to work even though deprecated (#5464)

2.2.14 - 2021-09-08

Fixed

  • Only use @defaults in JIT, switch back to clean-css in case there's any meaningful differences in the output (bf248cb)

2.2.13 - 2021-09-08

Fixed

  • Replace clean-css with cssnano for CDN builds to fix minified builds (75cc3ca)

2.2.12 - 2021-09-08

Fixed

  • Ensure that divide utilities inject a default border color (#5438)

2.2.11 - 2021-09-07

Fixed

  • Rebundle to fix missing CLI peer dependencies

2.2.10 - 2021-09-06

Fixed

  • Fix build error when using presets: [] in config file (#4903)

Added

  • Reintroduce universal selector optimizations under experimental optimizeUniversalDefaults flag (a9e160c)

2.2.9 - 2021-08-30

Fixed

  • JIT: Fix @applying utilities that contain variants + the important modifier (#4854)
  • JIT: Don't strip "null" when parsing tracked file paths (#5008)
  • Pin clean-css to v5.1.4 to fix empty CSS variables in CDN builds (#5338)

2.2.8 - 2021-08-27

Fixed

  • Improve accessibility of default link focus styles in Firefox (#5082)
  • JIT: Fix animation variants corrupting keyframes rules (#5223)
  • JIT: Ignore escaped commas when splitting selectors to apply prefixes (#5239)
  • Nesting: Maintain PostCSS node sources when handling @apply (#5249)
  • JIT: Fix support for animation lists (#5252)
  • JIT: Fix arbitrary value support for object-position utilities (#5245)
  • CLI: Abort watcher if stdin is closed to avoid zombie processes (#4997)
  • JIT: Ignore arbitrary values with unbalanced brackets (#5293)

2.2.7 - 2021-07-23

Fixed

  • Temporarily revert runtime performance optimizations introduced in v2.2.5, use universal selector again (#5060)

2.2.6 - 2021-07-21

Fixed

  • Fix issue where base styles not generated for translate transforms in JIT (#5038)

2.2.5 - 2021-07-21

Added

  • Added self-baseline utility (I know this is a patch release, no one's going to die relax) (#5000)

Changed

  • JIT: Optimize universal selector usage by inlining only the relevant selectors (#4850))

    This provides a very significant performance boost on pages with a huge number of DOM nodes, but there's a chance it could be a breaking change in very rare edge cases we haven't thought of. Please open an issue if anything related to shadows, rings, transforms, filters, or backdrop-filters seems to be behaving differently after upgrading.

Fixed

  • Fix support for step-start and step-end in animation utilities (#4795))
  • JIT: Prevent presence of !* in templates from ruining everything (#4816))
  • JIT: Improve support for quotes in arbitrary values (#4817))
  • Fix filter/backdrop-filter/transform utilities being inserted into the wrong position if not all core plugins are enabled (#4852))
  • JIT: Fix @layer rules being mistakenly inserted during incremental rebuilds (#4853))
  • Improve build performance for projects with many small non-Tailwind stylesheets (#4644)
  • Ensure [hidden] works as expected on elements where we override the default display value in Preflight (#4873)
  • Fix variant configuration not being applied to backdropOpacity utilities (#4892)

2.2.4 - 2021-06-23

Fixed

  • Remove postinstall script that was preventing people from installing the library (1eacfb9)

2.2.3 - 2021-06-23

Added

  • Pass extended color palette to theme closures so it can be used without installing Tailwind when using npx tailwindcss (359252c)

Fixed

  • JIT: Explicitly error when - is used as a custom separator (#4704)
  • JIT: Don't add multiple ~ when stacking peer-* variants (#4757)
  • Remove outdated focus style fix in Preflight (#4780)
  • Enable purge if provided on the CLI (#4772)
  • JIT: Fix error when not using a config file with postcss-cli (#4773)
  • Fix issue with resolveConfig not being importable in Next.js pages (#4725)

2.2.2 - 2021-06-18

Fixed

  • JIT: Reintroduce transform, filter, and backdrop-filter classes purely to create stacking contexts to minimize the impact of the breaking change (#4700)

2.2.1 - 2021-06-18

Fixed

  • Recover from errors gracefully in CLI watch mode (#4693)
  • Fix issue with media queries not being generated properly when using PostCSS 7 (#4695)

2.2.0 - 2021-06-17

Changed

  • JIT: Use "tracking" context by default instead of "watching" context for improved reliability with most bundlers (#4514)

    Depending on which tooling you use, you may need to explicitly set TAILWIND_MODE=watch until your build runner has been updated to support PostCSS's dir-dependency message type.

Added

  • Add background-origin utilities (#4117)
  • Improve @apply performance in projects that process many CSS sources (#3178)
  • JIT: Don't use CSS variables for color utilities if color opacity utilities are disabled (#3984)
  • JIT: Redesign matchUtilities API to make it more suitable for third-party use (#4232)
  • JIT: Support applying important utility variants (#4260)
  • JIT: Support coercing arbitrary values when the type isn't detectable (#4263)
  • JIT: Support for raw syntax in purge config (#4272)
  • Add empty variant (#3298)
  • Update modern-normalize to v1.1 (#4287)
  • Implement theme function internally, remove postcss-functions dependency (#4317)
  • Add screen function to improve nesting plugin compatibility (#4318)
  • JIT: Add universal shorthand color opacity syntax (#4348)
  • JIT: Add @tailwind variants directive to replace @tailwind screens (#4356)
  • JIT: Add support for PostCSS dir-dependency messages in TAILWIND_DISABLE_TOUCH mode (#4388)
  • JIT: Add per-side border color utilities (#4404)
  • JIT: Add support for before and after pseudo-element variants and content utilities (#4461)
  • Add new transform and extract APIs to simplify PurgeCSS/JIT customization (#4469)
  • JIT: Add exhaustive pseudo-class and pseudo-element variant support (#4482)
  • JIT: Add caret-color utilities (#4499)
  • Rename lightBlue to sky, emit console warning when using deprecated name (#4513)
  • New CLI with improved JIT support, --watch mode, and more (#4526, 4558)
  • JIT: Add new peer-* variants for styling based on sibling state (#4556)
  • Expose safelist as a top-level option under purge for both JIT and classic engines (#4580)
  • JIT: Remove need for transform class when using classes like scale-*, rotate-*, etc. (#4604)
  • JIT: Remove need for filter and backdrop-filter classes when using classes like contrast-*, backdrop-blur-*, etc. (#4614)
  • Support passing a custom path for your PostCSS configuration in the Tailwind CLI (#4607)
  • Add blur-none by default with intent to deprecate blur-0 (#4614)

Fixed

  • JIT: Improve support for Svelte class bindings (#4187)
  • JIT: Improve support for calc and var in arbitrary values (#4147)
  • Convert hsl colors to hsla when transforming for opacity support instead of rgba (#3850)
  • Fix backdropBlur variants not being generated (#4188)
  • Improve animation value parsing (#4250)
  • Ignore unknown object types when hashing config (82f4eaa)
  • Ensure variants are grouped properly for plugins with order-dependent utilities (#4273)
  • JIT: Fix temp file storage when node temp directories are kept on a different drive than the project itself (#4044)
  • Support border-opacity utilities alongside default border utility (#4277)
  • JIT: Fix source maps for expanded @tailwind directives (2f15411)
  • JIT: Ignore whitespace when collapsing adjacent rules (15642fb)
  • JIT: Generate group parent classes correctly when using custom separator (#4508)
  • JIT: Fix incorrect stacking of multiple group variants (#4551)
  • JIT: Fix memory leak due to holding on to unused contexts (#4571)

Internals

  • Add integration tests for popular build runners (#4354)

2.1.4 - 2021-06-02

Fixed

  • Skip raw PurgeCSS sources when registering template dependencies (#4542)

2.1.3 - 2021-06-01

Fixed

  • Register PurgeCSS paths as PostCSS dependencies to guarantee proper cache-busting in webpack 5 (#4530)

2.1.2 - 2021-04-23

Fixed

  • Fix issue where JIT engine would generate the wrong CSS when using PostCSS 7 (#4078)

2.1.1 - 2021-04-05

Fixed

  • Fix issue where JIT engine would fail to compile when a source path isn't provided by the build runner for the current input file (#3978)

2.1.0 - 2021-04-05

Added

  • Add alternate JIT engine (in preview) (#3905)
  • Add new mix-blend-mode and background-blend-mode utilities (#3920)
  • Add new box-decoration-break utilities (#3911)
  • Add new isolation utilities (#3914)
  • Add inline-table display utility (#3563)
  • Add list-item display utility (#3929)
  • Add new filter and backdrop-filter utilities (#3923)

2.0.4 - 2021-03-17

Fixed

  • Pass full var(--bg-opacity) value as opacityValue when defining colors as functions

2.0.3 - 2021-02-07

Fixed

  • Ensure sourcemap input is deterministic when using @apply in Vue components (#3356)
  • Ensure placeholder opacity is consistent across browsers (#3308)
  • Fix issue where theme() didn't work with colors defined as functions (#2919)
  • Enable dark variants by default for color opacity utilities (#2975)

Added

  • Add support for a tailwind.config.cjs file in Node ESM projects (#3181)
  • Add version comment to Preflight (#3255)
  • Add cursor-help by default (#3199)

2.0.2 - 2020-12-11

Fixed

  • Fix issue with @apply not working as expected with !important inside an at-rule (#2824)
  • Fix issue with @apply not working as expected with defined classes (#2832)
  • Fix memory leak, and broken @apply when splitting up files (#3032)

Added

  • Add default values for the ring utility (#2951)

2.0.1 - 2020-11-18

  • Nothing, just the only thing I could do when I found out npm won't let me publish the same version under two tags.

2.0.0 - 2020-11-18

Added

  • Add redesigned color palette (#2623, 700866c, #2633)
  • Add dark mode support (#2279, #2631)
  • Add overflow-ellipsis and overflow-clip utilities (#1289)
  • Add transform-gpu to force hardware acceleration on transforms when desired (#1380)
  • Extend default spacing scale (#2630, 7f05204)
  • Add spacing scale to inset plugin (#2630)
  • Add percentage sizes to translate, inset, and height plugins (#2630, 5259560)
  • Extend default font size scale (#2609, #2619)
  • Support using @apply with complex classes, including variants like lg:hover:bg-blue-500 (#2159)
  • Add new 2xl breakpoint at 1536px by default (#2609)
  • Add default line-height values for font-size utilities (#2609)
  • Support defining theme values using arrays for CSS properties that support comma separated values (e13f083c4)
  • Enable group-hover for color plugins, boxShadow, and textDecoration by default (28985b6, f6923b1)
  • Enable focus for z-index utilities by default (ae5b3d3)
  • Support extend in variants configuration (#2651)
  • Add max-w-prose class by default (#2574)
  • Support flattening deeply nested color objects (#2148)
  • Support defining presets as functions (#2680)
  • Support deep merging of objects under extend (#2679, #2700)
  • Enable focus-within for all plugins that have focus enabled by default (1a21f072, f6923b1)
  • Added new ring utilities for creating outline/focus rings using box shadows (#2747, 879f088, e0788ef)
  • Added 5 and 95 to opacity scale (#2747)
  • Add support for default duration and timing function values whenever enabling transitions (#2755)

Changed

  • Completely redesign color palette (#2623, 700866c, #2633)
  • Drop support for Node 8 and 10 (#2582)
  • Removed target feature and dropped any compatibility with IE 11 (#2571)
  • Upgrade to PostCSS 8 (but include PostCSS 7 compatibility build) (729b400, 1d8679d, c238ed1)
  • Removed shadow-outline, shadow-solid, and shadow-xs by default in favor of new ring API (#2747)
  • Switch normalize.css to modern-normalize (#2572)
  • Rename whitespace-no-wrap to whitespace-nowrap (#2664)
  • Rename flex-no-wrap to flex-nowrap (#2676)
  • Remove clearfix utility, recommend flow-root instead (#2766)
  • Disable hover and focus for fontWeight utilities by default (f6923b1)
  • Remove grid-gap fallbacks needed for old versions of Safari (5ec45fa)
  • Change special use of 'default' in config to 'DEFAULT' (#2580)
  • New @apply implementation, slight backwards incompatibilities with previous behavior (#2159)
  • Make theme retrieve the expected resolved value when theme value is complex (e13f083c4)
  • Move truncate class to textOverflow core plugin (#2562)
  • Remove scrolling-touch and scrolling-auto utilities (#2573)
  • Modernize default system font stacks (#1711)
  • Upgrade to PurgeCSS 3.0 (8e4e0a0)
  • Change default text-6xl font-size to 3.75rem instead of 4rem (#2619)
  • Ignore [hidden] elements within space and divide utilities instead of template elements (#2642)
  • Automatically prefix keyframes and animation names when a prefix is configured (#2621, #2641)
  • Merge extend objects deeply by default (#2679)
  • Respect preserveHtmlElements option even when using custom PurgeCSS extractor (#2704)
  • Namespace all internal custom properties under tw- to avoid collisions with end-user custom properties (#2771)

2.0.0-alpha.25 - 2020-11-17

Fixed

  • Fix issue where ring-offset-0 didn't work due to unitless 0 in calc function (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.500 is 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 under tw- to avoid collisions with end-user custom properties (#2771) I made a git boo-boo, check alpha.23 instead

2.0.0-alpha.21 - 2020-11-15

Changed

  • Upgrade to PostCSS 8, Autoprefixer 10, move postcss and autoprefixer to peerDependencies (729b400)

2.0.0-alpha.20 - 2020-11-13

Changed

  • Remove clearfix utility, recommend flow-root instead (#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

  • black and white have been added to colors.js (b3ed724)

Fixed

  • Add support for colors as closures to ringColor and ringOffsetColor, previously would crash build (62a47f9)

2.0.0-alpha.17 - 2020-11-13

Changed

  • Remove grid-gap fallbacks needed for old versions of Safari (5ec45fa)

2.0.0-alpha.16 - 2020-11-12

Added

  • Enable focus, focus-within, and dark variants (when enabled) for all ring utilities by default (e0788ef)

2.0.0-alpha.15 - 2020-11-11

Added

  • Added ring-inset utility for rendering rings as inset shadows (879f088)

Changed

  • ringWidth utilities always reset ring styles to ensure no accidental variable inheritance through the cascade (879f088)

2.0.0-alpha.14 - 2020-11-11

Added

  • Enable focus-within for outline utilities by default (f6923b1)
  • Enable focus-within for ringWidth utilities by default (f6923b1)
  • Enable group-hover for boxShadow utilities by default (f6923b1)
  • Enable group-hover and focus-within for textDecoration utilities by default (f6923b1)

Changed

  • Disable hover and focus for fontWeight utilities by default (f6923b1)

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 boxShadow utilities from overriding ring shadows added by components like in the custom forms plugin (c3dd3b6)

2.0.0-alpha.11 - 2020-11-09

Fixed

  • Convert none to 0 0 #0000 when used for shadows to ensure compatibility with ring utilities (4eecc27)

2.0.0-alpha.10 - 2020-11-09

Added

  • Added new ring utilities (#2747)
  • Added 5 and 95 to opacity scale (#2747)

Changed

  • Removed shadow-outline, shadow-solid, and shadow-xs in favor of new ring API (#2747)

2.0.0-alpha.9 - 2020-11-07

Added

  • Added shadow-solid utility, a 2px solid shadow that uses the current text color (369cfae)
  • Enable focus-within where useful by default (1a21f072)

Changed

  • Update shadow-outline to use the new blue (b078238)

2.0.0-alpha.8 - 2020-11-06

Added

  • Add 11 to spacing scale (7f05204)
  • Add percentage-based height values (5259560)
  • Add indigo to the color palette by default (700866c)

Changed

  • Use coolGray as the default gray (700866c)

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 preserveHtmlElements option even when using custom PurgeCSS extractor (#2704)
  • Set font-family and line-height to inherit on body to behave more like v1.x (#2729)

2.0.0-alpha.5 - 2020-10-30

Changed

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

  • Merge extend objects deeply by default (#2679)
  • Rename flex-no-wrap to flex-nowrap (#2676)

2.0.0-alpha.2 - 2020-10-25

Added

  • Support extend in variants configuration (#2651)
  • Add max-w-prose class by default (#2574)

Changed

  • Revert use of logical properties for space and divide utilities (#2644)
  • space and divide utilities ignore elements with [hidden] now instead of only ignoring template elements (#2642)
  • Set default font on body, not just html (#2643)
  • Automatically prefix keyframes and animation names when a prefix is configured (#2621, #2641)
  • Rename whitespace-no-wrap to whitespace-nowrap (#2664)

1.9.6 - 2020-10-23

Changed

  • The presets feature had unexpected behavior where a preset config without its own presets key would not extend the default config. (#2662)

    If you were depending on this unexpected behavior, just add presets: [] to your own preset to exclude the default configuration.

2.0.0-alpha.1 - 2020-10-20

Added

  • Added dark mode support (#2279, #2631)
  • Added overflow-ellipsis and overflow-clip utilities (#1289)
  • Add transform-gpu to force hardware acceleration on transforms when beneficial (#1380)
  • Extended spacing scale (#2630)
  • Add spacing scale to inset plugin (#2630)
  • Enable useful relative sizes for more plugins (#2630)
  • Extend font size scale (#2609, #2619)
  • Support using @apply with complex classes (#2159)
  • Add new 2xl breakpoint (#2609)
  • Add default line-height values for font-size utilities (#2609)
  • Support defining theme values using arrays wherever it makes sense (box-shadow, transition-property, etc.) (e13f083c4)
  • Enable group-hover for color utilities by default (28985b6)
  • Enable focus for z-index utilities by default (ae5b3d3)

Changed

  • New @apply implementation, slight backwards incompatibilities with previous behavior (#2159)
  • Move truncate class to textOverflow core plugin (#2562)
  • Removed target feature and dropped any compatibility with IE 11 (#2571)
  • Switch normalize.css to modern-normalize (#2572)
  • Remove scrolling-touch and scrolling-auto utilities (#2573)
  • Change special use of 'default' in config to 'DEFAULT' (#2580)
  • Drop support for Node 8 and 10 (#2582)
  • Modernize default system font stacks (#1711)
  • Upgrade to PurgeCSS 3.0
  • Upgrade to PostCSS 8.0 Reverted for now
  • Use logical properties for space and divide utilities (#1883)
  • Make theme retrieve the expected resolved value when theme value is complex (e13f083c4)
  • Adjust default font-size scale to include 60px instead of 64px (#2619)
  • Update default colors in Preflight to match new color palette (#2633)

1.9.5 - 2020-10-19

Fixed

  • Fix issue where using theme with default line-heights did not resolve correctly

1.9.4 - 2020-10-17

Fixed

  • Fix issue changing plugins defined using the withOptions API would not trigger rebuilds in watch processes

1.9.3 - 2020-10-16

Fixed

Changed

  • Remove console warnings about upcoming breaking changes

1.9.2 - 2020-10-14

Fixed

  • Merge plugins when merging config with preset (#2561
  • Use word-wrap and overflow-wrap together, not one or the other since word-wrap is IE-only

1.9.1 - 2020-10-14

Fixed

  • Don't import corePlugins in resolveConfig to avoid bundling browser-incompatible code (#2548)

1.9.0 - 2020-10-12

Added

  • Add new presets config option (#2474)
  • Scaffold new tailwind.config.js files with available future flags commented out (#2379)
  • Add col-span-full and row-span-full (#2471)
  • Make outline configurable, outline-none more accessible by default, and add outline-black and outline-white (#2460)
  • Add additional small rotate and skew values (#2528)
  • Add xl, 2xl, and 3xl border radius values (#2529)
  • Add new utilities for grid-auto-columns and grid-auto-rows (#2531)
  • Promote defaultLineHeights and standardFontWeights from experimental to future

Fixed

  • Don't escape keyframe values (#2432)
  • Use word-wrap instead of overflow-wrap in ie11 target mode (#2391)

Experimental

  • Add experimental 2xl breakpoint (#2468)
  • Rename {u}-max-content and {u}-min-content utilities to {u}-max and {u}-min in experimental extended spacing scale (#2532)
  • Support disabling dark mode variants globally (#2530)

1.8.13 - 2020-10-09

Fixed

  • Support defining colors as closures even when opacity variables are not supported (#2536)

1.8.12 - 2020-10-07

Fixed

  • Reset color opacity variable in utilities generated using closure colors (#2515)

1.8.11 - 2020-10-06

  • Make tailwindcss.plugin work in ESM environments for reasons

1.8.10 - 2020-09-14

Fixed

  • Prevent new dark experiment from causing third-party dark variants to inherit stacking behavior (#2382)

1.8.9 - 2020-09-13

Fixed

  • Add negative spacing values to inset plugin in the extendedSpacingScale experiment (#2358)
  • Fix issue where !important was stripped from declarations within rules that used @apply with applyComplexClasses (#2376)

Changed

1.8.8 - 2020-09-11

Fixed

  • Register dark mode plugin outside of resolveConfig code path (#2368)

1.8.7 - 2020-09-10

Fixed

  • Fix issue where classes in escaped strings (like class=\"block\") weren't extracted properly for purging (#2364)

1.8.6 - 2020-09-09

Fixed

  • Fix issue where container padding not applied when using object syntax (#2353)

1.8.5 - 2020-09-07

Fixed

  • Fix issue where resolveConfig didn't take into account configs added by feature flags (#2347)

1.8.4 - 2020-09-06

Fixed

  • Fix issue where inserting extra PurgeCSS control comments could break integrated PurgeCSS support
  • Fix issue where dark variant in 'class' mode was incompatible with 'group-hover' variant (#2337)
  • Support basic nesting structure with @apply when using the applyComplexClasses experiment (#2271)

Changed

  • Rename font-hairline and font-thin to font-thin and font-extralight behind standardFontWeights flag (experimental until v1.9.0) (#2333)

1.8.3 - 2020-09-05

Fixed

  • Fix issue where font-variant-numeric utilities would break in combination with most CSS minifier configurations (f3660ce)
  • Only warn about conservative purge mode being deprecated once per process (58781b5)

1.8.2 - 2020-09-04

Fixed

  • Fix bug where dark mode variants would cause an error if you had a plugins array in your config (#2322)

1.8.1 - 2020-09-04

Fixed

  • Fix bug in the new font-variant-numeric utilities which broke the whole rule (#2318)
  • Fix bug while purging (#2320)

1.8.0 - 2020-09-04

Added

  • Dark mode variant (experimental) (#2279)
  • New preserveHtmlElements option for purge (#2283)
  • New layers mode for purge (#2288)
  • New font-variant-numeric utilities (#2305)
  • New place-items, place-content, place-self, justify-items, and justify-self utilities (#2306)
  • Support configuring variants as functions (#2309)

Changed

  • CSS within @layer at-rules are now grouped with the corresponding @tailwind at-rule (#2312)

Deprecated

  • conservative purge mode, deprecated in favor of layers

1.7.6 - 2020-08-29

Fixed

  • Fix bug where the new experimental @apply implementation broke when applying a variant class with the important option globally enabled

1.7.5 - 2020-08-28

Changed

  • Update lodash to latest to silence security warnings

1.7.4 - 2020-08-26

Added

  • Add new -p flag to CLI to quickly scaffold a postcss.config.js file

Changed

  • Make @apply insensitive to whitespace in the new applyComplexClasses experiment

Fixed

  • Fix bug where the new applyComplexClasses experiment didn't behave as expected with rules with multiple selectors, like .foo, .bar { color: red }

1.7.3 - 2020-08-20

Changed

  • Log feature flag notices to stderr instead of stdout to preserve compatibility with pipe-based build systems
  • Add missing bg-none utility for disabling background images

Fixed

  • Fix bug that prevented defining colors as closures when the gradientColorStops plugin was enabled

1.7.2 - 2020-08-19

Added

  • Reuse generated CSS as much as possible in long-running processes instead of needlessly recalculating

1.7.1 - 2020-08-28

Changed

  • Don't issue duplicate flag notices in long-running build processes

1.7.0 - 2020-08-28

Added

  • Gradients
  • New background-clip utilities
  • New contents display utility
  • Default letter-spacing per font-size
  • Divide border styles
  • Access entire config object from plugins
  • Define colors as closures
  • Use @apply with variants and other complex classes (experimental)
  • New additional color-palette (experimental)
  • Extended spacing scale (experimental)
  • Default line-heights per font-size by default (experimental)
  • Extended font size scale (experimental)

Deprecated

  • 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 @keyframes respecting the important option would break animations in Chrome

1.6.1 - 2020-08-02

Fixed

  • Fixes an issue where animation keyframes weren't included in the build without @tailwind base (#2108)

1.6.0 - 2020-07-28

Added

  • Animation support
  • New prefers-reduced-motion variants
  • New overscroll-behaviour utilities
  • Generate CSS without an input file

1.5.2 - 2020-07-21

Fixed

  • Fixes issue where you could no longer use @apply with unprefixed class names if you had configured a prefix

1.5.1 - 2020-07-15

Fixed

  • Fixes accidental breaking change where adding component variants using the old manual syntax (as recommended in the docs) stopped working

1.5.0 - 2020-07-15

Added

  • Component variants support
  • Responsive container variants
  • New focus-visible variant
  • New checked variant

v0.0.0-658250a96 - 2020-07-12 [YANKED]

No release notes

1.4.6 - 2020-05-08

Changed

  • Explicitly error when using a class as the important config option instead of just generating the wrong CSS

1.4.5 - 2020-05-06

Fixed

  • Fix bug where the divideColor plugin was using the wrong '' in IE11 target mode

1.4.4 - 2020-05-01

Fixed

  • Fix bug where target: 'browserslist' didn't work, only target: ['browserslist', {...}] did

1.4.3 - 2020-05-01

Changed

  • Don't generate unnecessary CSS in color plugins when color opacity utilities are disabled

1.4.2 - 2020-05-01

Fixed

  • Fix issue where purge: { enabled: false } was ignored, add purge: false shorthand

1.4.1 - 2020-04-30

Changed

  • Improve built-in PurgeCSS extractor to better support Haml and Slim templates

1.4.0 - 2020-04-29

Added

  • New color opacity utilities
  • Built-in PurgeCSS
  • IE 11 target mode (experimental)

1.3.5 - 2020-04-23

Removed

  • Drop fs-extra dependency to ^8.0.0 to preserve Node 8 compatibility until Tailwind 2.0

Fixed

  • Fix missing unit in calc bug in space plugin (space-x-0 didn't work for example)

1.3.4 - 2020-04-21

Fixed

  • Fix bug where divide-{x/y}-0 utilities didn't work due to missing unit in calc call

1.3.3 - 2020-04-21

Added

  • Add forgotten responsive variants for space, divideWidth, and divideColor utilities

1.3.1 - 2020-04-21

Fixed

  • Fix bug where the space-x utilities were not being applied correctly due to referencing --space-y-reverse instead of --space-x-reverse

1.3.0 - 2020-04-21

Added

  • New space and divide layout utilities
  • New transition-delay utilities
  • New group-focus variant
  • Support for specifying a default line-height for each font-size utility
  • Support for breakpoint-specific padding for container class
  • Added current to the default color palette
  • New inline-grid utility
  • New flow-root display utility
  • New clear-none utility

1.2.0 - 2020-02-05

Added

  • CSS Transition support
  • CSS Transform support
  • CSS Grid support
  • Added max-w-{screen} utilities
  • Added max-w-none utility
  • Added rounded-md utility
  • Added shadow-sm utility
  • Added shadow-xs utility
  • Added stroke-width utilities
  • Added fixed line-height utilities
  • Added additional display utilities for table elements
  • Added box-sizing utilities
  • Added clear utilities
  • Config file dependencies are now watchable
  • Added new plugin and plugin.withOptions APIs

Changed

  • Allow plugins to extend the user's config

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 resolve which 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-none utility
  • Added "Inter" to the default sans-serif font stack
  • Add rounded-md utility
  • Add shadow-sm utility
  • Added stroke-width utilities
  • Added additional display utilities for table elements
  • Added box-sizing utilities
  • Added clear utilities
  • Config file dependencies are now watchable
  • Allow plugins to extend the user's config
  • Add new plugin and plugin.withOptions APIs

[v1.2.0-canary.3] - 2020-01-08 [YANKED]

No release notes

1.1.4 - 2019-11-25

Changed

  • Note: Although this is a bugfix it could affect your site if you were working around the bug in your own code by not prefixing the .group class. I'm sorry 😞

Fixed

  • Fixes a bug where the .group class was not receiving the user's configured prefix when using the prefix option

1.2.0-canary.1 - 2019-10-22

Changed

  • Don't watch node_modules files for changes

Fixed

  • Fixes significant build performance regression in v1.2.0-canary.0

1.1.3 - 2019-10-22

Fixed

  • Fixes an issue where in some cases function properties in the user's theme config didn't receive the second utils argument

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-evenly utility

Changed

  • Allow plugins to add their own config file to be resolved with the user's custom config

1.1.2 - 2019-08-14

Fixed

  • Fixes a bug with horizontal rules where they were displayed with a 2px border instead of a 1px border
  • Fixes a bug with horizontal rules where they were rendered with default top/bottom margin

1.1.1 - 2019-08-09

Fixed

  • Fixes issue where values like auto would fail to make it through the default negative margin config

1.1.0 - 2019-08-06

Added

  • Added utilities for screenreader visibility
  • Added utilities for placeholder color
  • First, last, even, and odd child variants
  • Disabled variant
  • Visited variant
  • Increase utility specificity using a scope instead of !important
  • Add hover/focus variants for opacity by default
  • Added border-double utility
  • Support negative prefix for boxShadow and letterSpacing plugins
  • Support passing config path via object

Fixed

  • Placeholders no longer have a default opacity
  • Make horizontal rules visible by default
  • Generate correct negative margins when using calc

1.0.6 - 2019-08-01

Fixed

  • Fixes issue where modifiers would mutate nested rules

1.0.5 - 2019-07-11

Added

  • Support built-in variants for utilities that include pseudo-elements

Changed

  • Update several dependencies, including postcss-js which fixes an issue with using !important directly in Tailwind utility plugins

1.0.4 - 2019-06-11

Changed

  • Increase precision of percentage width values to avoid 1px rounding issues in grid layouts

1.0.3 - 2019-06-01

Changed

  • Throws an error when someone tries to use @tailwind preflight instead of @tailwind base, this is the source of many support requests

1.0.2 - 2019-05-27

Fixed

  • Fixes a bug where @screen rules weren't bubbled properly when nested in plugins

1.0.1 - 2019-05-13

Fixed

  • Fixes a bug where global variants weren't properly merged

1.0.0 - 2019-05-13

No release notes

1.0.0-beta.10 - 2019-05-12

Changed

  • Use 9999 and -9999 for order-last and order-first utilities respectively

1.0.0-beta.9 - 2019-05-12

Added

  • Add bg-repeat-round and bg-repeat-space utilities
  • Add select-all and select-auto utilities

Changed

  • Make all utilities responsive by default

1.0.0-beta.8 - 2019-04-28

Added

  • Adds responsive variants 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 order utilities
  • Add cursor-text class by default

Changed

  • Make it possible to access your fully merged config file in JS

Removed

  • Removed negativeMargin plugin, now the regular margin plugin supports generating negative classes (like -mx-6) by using negative keys in the config, like -6

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 @apply directives

1.0.0-beta.4 - 2019-03-29

Added

  • Add the container key to the scaffolded config file when generated with --full

Changed

  • Bumps node dependency to 8.9.0 so we can keep our default config file clean, 6.9.0 is EOL next month anyways

Removed

  • Removes SFMono-Regular from the beginning of the default monospace font stack, it has no italic support and Menlo looks better anyways

Fixed

  • Fixes an issue where the user's config object was being mutated during processing (only affects @bradlc 😅)
  • Fixes an issue where you couldn't use a closure to define theme sections under extend

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 bolder for strong tags by default instead of fontWeight.bold

1.0.0-beta.2 - 2019-03-17

Changed

  • Closures in the theme section of the config file are now passed a theme function instead of an object

Fixed

  • Fix issue where @screen didn't work at all 🙃

1.0.0-beta.1 - 2019-03-17

Added

  • New config file structure
  • New expanded default color palette
  • New default maxWidth scale
  • Added utilities for list-style-type and list-style-position
  • Added break-all utility

Changed

  • object-position utilities are now customizable under theme.objectPosition
  • cursor utilities are now customizable under theme.cursors
  • flex-grow/shrink utilities are now customizable under theme.flexGrow/flexShrink
  • Default variant output position can be customized
  • Extended default line-height scale
  • Extended default letter-spacing scale

0.7.4 - 2019-01-23

Changed

  • Update our PostCSS related dependencies

Fixed

  • Fix bug where class names containing a .character had the responsive prefix added in the wrong place

0.7.3 - 2018-12-03

Changed

  • Update Normalize to v8.0.1

0.7.2 - 2018-11-05

Added

  • Add --no-autoprefixer option to CLI build command

0.7.1 - 2018-11-05

Changed

  • Update autoprefixer dependency

0.7.0 - 2018-10-31

Added

  • Registering new variants from plugins
  • Variant order can be customized per module
  • Added focus-within variant
  • Fancy CLI updates
  • Option to generate config without comments
  • Make configured prefix optional when using @apply
  • Improve Flexbox behavior in IE 10/11

Changed

  • Variant order in modules is now significant
  • Normalize.css updated to v8.0.0
  • Removed CSS fix for Chrome 62 button border radius change

0.6.6 - 2018-09-21

Changed

  • Promote shadowLookup from experiment to official feature

0.6.5 - 2018-08-18

Fixed

  • Fixes an issue where units were stripped from zero value properties

0.6.4 - 2018-07-16

Fixed

  • Fixes an issue where changes to your configuration file were ignored when using webpack --watch

0.6.3 - 2018-07-11

Fixed

  • Fixes an issue where @tailwind utilities generated no output

0.6.2 - 2018-03-11

Added

  • Added table layout utilities for styling tables
  • Configuration can now be passed as an object
  • Registering new variants from plugins (experimental)
  • Allow @apply-ing classes that aren't defined but would be generated (experimental)

Changed

  • Default config file changes

0.6.1 - 2018-06-22

Fixed

  • Fix incorrect box-shadow syntax for the .shadow-outline utility 🤦‍♂️

0.6.0 - 2018-06-21

Added

  • Added border collapse utilities for styling tables
  • Added more axis-specific overflow utilities
  • Added .outline-none utility for suppressing focus styles
  • Added .shadow-outline utility as an alternative to default browser focus styles
  • Extended default padding, margin, negative margin, width, and height scales
  • Enable focus and hover variants for more modules by default

Changed

  • Removed default outline: none !important styles from focusable but keyboard-inaccessible elements
  • Moved screen prefix for responsive group-hover variants
  • Default config file changes

0.5.3 - 2018-05-07

Changed

  • Improve sourcemaps for replaced styles like preflight

Fixed

  • Fix bug where informational messages were being logged to stdout during build, preventing the ability to use Tailwind's output in Unix pipelines

0.5.2 - 2018-03-29

Fixed

  • Fixes an issue with a dependency that had a security vulnerability

0.5.1 - 2018-03-13

Removed

  • Reverts a change that renamed the .roman class to .not-italic due to the fact that it breaks compatibility with cssnext: postcss/postcss-selector-not#10. We'll stick with .roman for now with a plan to switch to .not-italic in another breaking version should that issue get resolved in postcss-selector-not.

0.5.0 - 2018-03-13

Added

  • Plugin system
  • Added .sticky position utility
  • Added .cursor-wait and .cursor-move utilities
  • Added .bg-auto background size utility
  • Background sizes are now customizable
  • Support for active variants
  • Better postcss-import support
  • Configuration options for the .container component

Changed

  • The .container component is now a built-in plugin
  • State variant precedence changes
  • New config file keys
  • .overflow-x/y-scroll now set overflow: scroll instead of overflow: auto
  • .roman renamed to .not-italic

0.4.3 - 2018-03-13

Changed

  • Use global.Object to avoid issues with polyfills when importing the Tailwind config into other JS

0.4.2 - 2018-03-01

Added

  • Add support for using a function to define class prefixes in addition to a simple string

Changed

  • Improve the performance of @apply by using a lookup table instead of searching

Fixed

  • Fix an issue where borders couldn't be applied to img tags without specifying a border style

0.4.1 - 2018-01-22

Changed

  • Make default sans-serif font stack more future proof and safe to use with CSS font shorthand
  • Replace stylefmt with Perfectionist to avoid weird stylelint conflicts

0.4.0 - 2017-12-15

Added

  • @apply'd classes can now be made !important explicitly

Changed

  • @apply now strips !important from any mixed in classes
  • Default color palette tweaks

0.3.0 - 2017-12-01

Added

  • Enable/disable modules and control which variants are generated for each
  • Focus variants
  • Group hover variants
  • New @variants at-rule
  • Customize the separator character
  • Missing config keys now fallback to their default values
  • New utilities

Changed

  • Lists now have no margins by default
  • .pin no longer sets width and height to 100%
  • SVG fill no longer defaults to currentColor

0.2.2 - 2017-11-19

Fixed

  • Fix issue with dist files not being published due to bug in latest npm

0.2.1 - 2017-11-18

Fixed

  • Fix overly specific border-radius reset for Chrome 62 button styles

0.2.0 - 2017-11-17

Added

  • Add a custom prefix to all utilities
  • Optionally make all utilities !important
  • Round element corners independently
  • Cascading border colors and styles

Changed

  • auto is no longer a hard-coded margin value
  • The defaultConfig function is now a separate module
  • Rounded utilities now combine position and radius size
  • Border width utilities no longer affect border color/style
  • @apply is now very strict about what classes can be applied
  • Add options key to your config
  • Spacing, radius, and border width utility declaration order changes

0.1.6 - 2017-11-09

Fixed

  • Fix CDN files not being published to npm

0.1.5 - 2017-11-08

Changed

  • Apply the same default placeholder styling that's applied to inputs to textareas

Fixed

  • Fix CLI tool not loading config files properly

0.1.4 - 2017-11-06

Added

  • Autoprefix dist assets for quick hacking and prototyping
  • Add my-auto, mt-auto, and mb-auto margin utilities
  • Add sans-serif to end of default sans font stack

Changed

  • If using Webpack, it will now watch your config file changes
  • When running tailwind init [filename], automatically append .js to filename if not present
  • Support default fallback value in config(...) function, ie. config('colors.blue', #0000ff)
  • Don't output empty media queries if Tailwind processes a file that doesn't use Tailwind

Fixed

  • Move list utilities earlier in stylesheet to allow overriding with spacing utilities

0.1.3 - 2017-11-02

Added

  • Add new .scrolling-touch and .scrolling-auto utilities for controlling inertial scroll behavior on WebKit touch devices
  • Generate separate dist files for preflight, utilities, and tailwind for CDN usage

0.1.2 - 2017-11-01

Changed

  • Target Node 6.9.0 explicitly (instead of 8.6 implicitly) to support more users

Fixed

  • Fix issue with config option not being respected in tailwind build

0.1.1 - 2017-11-01

Fixed

  • Fix tailwind build CLI command not writing output files

0.1.0 - 2017-11-01

Added

  • Everything!