Tailwind CSS
✓ VerifiedGitHubA utility-first CSS framework for rapidly building custom user interfaces.
Website →Last scanned 2 hours ago
Releases
13v4.3.0
v4.3.0
1 week ago
Added
- Add
@container-sizeutility (#18901) - Add
scrollbar-{auto,thin,none}utilities forscrollbar-width, andscrollbar-thumb-*/scrollbar-track-*color utilities forscrollbar-color(#19981, #20019) - Add
scrollbar-gutter-*utilities (#20018) - Add
zoom-*utilities (#20020) - Add
tab-*utilities (#20022) - Allow using
@variantwith stacked variants (e.g.@variant hover:focus { … }) (#19996) - Allow using
@variantwith compound variants (e.g.@variant hover, focus { … }) (#19996) - Support
--default(…)in--value(…)and--modifier(…)for functional@utilitydefinitions (#19989)
Fixed
- Ensure
@pluginresolves package JavaScript entries instead of browser CSS entries when using@tailwindcss/vite(#19949) - Fix relative
@importand@pluginpaths resolving from the wrong directory when using@tailwindcss/vite(#19965) - Ensure CSS files containing
@variantare processed by@tailwindcss/vite(#19966) - Resolve imports relative to
basewhenresult.opts.fromis not provided when using@tailwindcss/postcss(#19980) - Canonicalization: preserve significant
_whitespace in arbitrary values (#19986) - Canonicalization: add parentheses when removing whitespace from arbitrary values would hurt readability (e.g.
w-[calc(100%---spacing(60))]→w-[calc(100%-(--spacing(60)))]) (#19986) - Canonicalization: preserve the original unit in arbitrary values instead of normalizing to base units (e.g.
-mt-[20in]→mt-[-20in], notmt-[-1920px]) (#19988) - Canonicalization: migrate arbitrary
:has()variants from[&:has(…)]tohas-[…](#19991) - Upgrade: don’t migrate inline
styleattributes (e.g.style="flex-grow: 1"→style="flex-grow: 1", notstyle="grow: 1") (#19918) - Allow multiple
@utilitydefinitions with the same name but different value types (#19777) - Export missing
PluginWithConfigtype fromtailwindcss/pluginto fix errors when inferring plugin config types (#19707) - Ensure
startandendlegacy utilities without values do not generate CSS (#20003) - Ensure
--value(…)is required in functional@utilitydefinitions (#20005) - Canonicalization: preserve required whitespace around operators in negated arbitrary values (e.g.
-left-[(var(--a)+var(--b))]) (#20011)
v4.2.4
v4.2.4
0 months ago
Fixed
- Ensure imports in
@importand@pluginstill resolve correctly when using Vite aliases in@tailwindcss/vite(#19947)
v4.2.3
v4.2.3
0 months ago
Fixed
- Canonicalization: improve canonicalizations for
tracking-*utilities by preferring non-negative utilities (e.g.-tracking-tighter→tracking-wider) (#19827) - Fix crash due to invalid characters in candidate (exceeding valid unicode code point range) (#19829)
- Ensure query params in imports are considered unique resources when using
@tailwindcss/webpack(#19723) - Canonicalization: collapse arbitrary values into shorthand utilities (e.g.
px-[1.2rem] py-[1.2rem]→p-[1.2rem]) (#19837) - Canonicalization: collapse
border-{t,b}-*intoborder-y-*,border-{l,r}-*intoborder-x-*, andborder-{t,r,b,l}-*intoborder-*(#19842) - Canonicalization: collapse
scroll-m{t,b}-*intoscroll-my-*,scroll-m{l,r}-*intoscroll-mx-*, andscroll-m{t,r,b,l}-*intoscroll-m-*(#19842) - Canonicalization: collapse
scroll-p{t,b}-*intoscroll-py-*,scroll-p{l,r}-*intoscroll-px-*, andscroll-p{t,r,b,l}-*intoscroll-p-*(#19842) - Canonicalization: collapse
overflow-{x,y}-*intooverflow-*(#19842) - Canonicalization: collapse
overscroll-{x,y}-*intooverscroll-*(#19842) - Read from
--placeholder-colorinstead of--background-colorforplaceholder-*utilities (#19843) - Upgrade: ensure files are not emptied out when killing the upgrade process while it's running (#19846)
- Upgrade: use
config.contentwhen migrating from Tailwind CSS v3 to Tailwind CSS v4 (#19846) - Upgrade: never migrate files that are ignored by git (#19846)
- Add
.envand.env.*to default ignored content files (#19846) - Canonicalization: migrate
overflow-ellipsisintotext-ellipsis(#19849) - Canonicalization: migrate
start-full→inset-s-full,start-auto→inset-s-auto,start-px→inset-s-px, andstart-<number>→inset-s-<number>as well as negative versions (#19849) - Canonicalization: migrate
end-full→inset-e-full,end-auto→inset-e-auto,end-px→inset-e-px, andend-<number>→inset-e-<number>as well as negative versions (#19849) - Canonicalization: move the
-sign inside the arbitrary value-left-[9rem]→left-[-9rem](#19858) - Canonicalization: move the
-sign outside the arbitrary valueml-[calc(-1*var(--width))]→-ml-(--width)(#19858) - Improve performance when scanning JSONL / NDJSON files (#19862)
- Support
NODE_PATHenvironment variable in standalone CLI (#19617)
v4.2.2
v4.2.2
2 months ago
Added
- Support Vite 8 in
@tailwindcss/vite(#19790)
Fixed
- Don't crash when candidates contain prototype properties like
row-constructor(#19725) - Canonicalize
calc(var(--spacing)*…)expressions into--spacing(…)(#19769) - Fix crash in canonicalization step when handling utilities containing
@propertyat-rules (e.g.shadow-sm border) (#19727) - Skip full reload for server only modules scanned by client CSS when using
@tailwindcss/vite(#19745) - Improve canonicalization for bare values exceeding default spacing scale suggestions (e.g.
w-1234 h-1234→size-1234) (#19809) - Fix canonicalization resulting in empty list (e.g.
w-5 h-5 size-5→''instead ofsize-5) (#19812)
v4.2.1
v4.2.1
2 months ago
Fixed
v4.2.0
v4.2.0
2 months ago
Added
- Add mauve, olive, mist, and taupe color palettes to the default theme (#19627)
- Add
@tailwindcss/webpackpackage to run Tailwind CSS as a webpack plugin (#19610) - Add
pbs-*andpbe-*utilities forpadding-block-startandpadding-block-end(#19601) - Add
mbs-*andmbe-*utilities formargin-block-startandmargin-block-end(#19601) - Add
scroll-pbs-*andscroll-pbe-*utilities forscroll-padding-block-startandscroll-padding-block-end(#19601) - Add
scroll-mbs-*andscroll-mbe-*utilities forscroll-margin-block-startandscroll-margin-block-end(#19601) - Add
border-bs-*andborder-be-*utilities forborder-block-startandborder-block-end(#19601) - Add
inline-*,min-inline-*,max-inline-*utilities forinline-size,min-inline-size, andmax-inline-size(#19612) - Add
block-*,min-block-*,max-block-*utilities forblock-size,min-block-size, andmax-block-size(#19612) - Add
inset-s-*,inset-e-*,inset-bs-*,inset-be-*utilities forinset-inline-start,inset-inline-end,inset-block-start, andinset-block-end(#19613) - Add
font-features-*utility forfont-feature-settings(#19623)
Fixed
- Prevent double
@supportswrapper forcolor-mixvalues (#19450) - Allow whitespace around
@source inline()argument (#19461) - Emit comment when source maps are saved to files when using
@tailwindcss/cli(#19447) - Detect utilities containing capital letters followed by numbers (#19465)
- Fix class extraction for Rails' strict locals (#19525)
- Align
@utilityname validation with Oxide scanner rules (#19524) - Fix infinite loop when using
@variantinside@custom-variant(#19633) - Allow multiples of
.25inaspect-*fractions (e.g.aspect-8.5/11) (#19688) - Ensure changes to external files listed via
@sourcetrigger a full page reload when using@tailwindcss/vite(#19670) - Improve performance of Oxide scanner in bigger projects by reducing file system walks (#19632)
- Ensure import aliases in Astro v5 work without crashing when using
@tailwindcss/vite(#19677) - Allow escape characters in
@utilitynames to improve support with formatters such as Biome (#19626) - Fix incorrect canonicalization results when canonicalizing multiple times (#19675)
- Add
.jjto default ignored content directories (#19687)
Deprecated
- Deprecate
start-*andend-*utilities in favor ofinset-s-*andinset-e-*utilities (#19613)
v4.1.18
v4.1.18
5 months ago
Fixed
- Ensure validation of
source(…)happens relative to the file it is in (#19274) - Include filename and line numbers in CSS parse errors (#19282)
- Skip comments in Ruby files when checking for class names (#19243)
- Skip over arbitrary property utilities with a top-level
!in the value (#19243) - Support environment API in
@tailwindcss/vite(#18970) - Preserve case of theme keys from JS configs and plugins (#19337)
- Write source maps correctly on the CLI when using
--watch(#19373) - Handle special defaults (like
ringColor.DEFAULT) in JS configs (#19348) - Improve backwards compatibility for
contenttheme key from JS configs (#19381) - Upgrade: Handle
futureandexperimentalconfig keys (#19344) - Try to canonicalize any arbitrary utility to a bare value (#19379)
- Validate candidates similarly to Oxide (#19397)
- Canonicalization: combine
text-*andleading-*classes (#19396) - Correctly handle duplicate CLI arguments (#19416)
- Don’t emit color-mix fallback rules inside
@keyframes(#19419) - CLI: Don't hang when output is
/dev/stdout(#19421)
v3.4.19
v3.4.19
5 months ago
Fixed
- Don’t break
sibling-*()functions when used insidecalc(…)(#19335)
v4.1.17
v4.1.17
6 months ago
Fixed
v4.1.16
v4.1.16
6 months ago
Fixed
v4.1.15
v4.1.15
7 months ago
Fixed
- Fix Safari devtools rendering issue due to
color-mixfallback (#19069) - Suppress Lightning CSS warnings about
:deep,:slotted, and:global(#19094) - Fix resolving theme keys when starting with the name of another theme key in JS configs and plugins (#19097)
- Allow named groups in combination with
not-*,has-*, andin-*(#19100) - Prevent important utilities from affecting other utilities (#19110)
- Don’t index into strings with the
theme(…)function (#19111) - Fix parsing issue when
\tis used in at-rules (#19130) - Upgrade: Canonicalize utilities containing
0values (#19095) - Upgrade: Migrate deprecated
break-wordstowrap-break-word(#19157)
Changed
- Remove the
postinstallscript from oxide (#19149)
v4.1.14
v4.1.14
7 months ago
Fixed
- Handle
'syntax in ClojureScript when extracting classes (#18888) - Handle
@variantinside@custom-variant(#18885) - Merge suggestions when using
@utility(#18900) - Ensure that file system watchers created when using the CLI are always cleaned up (#18905)
- Do not generate
grid-columnutilities when configuringgrid-column-startorgrid-column-end(#18907) - Do not generate
grid-rowutilities when configuringgrid-row-startorgrid-row-end(#18907) - Prevent duplicate CSS when overwriting a static utility with a theme key (#18056)
- Show Lightning CSS warnings (if any) when optimizing/minifying (#18918)
- Use
defaultexport condition for@tailwindcss/vite(#18948) - Re-throw errors from PostCSS nodes (#18373)
- Detect classes in markdown inline directives (#18967)
- Ensure files with only
@themeproduce no output when built (#18979) - Support Maud templates when extracting classes (#18988)
- Upgrade: Do not migrate
variant = 'outline'during upgrades (#18922) - Upgrade: Show version mismatch (if any) when running upgrade tool (#19028)
- Upgrade: Ensure first class inside
classNameis migrated (#19031) - Upgrade: Migrate classes inside
*ClassNameand*Classattributes (#19031)
v3.4.18
v3.4.18
7 months ago
Fixed
- Improve support for raw
supports-[…]queries in arbitrary values (#13605) - Fix
require.cacheerror when loaded through a TypeScript file in Node 22.18+ (#18665) - Support
import.meta.resolve(…)in configs for new enough Node.js versions (#18938) - Allow using newer versions of
postcss-load-configfor better ESM and TypeScript PostCSS config support with the CLI (#18938) - Remove irrelevant utility rules when matching important classes (#19030)