releases.shpreview
Tailwind CSS/Tailwind CSS

Tailwind CSS

Mon
Wed
Fri
JunJulAugSepOctNovDecJanFebMarAprMayJun
Less
More
Releases6Avg2/moVersionsv4.2.0 to v4.3.0
Added
  • Add @container-size utility (#18901)
  • Add scrollbar-{auto,thin,none} utilities for scrollbar-width, and scrollbar-thumb-* / scrollbar-track-* color utilities for scrollbar-color (#19981, #20019)
  • Add scrollbar-gutter-* utilities (#20018)
  • Add zoom-* utilities (#20020)
  • Add tab-* utilities (#20022)
  • Allow using @variant with stacked variants (e.g. @variant hover:focus { … }) (#19996)
  • Allow using @variant with compound variants (e.g. @variant hover, focus { … }) (#19996)
  • Support --default(…) in --value(…) and --modifier(…) for functional @utility definitions (#19989)
Fixed
  • Ensure @plugin resolves package JavaScript entries instead of browser CSS entries when using @tailwindcss/vite (#19949)
  • Fix relative @import and @plugin paths resolving from the wrong directory when using @tailwindcss/vite (#19965)
  • Ensure CSS files containing @variant are processed by @tailwindcss/vite (#19966)
  • Resolve imports relative to base when result.opts.from is 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], not mt-[-1920px]) (#19988)
  • Canonicalization: migrate arbitrary :has() variants from [&:has(…)] to has-[…] (#19991)
  • Upgrade: don’t migrate inline style attributes (e.g. style="flex-grow: 1"style="flex-grow: 1", not style="grow: 1") (#19918)
  • Allow multiple @utility definitions with the same name but different value types (#19777)
  • Export missing PluginWithConfig type from tailwindcss/plugin to fix errors when inferring plugin config types (#19707)
  • Ensure start and end legacy utilities without values do not generate CSS (#20003)
  • Ensure --value(…) is required in functional @utility definitions (#20005)
  • Canonicalization: preserve required whitespace around operators in negated arbitrary values (e.g. -left-[(var(--a)+var(--b))]) (#20011)
Fixed
  • Ensure imports in @import and @plugin still resolve correctly when using Vite aliases in @tailwindcss/vite (#19947)
Fixed
  • Canonicalization: improve canonicalizations for tracking-* utilities by preferring non-negative utilities (e.g. -tracking-tightertracking-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}-* into border-y-*, border-{l,r}-* into border-x-*, and border-{t,r,b,l}-* into border-* (#19842)
  • Canonicalization: collapse scroll-m{t,b}-* into scroll-my-*, scroll-m{l,r}-* into scroll-mx-*, and scroll-m{t,r,b,l}-* into scroll-m-* (#19842)
  • Canonicalization: collapse scroll-p{t,b}-* into scroll-py-*, scroll-p{l,r}-* into scroll-px-*, and scroll-p{t,r,b,l}-* into scroll-p-* (#19842)
  • Canonicalization: collapse overflow-{x,y}-* into overflow-* (#19842)
  • Canonicalization: collapse overscroll-{x,y}-* into overscroll-* (#19842)
  • Read from --placeholder-color instead of --background-color for placeholder-* utilities (#19843)
  • Upgrade: ensure files are not emptied out when killing the upgrade process while it's running (#19846)
  • Upgrade: use config.content when migrating from Tailwind CSS v3 to Tailwind CSS v4 (#19846)
  • Upgrade: never migrate files that are ignored by git (#19846)
  • Add .env and .env.* to default ignored content files (#19846)
  • Canonicalization: migrate overflow-ellipsis into text-ellipsis (#19849)
  • Canonicalization: migrate start-fullinset-s-full, start-autoinset-s-auto, start-pxinset-s-px, and start-<number>inset-s-<number> as well as negative versions (#19849)
  • Canonicalization: migrate end-fullinset-e-full, end-autoinset-e-auto, end-pxinset-e-px, and end-<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 value ml-[calc(-1*var(--width))]-ml-(--width) (#19858)
  • Improve performance when scanning JSONL / NDJSON files (#19862)
  • Support NODE_PATH environment variable in standalone CLI (#19617)
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 @property at-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-1234size-1234) (#19809)
  • Fix canonicalization resulting in empty list (e.g. w-5 h-5 size-5'' instead of size-5) (#19812)
Fixed
  • Allow trailing dash in functional utility names for backwards compatibility (#19696)
  • Properly detect classes containing . characters within curly braces in MDX files (#19711)
Added
  • Add mauve, olive, mist, and taupe color palettes to the default theme (#19627)
  • Add @tailwindcss/webpack package to run Tailwind CSS as a webpack plugin (#19610)
  • Add pbs-* and pbe-* utilities for padding-block-start and padding-block-end (#19601)
  • Add mbs-* and mbe-* utilities for margin-block-start and margin-block-end (#19601)
  • Add scroll-pbs-* and scroll-pbe-* utilities for scroll-padding-block-start and scroll-padding-block-end (#19601)
  • Add scroll-mbs-* and scroll-mbe-* utilities for scroll-margin-block-start and scroll-margin-block-end (#19601)
  • Add border-bs-* and border-be-* utilities for border-block-start and border-block-end (#19601)
  • Add inline-*, min-inline-*, max-inline-* utilities for inline-size, min-inline-size, and max-inline-size (#19612)
  • Add block-*, min-block-*, max-block-* utilities for block-size, min-block-size, and max-block-size (#19612)
  • Add inset-s-*, inset-e-*, inset-bs-*, inset-be-* utilities for inset-inline-start, inset-inline-end, inset-block-start, and inset-block-end (#19613)
  • Add font-features-* utility for font-feature-settings (#19623)
Fixed
  • Prevent double @supports wrapper for color-mix values (#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 @utility name validation with Oxide scanner rules (#19524)
  • Fix infinite loop when using @variant inside @custom-variant (#19633)
  • Allow multiples of .25 in aspect-* fractions (e.g. aspect-8.5/11) (#19688)
  • Ensure changes to external files listed via @source trigger 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 @utility names to improve support with formatters such as Biome (#19626)
  • Fix incorrect canonicalization results when canonicalizing multiple times (#19675)
  • Add .jj to default ignored content directories (#19687)
Deprecated
  • Deprecate start-* and end-* utilities in favor of inset-s-* and inset-e-* utilities (#19613)
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 content theme key from JS configs (#19381)
  • Upgrade: Handle future and experimental config keys (#19344)
  • Try to canonicalize any arbitrary utility to a bare value (#19379)
  • Validate candidates similarly to Oxide (#19397)
  • Canonicalization: combine text-* and leading-* 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)
Fixed
  • Don’t break sibling-*() functions when used inside calc(…) (#19335)
Fixed
  • Substitute @variant inside legacy JS APIs (#19263)
  • Prevent occasional crash on Windows when loaded into a worker thread (#19242)
Fixed
  • Discard candidates with an empty data type (#19172)
  • Fix canonicalization of arbitrary variants with attribute selectors (#19176)
  • Fix invalid colors due to nested & (#19184)
  • Improve canonicalization for & > :pseudo and & :pseudo arbitrary variants (#19178)
Fixed
  • Fix Safari devtools rendering issue due to color-mix fallback (#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-*, and in-* (#19100)
  • Prevent important utilities from affecting other utilities (#19110)
  • Don’t index into strings with the theme(…) function (#19111)
  • Fix parsing issue when \t is used in at-rules (#19130)
  • Upgrade: Canonicalize utilities containing 0 values (#19095)
  • Upgrade: Migrate deprecated break-words to wrap-break-word (#19157)
Changed
  • Remove the postinstall script from oxide (#19149)
Fixed
  • Handle ' syntax in ClojureScript when extracting classes (#18888)
  • Handle @variant inside @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-column utilities when configuring grid-column-start or grid-column-end (#18907)
  • Do not generate grid-row utilities when configuring grid-row-start or grid-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 default export condition for @tailwindcss/vite (#18948)
  • Re-throw errors from PostCSS nodes (#18373)
  • Detect classes in markdown inline directives (#18967)
  • Ensure files with only @theme produce 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 className is migrated (#19031)
  • Upgrade: Migrate classes inside *ClassName and *Class attributes (#19031)
Fixed
  • Improve support for raw supports-[…] queries in arbitrary values (#13605)
  • Fix require.cache error 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-config for better ESM and TypeScript PostCSS config support with the CLI (#18938)
  • Remove irrelevant utility rules when matching important classes (#19030)
Changed
  • Drop warning from browser build (#18731)
  • Drop exact duplicate declarations when emitting CSS (#18809)
Fixed
  • Don't transition visibility when using transition (#18795)
  • Discard matched variants with unknown named values (#18799)
  • Discard matched variants with non-string values (#18799)
  • Show suggestions for known matchVariant values (#18798)
  • Replace deprecated clip with clip-path in sr-only (#18769)
  • Hide internal fields from completions in matchUtilities (#18820)
  • Ignore .vercel folders by default (can be overridden by @source … rules) (#18855)
  • Consider variants starting with @- to be invalid (e.g. @-2xl:flex) (#18869)
  • Do not allow custom variants to start or end with a - or _ (#18867, #18872)
  • Upgrade: Migrate aria theme keys to @custom-variant (#18815)
  • Upgrade: Migrate data theme keys to @custom-variant (#18816)
  • Upgrade: Migrate supports theme keys to @custom-variant (#18817)
Fixed
  • Don't consider the global important state in @apply (#18404)
  • Add missing suggestions for flex-<number> utilities (#18642)
  • Fix trailing ) from interfering with extraction in Clojure keywords (#18345)
  • Detect classes inside Elixir charlist, word list, and string sigils (#18432)
  • Track source locations through @plugin and @config (#18345)
  • Allow boolean values of process.env.DEBUG in @tailwindcss/node (#18485)
  • Ignore consecutive semicolons in the CSS parser (#18532)
  • Center the dropdown icon added to an input with a paired datalist by default (#18511)
  • Extract candidates in Slang templates (#18565)
  • Improve error messages when encountering invalid functional utility names (#18568)
  • Discard CSS AST objects with false or undefined properties (#18571)
  • Allow users to disable URL rebasing in @tailwindcss/postcss via transformAssetUrls: false (#18321)
  • Fix false-positive migrations in addEventListener and JavaScript variable names (#18718)
  • Fix Standalone CLI showing default Bun help when run via symlink on Windows (#18723)
  • Read from --border-color-* theme keys in divide-* utilities for backwards compatibility (#18704)
  • Don't scan .hdr and .exr files for classes by default (#18734)
Fixed
  • Add heuristic to skip candidate migrations inside emit(…) (#18330)
  • Extract candidates with variants in Clojure/ClojureScript keywords (#18338)
  • Document --watch=always in the CLI's usage (#18337)
  • Add support for Vite 7 to @tailwindcss/vite (#18384)
Fixed
  • Fix incorrectly generated CSS when using percentages in arbitrary values with calc (e.g. w-[calc(100%-var(--offset))]) (#18289)
Fixed
  • Correctly parse custom properties with strings containing semicolons (#18251)
  • Upgrade: Migrate arbitrary modifiers without percentage signs to bare values (e.g. /[0.16]/16) (#18184)
  • Upgrade: Migrate CSS variable shorthands where fallback value contains function call (#18184)
  • Upgrade: Migrate negative arbitrary values to negative bare values (e.g. mb-[-32rem]-mb-128) (#18212)
  • Upgrade: Do not migrate blur in wire:model.blur (#18216)
  • Don't add spaces around CSS dashed idents when formatting math expressions (#18220)
Added
  • Improve error messages when @apply fails (#18059)
Fixed
  • Upgrade: Do not migrate declarations that look like candidates in <style> blocks (#18057, 18068)
  • Upgrade: Don't error when looking for tailwindcss in pnpm monorepos (#18065)
  • Upgrade: Don't error when updating dependencies in pnpm monorepos (#18065)
  • Upgrade: Migrate deprecated order-none to order-0 (#18126)
  • Support Leptos class: attributes when extracting classes (#18093)
  • Fix "Cannot read properties of undefined" crash on malformed arbitrary value (#18133)
  • Upgrade: Migrate -mt-[0px] to mt-[0px] instead of the other way around (#18154)
  • Fix Haml pre-processing crash when there is no at the end of the file (#18155)
  • Ignore .pnpm-store folders by default (can be overridden by @source … rules) (#18163)
  • Fix PostCSS crash when calling toJSON() (#18083)
Added
  • Upgrade: Migrate bare values to named values (#18000)
  • Upgrade: Added cache to improve template migration performance (#18025)
Fixed
  • Allow _ before numbers during candidate extraction (#17961)
  • Prevent duplicate suggestions when using @theme and @utility together (#17675)
  • Ensure that media queries within ::before and ::after pseudo selectors create valid CSS rules in production builds (#17979)
  • Ensure that the standalone CLI does not leave temporary files behind (#17981)
  • Ensure -rotate-* utilities properly negate arbitrary values (#18014)
  • Ignore custom variants using :merge(…) selectors in legacy JS plugins (#18020)
  • Ensure classes containing . are properly extracted from Clojure files (#18038)
  • Upgrade: Fix error when using @import … source(…) (#17963)
  • Upgrade: Change casing of utilities with named values to kebab-case to match updated theme variables (#18017)
  • Upgrade: Don't migrate strings that match utility names in Vue attribute bindings other than class (#18025)
Last Checked
23h ago
Tracking since Oct 7, 2020