You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
d139ebe: Forward the loopCount option through the framework wrappers. Previously the React, Vue, Svelte, Solid, and Web Component wrappers never passed loopCount to the underlying DotLottie instance, so the core fell back to its default of 0 (infinite) and the animation always looped forever regardless of the configured value. The wrappers now forward loopCount on init, on load() when src/data change, and reactively when the prop changes.
Fixed triggers referencing a non-existent element via aria-controls when their content is removed from the DOM (credit to @dodomorandi for the original PR)
Added repository.directory to all package.json files
Fixed a bug in form control components to ensure their values are updated when their associated form's is reset. This affects RadioGroup, Slider, Select, and Switch.
Fixed menu items, tab triggers, toolbar links, and select items intercepting Space/Enter keys that originate from focusable descendants.
Allowed a Select.Item with an empty string value to act as a "clear" option. Selecting it resets the selection back to the placeholder, restoring the native <select> behavior for optional selects.
Fixed a bug where typeahead search resulted in focusing an element that no longer exists.
Added unstable Provider and BubbleInput parts to Select. Select.unstable_Provider sets up Select's context and state without implicitly rendering the hidden native select, and Select.unstable_BubbleInput exposes that previously internal native select so consumers can recompose it explicitly. Select continues to render both by default.
Added support for presence-based exit animations in Select
Fixed Select hidden input so it submits empty string when no value is selected
Fixed placeholder rendering when a controlled Select is reset to an empty value
Added missing __selectScope prop to PopperContent component
Fixed Select closing unexpectedly after touch-scrolling its content when rendered inside an open shadow DOM
Fixed a bug where iOS text selection and editing on HTML inputs within react-dialog were broken
Fixed triggers referencing a non-existent element via aria-controls when their content is removed from the DOM (credit to @dodomorandi for the original PR)
Fixed SelectValue logging invalid prop errors when used with both asChild and a placeholder
Added repository.directory to all package.json files
Support --watch --poll[=ms] in @tailwindcss/cli when filesystem events are unreliable or unavailable (#20297)
Canonicalization: match arbitrary hex colors against theme colors case-insensitively (e.g. bg-[#fff] and bg-[#FFF] → bg-white) (#20298)
Prevent Preflight from overriding Firefox's native iframe:focus-visible outline styles (#20292)
Ensure theme('colors.foo') in JS plugins resolves correctly when both --color-foo and --color-foo-bar exist (#20299)
Ensure fractional opacity modifiers work with named shadow sizes like shadow-sm/12.5, text-shadow-sm/12.5, drop-shadow-sm/12.5, and inset-shadow-sm/12.5 (#20302)
Parse selectors like [data-foo]div as two selectors instead of one (#20303)
Ensure @tailwindcss/postcss rebuilds when a preprocessor like Sass changes the input CSS without changing the input file on disk (#20310)
Ensure CSS nesting is handled even when Lightning CSS isn't run, such as in @tailwindcss/browser and Tailwind Play (#20124)
Prevent achromatic theme colors from shifting hue when mixed in polar color spaces like oklch (#20314)
Ensure --spacing(0) is optimized to 0px instead of 0 so it remains a <length> when used in calc(…) (#20319)
Load @parcel/watcher only when needed in @tailwindcss/cli --watch mode, so one-off builds and --watch --poll work when @parcel/watcher can't be loaded (#20325)
Use explicit platform fonts instead of system-ui and ui-sans-serif so CJK text respects the page's lang attribute on Windows (#20318)
Prevent @tailwindcss/upgrade from rewriting ignored files when run from a subdirectory (#20329)
Ensure earlier @source rules pointing to nested files are scanned when later @source rules point to files in parent folders (#20335)
Prevent @tailwindcss/vite from triggering full page reloads when scanned files are processed by Vite but haven't been loaded as modules yet (#20336)
Canonicalization: avoid suggesting large spacing-scale values for arbitrary lengths (e.g. left-[99999px] → left-[99999px], not left-24999.75) (#20130)
Ensure @tailwindcss/cli in --watch mode recovers when a tracked dependency is deleted and restored (#20137)
Ensure standalone @tailwindcss/cli binaries are ignored when scanning for class candidates (#20139)
Ensure class candidates are extracted from Twig addClass(…) and removeClass(…) calls (#20198)
Don't crash in the Ruby or Vue preprocessors when scanning files containing invalid UTF-8 bytes (#19588)
Allow @variant to be used inside addBase (#19480)
Ensure @source globs with symlinks are preserved (#20203)
Ensure later @source rules can re-include files excluded by earlier @source not rules (#20203)
Upgrade: don't migrate empty class rules to invalid @utility rules (#20205)
Ensure transitions between inset-shadow-none and other inset shadows work correctly (#20208)
Ensure explicitly referenced @source directories are scanned even when ignored by git (#20214)
Ensure @source globs ending in **/* preserve dynamic path segments to avoid scanning too many files (#20217)
Canonicalization: don't fold calc(…) divisions when the result would require high precision (e.g. w-[calc(100%/3.5)] → w-[calc(100%/3.5)], not w-[28.571428571428573%]) (#20221)
Serve ESM type declarations to ESM importers of @tailwindcss/postcss (#20228)
Changed
Generate 0 instead of calc(var(--spacing) * 0) for spacing utilities like m-0 and left-0 (#20196)
Generate var(--spacing) instead of calc(var(--spacing) * 1) for spacing utilities like m-1 and left-1 (#20196)
Add scrollbar-{auto,thin,none} utilities for scrollbar-width, and scrollbar-thumb-* / scrollbar-track-* color utilities for scrollbar-color (#19981, #20019)
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)
Update dev and build tooling across the repo (Tailwind 4.3, PostCSS 8.5, Webpack 5.108, Playwright 1.61, Radix UI patches, sharp 0.35) to improve build stability and tests. No runtime logic changes.
Dependencies
CSS pipeline: tailwindcss and @tailwindcss/postcss → 4.3.3; postcss → 8.5.19.
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
This PR includes no changesets
When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/happy-dom@20.11.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm webpack is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/webpack@5.108.4. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
7.29.6→7.29.70.19.0→0.19.101.1.12→1.1.162.1.16→2.1.202.2.6→2.3.31.1.10→1.1.141.1.11→1.1.154.1.4→4.3.320.17.30→20.19.4322.19.17→22.20.18.0.0→8.0.10.184.0→0.185.11.1.2→1.2.14.1.4→4.1.100.6.1→0.7.0^0.4.19→^0.5.020.9.0→20.11.08.5.2→8.6.00.0.66→0.0.781.59.1→1.61.18.5.10→8.5.190.34.5→0.35.33.5.0→3.6.04.1.4→4.3.35.106.2→5.108.4Release Notes
babel/babel (@babel/core)
v7.29.7Compare Source
v7.29.7 (2026-05-25)
Re-release all packages with npm provenance attestations
LottieFiles/dotlottie-web (@lottiefiles/dotlottie-react)
v0.19.10Compare Source
Patch Changes
3d2be0b: fix: support React StrictMode (#439, #893, #326)6e8c2d7]6e8c2d7]6818ad9]3d2be0b]696416a]6e8c2d7]v0.19.9Compare Source
Patch Changes
7af326d]v0.19.8Compare Source
Patch Changes
be7b01c]be7b01c]be7b01c]v0.19.7Compare Source
Patch Changes
ed38eb1]v0.19.6Compare Source
Patch Changes
d139ebe: Forward theloopCountoption through the framework wrappers. Previously the React, Vue, Svelte, Solid, and Web Component wrappers never passedloopCountto the underlyingDotLottieinstance, so the core fell back to its default of0(infinite) and the animation always looped forever regardless of the configured value. The wrappers now forwardloopCounton init, onload()whensrc/datachange, and reactively when the prop changes.v0.19.5Compare Source
Patch Changes
6252c99]e322ffb]v0.19.4Compare Source
Patch Changes
9d4e54a]v0.19.3Compare Source
Patch Changes
6d2fc23: Declareengines: { node: ">=18.17.0", npm: ">=9.5.0" }so downstream installs run on toolchains capable of verifying npm provenance attestations.4c93b68]4c93b68]6d2fc23]v0.19.2Compare Source
Patch Changes
a354c24]c0011a4]v0.19.1Compare Source
Patch Changes
73046d6]d4df529]radix-ui/primitives (@radix-ui/react-collapsible)
v1.1.16@radix-ui/primitive@1.1.5,@radix-ui/react-context@1.2.0,@radix-ui/react-presence@1.1.7v1.1.15@radix-ui/react-primitive@2.1.7v1.1.14@radix-ui/react-primitive@2.1.6v1.1.13aria-controlswhen their content is removed from the DOM (credit to @dodomorandi for the original PR)@radix-ui/react-presence@1.1.6,@radix-ui/primitive@1.1.4,@radix-ui/react-compose-refs@1.1.3,@radix-ui/react-context@1.1.4,@radix-ui/react-id@1.1.2,@radix-ui/react-primitive@2.1.5,@radix-ui/react-use-controllable-state@1.2.3,@radix-ui/react-use-layout-effect@1.1.2radix-ui/primitives (@radix-ui/react-dropdown-menu)
v2.1.20Space/Enterkeys that originate from focusable descendants.@radix-ui/primitive@1.1.5,@radix-ui/react-context@1.2.0,@radix-ui/react-menu@2.1.20v2.1.19Other updates
@radix-ui/react-primitive@2.1.7,@radix-ui/react-menu@2.1.19v2.1.18@radix-ui/react-menu@2.1.18,@radix-ui/react-primitive@2.1.6v2.1.17@radix-ui/react-menu@2.1.17,@radix-ui/primitive@1.1.4,@radix-ui/react-compose-refs@1.1.3,@radix-ui/react-context@1.1.4,@radix-ui/react-id@1.1.2,@radix-ui/react-primitive@2.1.5,@radix-ui/react-use-controllable-state@1.2.3radix-ui/primitives (@radix-ui/react-select)
v2.3.3RadioGroup,Slider,Select, andSwitch.Space/Enterkeys that originate from focusable descendants.@radix-ui/react-dismissable-layer@1.1.15,@radix-ui/primitive@1.1.5,@radix-ui/react-context@1.2.0,@radix-ui/react-focus-scope@1.1.12,@radix-ui/react-presence@1.1.7,@radix-ui/react-collection@1.1.12,@radix-ui/react-popper@1.3.3v2.3.2Other updates
@radix-ui/react-primitive@2.1.7,@radix-ui/react-dismissable-layer@1.1.14,@radix-ui/react-focus-scope@1.1.11,@radix-ui/react-popper@1.3.2,@radix-ui/react-collection@1.1.11,@radix-ui/react-portal@1.1.13,@radix-ui/react-visually-hidden@1.2.7v2.3.1Select.Itemwith an empty string value to act as a "clear" option. Selecting it resets the selection back to the placeholder, restoring the native<select>behavior for optional selects.@radix-ui/react-slot@1.3.0,@radix-ui/react-popper@1.3.1,@radix-ui/react-dismissable-layer@1.1.13,@radix-ui/react-primitive@2.1.6,@radix-ui/react-collection@1.1.10,@radix-ui/react-focus-scope@1.1.10,@radix-ui/react-portal@1.1.12,@radix-ui/react-visually-hidden@1.2.6v2.3.0ProviderandBubbleInputparts to Select.Select.unstable_Providersets up Select's context and state without implicitly rendering the hidden nativeselect, andSelect.unstable_BubbleInputexposes that previously internal nativeselectso consumers can recompose it explicitly.Selectcontinues to render both by default.__selectScopeprop toPopperContentcomponentSelectclosing unexpectedly after touch-scrolling its content when rendered inside an open shadow DOMreact-dialogwere brokenaria-controlswhen their content is removed from the DOM (credit to @dodomorandi for the original PR)SelectValuelogging invalid prop errors when used with bothasChildand a placeholder@radix-ui/react-presence@1.1.6,@radix-ui/react-popper@1.3.0,@radix-ui/react-slot@1.2.5,@radix-ui/react-focus-guards@1.1.4,@radix-ui/react-dismissable-layer@1.1.12,@radix-ui/react-collection@1.1.9,@radix-ui/react-direction@1.1.2,@radix-ui/number@1.1.2,@radix-ui/primitive@1.1.4,@radix-ui/react-compose-refs@1.1.3,@radix-ui/react-context@1.1.4,@radix-ui/react-focus-scope@1.1.9,@radix-ui/react-id@1.1.2,@radix-ui/react-portal@1.1.11,@radix-ui/react-primitive@2.1.5,@radix-ui/react-use-callback-ref@1.1.2,@radix-ui/react-use-controllable-state@1.2.3,@radix-ui/react-use-layout-effect@1.1.2,@radix-ui/react-use-previous@1.1.2,@radix-ui/react-visually-hidden@1.2.5radix-ui/primitives (@radix-ui/react-toggle)
v1.1.14@radix-ui/primitive@1.1.5v1.1.13@radix-ui/react-primitive@2.1.7v1.1.12@radix-ui/react-primitive@2.1.6v1.1.11@radix-ui/primitive@1.1.4,@radix-ui/react-primitive@2.1.5,@radix-ui/react-use-controllable-state@1.2.3radix-ui/primitives (@radix-ui/react-toggle-group)
v1.1.15@radix-ui/primitive@1.1.5,@radix-ui/react-context@1.2.0,@radix-ui/react-roving-focus@1.1.15,@radix-ui/react-toggle@1.1.14v1.1.14@radix-ui/react-primitive@2.1.7,@radix-ui/react-roving-focus@1.1.14,@radix-ui/react-toggle@1.1.13v1.1.13radiogroupandtoolbarroles, respectively.@radix-ui/react-primitive@2.1.6,@radix-ui/react-roving-focus@1.1.13,@radix-ui/react-toggle@1.1.12v1.1.12@radix-ui/react-direction@1.1.2,@radix-ui/primitive@1.1.4,@radix-ui/react-context@1.1.4,@radix-ui/react-primitive@2.1.5,@radix-ui/react-roving-focus@1.1.12,@radix-ui/react-toggle@1.1.11,@radix-ui/react-use-controllable-state@1.2.3tailwindlabs/tailwindcss (@tailwindcss/postcss)
v4.3.3Compare Source
Fixed
--watch --poll[=ms]in@tailwindcss/cliwhen filesystem events are unreliable or unavailable (#20297)bg-[#fff]andbg-[#FFF]→bg-white) (#20298)iframe:focus-visibleoutline styles (#20292)theme('colors.foo')in JS plugins resolves correctly when both--color-fooand--color-foo-barexist (#20299)shadow-sm/12.5,text-shadow-sm/12.5,drop-shadow-sm/12.5, andinset-shadow-sm/12.5(#20302)[data-foo]divas two selectors instead of one (#20303)@tailwindcss/postcssrebuilds when a preprocessor like Sass changes the input CSS without changing the input file on disk (#20310)@tailwindcss/browserand Tailwind Play (#20124)oklch(#20314)--spacing(0)is optimized to0pxinstead of0so it remains a<length>when used incalc(…)(#20319)@parcel/watcheronly when needed in@tailwindcss/cli --watchmode, so one-off builds and--watch --pollwork when@parcel/watchercan't be loaded (#20325)system-uiandui-sans-serifso CJK text respects the page'slangattribute on Windows (#20318)@tailwindcss/upgradefrom rewriting ignored files when run from a subdirectory (#20329)@sourcerules pointing to nested files are scanned when later@sourcerules point to files in parent folders (#20335)@tailwindcss/vitefrom triggering full page reloads when scanned files are processed by Vite but haven't been loaded as modules yet (#20336)v4.3.2Compare Source
Fixed
auto-rows-*andauto-cols-*utilities (e.g.auto-rows-12andauto-cols-16) (#20229)@tailwindcss/cliin--watchmode from crashing on Windows when@sourcepoints to a directory that doesn't exist (#20242)@tailwindcss/vitefrom crashing in Deno v2.8.x whencontext.parentURLis not a valid URL (#20245)@tailwindcss/cliin--watchmode rebuilds when the input CSS file changes in an ignored directory (#20246)@variantrules used inaddBase(…)to use custom variants defined later (#20247)@tailwindcss/vitefrom crashing during HMR when scanned files or directories are deleted (#20259)font-sizeinstead ofcolordeclarations fortext-[--spacing(…)](#20260)@sourcepatterns from scanning unrelated sibling files and folders (#20263)%]…[%in.tt,.tt2, and.txfiles (#20269)p.text-black[condition](#20269)@position-tryrules from triggering unknown at-rule warnings when optimizing CSS (#20277)--opacitytheme values (#20287)@tailwindcss/postcsswhen used with newer PostCSS patch releases (#20289)v4.3.1Compare Source
Added
--silentoption to suppress output in@tailwindcss/cli(#20100)Fixed
Module#registerHooksinstead ofModule#registeron Node 26+ (#20028)@applyto be used with CSS mixins (#19427)not-*correctly negates@containerqueries, includingstyle(…)queries (#20059)drop-shadow-*color utilities work with custom shadow values containingcalc(…)(#20080)@tailwindcss/vite(#20103)@tailwindcss/webpackcan be installed in Rspack projects without requiringwebpackas a peer dependency (#20027)calc(…)expressions (e.g.px-[calc(1rem+0px)]→px-[calc(1rem+0)]) (#20127)left-[99999px]→left-[99999px], notleft-24999.75) (#20130)@tailwindcss/cliin--watchmode recovers when a tracked dependency is deleted and restored (#20137)@tailwindcss/clibinaries are ignored when scanning for class candidates (#20139)addClass(…)andremoveClass(…)calls (#20198)@variantto be used insideaddBase(#19480)@sourceglobs with symlinks are preserved (#20203)@sourcerules can re-include files excluded by earlier@source notrules (#20203)@utilityrules (#20205)inset-shadow-noneand other inset shadows work correctly (#20208)@sourcedirectories are scanned even when ignored by git (#20214)@sourceglobs ending in**/*preserve dynamic path segments to avoid scanning too many files (#20217)calc(…)divisions when the result would require high precision (e.g.w-[calc(100%/3.5)]→w-[calc(100%/3.5)], notw-[28.571428571428573%]) (#20221)@tailwindcss/postcss(#20228)Changed
0instead ofcalc(var(--spacing) * 0)for spacing utilities likem-0andleft-0(#20196)var(--spacing)instead ofcalc(var(--spacing) * 1)for spacing utilities likem-1andleft-1(#20196)v4.3.0Compare Source
Added
@container-sizeutility (#18901)scrollbar-{auto,thin,none}utilities forscrollbar-width, andscrollbar-thumb-*/scrollbar-track-*color utilities forscrollbar-color(#19981, #20019)scrollbar-gutter-*utilities (#20018)zoom-*utilities (#20020)tab-*utilities (#20022)@variantwith stacked variants (e.g.@variant hover:focus { … }) (#19996)@variantwith compound variants (e.g.@variant hover, focus { … }) (#19996)--default(…)in--value(…)and--modifier(…)for functional@utilitydefinitions (#19989)Fixed
@pluginresolves package JavaScript entries instead of browser CSS entries when using@tailwindcss/vite(#19949)@importand@pluginpaths resolving from the wrong directory when using@tailwindcss/vite(#19965)@variantare processed by@tailwindcss/vite(#19966)basewhenresult.opts.fromis not provided when using@tailwindcss/postcss(#19980)_whitespace in arbitrary values (#19986)w-[calc(100%---spacing(60))]→w-[calc(100%-(--spacing(60)))]) (#19986)-mt-[20in]→mt-[-20in], notmt-[-1920px]) (#19988):has()variants from[&:has(…)]tohas-[…](#19991)styleattributes (e.g.style="flex-grow: 1"→style="flex-grow: 1", notstyle="grow: 1") (#19918)@utilitydefinitions with the same name but different value types (#19777)PluginWithConfigtype fromtailwindcss/pluginto fix errors when inferring plugin config types (#19707)startandendlegacy utilities without values do not generate CSS (#20003)--value(…)is required in functional@utilitydefinitions (#20005)-left-[(var(--a)+var(--b))]) (#20011)v4.2.4Compare Source
Fixed
@importand@pluginstill resolve correctly when using Vite aliases in@tailwindcss/vite(#19947)v4.2.3Compare Source
Fixed
tracking-*utilities by preferring non-negative utilities (e.g.-tracking-tighter→tracking-wider) (#19827)@tailwindcss/webpack(#19723)px-[1.2rem] py-[1.2rem]→p-[1.2rem]) (#19837)border-{t,b}-*intoborder-y-*,border-{l,r}-*intoborder-x-*, andborder-{t,r,b,l}-*intoborder-*(#19842)scroll-m{t,b}-*intoscroll-my-*,scroll-m{l,r}-*intoscroll-mx-*, andscroll-m{t,r,b,l}-*intoscroll-m-*(#19842)scroll-p{t,b}-*intoscroll-py-*,scroll-p{l,r}-*intoscroll-px-*, andscroll-p{t,r,b,l}-*intoscroll-p-*(#19842)overflow-{x,y}-*intooverflow-*(#19842)overscroll-{x,y}-*intooverscroll-*(#19842)--placeholder-colorinstead of--background-colorforplaceholder-*utilities (#19843)config.contentwhen migrating from Tailwind CSS v3 to Tailwind CSS v4 (#19846).envand.env.*to default ignored content files (#19846)overflow-ellipsisintotext-ellipsis(#19849)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)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)-sign inside the arbitrary value-left-[9rem]→left-[-9rem](#19858)-sign outside the arbitrary valueml-[calc(-1*var(--width))]→-ml-(--width)(#19858)NODE_PATHenvironment variable in standalone CLI (#19617)v4.2.2Compare Source
Fixed
row-constructor(#19725)calc(var(--spacing)*…)expressions into--spacing(…)(#19769)@propertyat-rules (e.g.shadow-sm border) (#19727)@tailwindcss/vite(#19745)@tailwindcss/vite(#19790)w-1234 h-1234→size-1234) (#19809)w-5 h-5 size-5→''instead ofsize-5) (#19812)v4.2.1Compare Source
Fixed
.characters within curly braces in MDX files (#19711)v4.2.0Compare Source
Added
@tailwindcss/webpackpackage to run Tailwind CSS as a webpack plugin (#19610)pbs-*andpbe-*utilities forpadding-block-startandpadding-block-end(#19601)mbs-*andmbe-*utilities formargin-block-startandmargin-block-end(#19601)scroll-pbs-*andscroll-pbe-*utilities forscroll-padding-block-startandscroll-padding-block-end(#19601)scroll-mbs-*andscroll-mbe-*utilities forscroll-margin-block-startandscroll-margin-block-end(#19601)border-bs-*andborder-be-*utilities forborder-block-startandborder-block-end(#19601)inline-*,min-inline-*,max-inline-*utilities forinline-size,min-inline-size, andmax-inline-size(#19612)block-*,min-block-*,max-block-*utilities forblock-size,min-block-size, andmax-block-size(#19612)inset-s-*,inset-e-*,inset-bs-*,inset-be-*utilities forinset-inline-start,inset-inline-end,inset-block-start, andinset-block-end(#19613)font-features-*utility forfont-feature-settings(#19623)Fixed
@supportswrapper forcolor-mixvalues (#19450)@source inline()argument (#19461)@tailwindcss/cli(#19447)@utilityname validation with Oxide scanner rules (#19524)@variantinside@custom-variant(#19633).25inaspect-*fractions (e.g.aspect-8.5/11) (#19688)@sourcetrigger a full page reload when using@tailwindcss/vite(#19670)@tailwindcss/vite(#19677)@utilitynames to improve support with formatters such as Biome (#19626).jjto default ignored content directories (#19687)Deprecated
start-*andend-*utilities in favor ofinset-s-*andinset-e-*utilities (#19613)v4.1.18Compare Source
Fixed
source(…)happens relative to the file it is in (#19274)!in the value (#19243)@tailwindcss/vite(#18970)--watch(#19373)ringColor.DEFAULT) in JS configs (#19348)contenttheme key from JS configs (#19381)futureandexperimentalconfig keys (#19344)text-*andleading-*classes (#19396)@keyframes(#19419)/dev/stdout([#19421](https://redirect.github.com/tailwindlabs/tailwindcss/pull/19421Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Never, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.
Summary by cubic
Update dev and build tooling across the repo (Tailwind 4.3, PostCSS 8.5, Webpack 5.108, Playwright 1.61, Radix UI patches,
sharp0.35) to improve build stability and tests. No runtime logic changes.tailwindcssand@tailwindcss/postcss→ 4.3.3;postcss→ 8.5.19.webpack→ 5.108.4;@babel/core→ 7.29.7.playwright→ 1.61.1;@vitest/browser-playwright→ 4.1.10;happy-dom→ 20.11.0.@lottiefiles/dotlottie-react→ 0.19.10 (StrictMode fix);colorjs.io→ 0.7.0;tailwind-merge→ 3.6.0.@vercel/firewall→ 1.2.1;sharp→ 0.35.3;next-safe-action→ 8.6.0.@types/node,@types/three,@types/nodemailerupdates;eslint-plugin-react-refresh→ 0.5.0.pnpm-lock.yaml, e2epackage-lock.json).Written for commit 8c07b33. Summary will update on new commits.