116 Commits
Author SHA1 Message Date
Robin MalfaitandGitHub 5fecb4e562 4.3.3 (#20334) 2026-07-16 07:21:50 -04:00
Robin MalfaitandGitHub 6f0577f691 4.3.2 (#20281) 2026-06-29 10:10:00 -04:00
Robin MalfaitandGitHub ffb07aeb72 4.3.1 (#20226) 2026-06-12 19:33:35 +02:00
Robin MalfaitandGitHub e0489ba984 4.3.0 (#20023) 2026-05-08 22:03:59 +02:00
Robin MalfaitandGitHub 83801a1acf 4.2.4 (#19948) 2026-04-21 14:52:34 +02:00
Robin MalfaitandGitHub c3012b452c 4.2.3 (#19944) 2026-04-20 22:32:52 +02:00
Robin MalfaitandGitHub c6baf159d7 4.2.2 (#19821) 2026-03-18 11:44:08 -04:00
Robin MalfaitandGitHub 39d5e02be9 Add support for Vite 8 in @tailwindcss/vite (#19790)
This PR adds support for Vite 8 when using the `@tailwindcss/vite`
package.

From the package's perspective, not a lot had to change, just the `vite`
peer dependency now has an additional `^8.0.0` version range.

Closes: #19789

## Test plan

1. Existing tests pass
2. Manually tested in the `./playgrounds/vite` playground
3. Added Vite 8 integration tests to verify that the plugin works with
Vite 8
2026-03-12 20:54:34 +01:00
Robin MalfaitandGitHub 9b3911ebd4 4.2.1 (#19714) 2026-02-23 11:45:12 +01:00
b56832751b 4.2.0 (#19695)
Co-authored-by: Adam Wathan <[email protected]>
2026-02-18 15:45:06 +01:00
Jordan PittmanandGitHub 4055eeacb5 Release v4.1.18 (#19431) 2025-12-11 10:55:25 -05:00
Jordan PittmanandGitHub d204802ae6 Release v4.1.17 (#19272) 2025-11-06 10:20:36 -05:00
Robin MalfaitandGitHub 07b0c21c3e Release 4.1.16 (#19185) 2025-10-23 12:32:27 +02:00
Robin MalfaitandGitHub b6034d42fa Release 4.1.15 (#19159) 2025-10-20 14:48:42 +02:00
98d96020bc Prepare v4.1.14 release (#19037)
Co-authored-by: Robin Malfait <[email protected]>
2025-10-01 11:48:02 -04:00
c1d312a1ea Use default export condition for @tailwindcss/vite (#18948)
## Summary

In `@tailwindcss/vite` 's `package.json`, change the `exports` key from
`include` to `default` since there is no `require` case.

Ran into an issue using the `tsx` package to run a script that has a
sub-dependency that imports from `@tailwindcss/vite`, where `tsx`
converts things to cjs to run, and since there is no `require` case for
this package, it can't find the file. Changing to `default` covers the
cases for both `import` and `require`.

## Test plan

No testing needed. Functionality is the same.

---------

Co-authored-by: Jordan Pittman <[email protected]>
2025-09-16 15:04:13 -04:00
Jordan PittmanandGitHub 906ca1aa38 Prepare v4.1.13 release (#18868) 2025-09-04 13:18:25 -04:00
da6cb85df1 Prepare v4.1.12 release (#18728)
Co-authored-by: Jordan Pittman <[email protected]>
Co-authored-by: Adam Wathan <[email protected]>
2025-08-14 14:35:49 +02:00
Robin MalfaitandGitHub d3b5ae8696 Prepare 4.1.11 (#18397) 2025-06-26 12:43:17 +02:00
8a7f62750a feat: add Vite 7 support to the @tailwindcss/vite plugin (#18384)
Closes #18381 

* [Changelog for Vite 7.0.0
(2025-06-24)](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md#700-2025-06-24)

Starting from Vite 7, Node 18 support will be dropped, which doesn't
really affect Tailwind. It might be worth mentioning in the
documentation that the recommended minimum Node versions are 20.19 and
22.12.

Vite 7 is only available in ESM format, which is also not an issue.

Vite's browser support aligns with the v4 guidelines:
```
Chrome 87 → 107       (tw: 111)
Edge 88 → 107         (tw: 111)
Firefox 78 → 104      (tw: 128)
Safari 14.0 → 16.0    (tw: 16.4)
```
* [Vite 7 - Browser
Support](https://vite.dev/guide/migration.html#default-browser-target-change)
* [Tailwind CSS v4 - Browser
Support](https://tailwindcss.com/docs/compatibility#browser-support)

So, at first glance, there's nothing more to do except enabling support
for these versions.

---------

Co-authored-by: Jordan Pittman <[email protected]>
2025-06-24 12:31:17 -04:00
Robin MalfaitandGitHub 88a1cee6de Prepare v4.1.10 (#18290) 2025-06-11 22:26:51 +02:00
05c1fa166b Prepare v4.1.9 (#18285)
Co-authored-by: Adam Wathan <[email protected]>
2025-06-11 15:57:38 +02:00
7339aa36fe Release v4.1.8 (#18164)
Co-authored-by: Jordan Pittman <[email protected]>
2025-05-28 17:01:27 +02:00
174900130a Prepare v4.1.7 release (#18040)
Co-authored-by: Adam Wathan <[email protected]>
2025-05-15 15:31:18 +02:00
cdbab8471c Prepare v4.1.6 release (#17951)
Co-authored-by: Adam Wathan <[email protected]>
2025-05-09 13:39:18 +00:00
fd4aa0fa92 Prepare v4.1.5 release (#17830)
Co-authored-by: Adam Wathan <[email protected]>
2025-04-30 16:57:44 +02:00
f09dc6ad24 Prepare v4.1.4 release (#17669)
Co-authored-by: Adam Wathan <[email protected]>
2025-04-14 17:32:30 +02:00
831b624dc4 Prepare v4.1.3 release (#17563)
Co-authored-by: Adam Wathan <[email protected]>
2025-04-04 19:54:23 +02:00
932f9a8a00 Prepare release v4.1.2 (#17530)
Co-authored-by: Adam Wathan <[email protected]>
2025-04-03 15:36:42 +00:00
Robin MalfaitandGitHub 0f75bcacf1 Prepare release v4.1.1 (#17503) 2025-04-02 09:27:58 +00:00
5486d3aace Prepare 4.1.0 release (#17483)
---------

Co-authored-by: Adam Wathan <[email protected]>
2025-04-01 18:05:18 +02:00
Philipp SpiessandGitHub a8af005a84 Improve compatibility with Safari 15 (#17435)
This PR improves the compatibility with Tailwind CSS v4 with unsupported
browsers with the goal to greatly improve compatibility with Safari 15.

To make this work, this PR makes the following changes to all code

- Change `oklab(…)` default theme values to use a percentage in the
first place (so instead of `--color-red-500: oklch(0.637 0.237 25.331);`
we now define it as `--color-red-500: oklch(63.7% 0.237 25.331);` since
this syntax has much broader support on Safari).
- Polyfill `@property` with a `@supports` query targeting older versions
of Safari and Firefox *
- Create fallbacks for the `color-mix(…)` function that use _inlined
color values from your theme_ so that they can be computed a compile
time by `lightningcss`. These fallbacks will convert to srgb to increase
compatibility.
- Create fallbacks for the _relative color_ feature used in the new
shadow utilities and using `color-mix(…)` in case _relative color_ is
applied on `currentcolor` (due to limited browser support)
- Create fallbacks for gradient interpolation methods (e.g. to support
`bg-linear-to-r/oklab`)
- Polyfill `@media` queries range syntax.

## A simplified example

Given this example CSS input:

```css
@import 'tailwindcss';
@source inline('from-cyan-500/50 bg-linear-45');
```

Here's the updated output CSS including the newly added polyfills and
updated `oklab` values:

```css
.bg-linear-45 {
  --tw-gradient-position: 45deg;
  background-image: linear-gradient(var(--tw-gradient-stops));
}

@supports (background-image: linear-gradient(in lab, red, red)) {
  .bg-linear-45 {
    --tw-gradient-position: 45deg in oklab;
  }
}

.from-cyan-500\\/50 {
  --tw-gradient-from: oklab(71.5% -.11682 -.08247 / .5);
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
}

@supports (color: color-mix(in lab, red, red)) {
  .from-cyan-500\\/50 {
    --tw-gradient-from: color-mix(in oklab, var(--color-cyan-500) 50%, transparent);
  }
}

:root, :host {
  --color-cyan-500: oklch(71.5% .143 215.221);
}

@supports (((-webkit-hyphens: none)) and (not (margin-trim: 1lh))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
  @layer base {
    *, :before, :after, ::backdrop {
      --tw-gradient-position: initial;
      --tw-gradient-from: #0000;
      --tw-gradient-via: #0000;
      --tw-gradient-to: #0000;
      --tw-gradient-stops: initial;
      --tw-gradient-via-stops: initial;
      --tw-gradient-from-position: 0%;
      --tw-gradient-via-position: 50%;
      --tw-gradient-to-position: 100%;
    }
  }
}

@property --tw-gradient-position {
  syntax: "*";
  inherits: false
}

@property --tw-gradient-from {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}

@property --tw-gradient-via {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}

@property --tw-gradient-to {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}

@property --tw-gradient-stops {
  syntax: "*";
  inherits: false
}

@property --tw-gradient-via-stops {
  syntax: "*";
  inherits: false
}

@property --tw-gradient-from-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 0%;
}

@property --tw-gradient-via-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 50%;
}

@property --tw-gradient-to-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 100%;
}
```

## \* A note on `@property` polyfills and CSS modules

On Next.js, CSS module files are required to be _pure_, meaning that all
selectors must either be scoped to a class or an ID. Fortunatnyl for us,
this does not apply to `@property` rules which we've been using before
to initialize CSS variables.

However, since we're now bringing back the `@property` polyfills, that
would cause unexpected rules to be exported from the CSS file as this:

```css
@reference "tailwindcss";

.skew {
  @apply skew-7;
}
```

Would turn to the following file:

```css
.skew {
  /* … */
}
@supports (/*…*/) {
  @layer base {
    *, :before, :after, ::backdrop {
      --tw-gradient-position: initial;
    }
  }
}
@property /* … */ 
```

Notice that this adds a `*` selector which is not considered pure.

Unfortunately there is no way for us to silence this warning or work
around it, as the dependency causing this errors
([`postcss-modules-local-by-default`](https://github.com/css-modules/postcss-modules-local-by-default))
is bundled into Next.js. To work around crashes, these polyfills will
not apply to CSS modules processed by the PostCSS extension for now.

## Testing on tailwindcss.com

To see the changes in effect, take a look at this screencast that
compares tailwindcss.com on iOS 15.5 with a version that has the patches
of this PR applied:

https://github.com/user-attachments/assets/1279d6f5-3c63-4f30-839c-198a789f4292

## Test plan

- Tested on tailwindcss.com via a preview build:
https://tailwindcss-com-git-legacy-browsers-tailwindlabs.vercel.app/
- Updated tests
- Ensure we also test on Chrome 111, Safari 16.4, Firefox 128 to
make sure we have no regressions. Also tested on Safari 16.4, 15.5, 18.0
2025-04-01 13:33:22 +02:00
Philipp Spiess 62f22d3d1d Prepare v4.0.17 release 2025-03-26 12:15:19 +01:00
c5a7801bb7 Prepare v4.0.16 release (#17372)
Prepare the 4.0.16 release.

~~Also added a commit to mark the `--value('…')` and `--modifier('…')`
with literals strings as an experimental feature (aka not shipped in
this PR). But we can revert that commit if we still want to ship it in
4.0.16 instead of 4.1.~~

---------

Co-authored-by: Philipp Spiess <[email protected]>
2025-03-25 15:30:32 +01:00
Philipp SpiessandGitHub 04471cf956 Prepare v4.0.15 release (#17302)
<!--

👋 Hey, thanks for your interest in contributing to Tailwind!

**Please ask first before starting work on any significant new
features.**

It's never a fun experience to have your pull request declined after
investing a lot of time and effort into a new feature. To avoid this
from happening, we request that contributors create an issue to first
discuss any significant new features. This includes things like adding
new utilities, creating new at-rules, or adding new component examples
to the documentation.


https://github.com/tailwindcss/tailwindcss/blob/master/.github/CONTRIBUTING.md

-->
2025-03-20 17:51:30 +01:00
Robin MalfaitandGitHub d8573926f6 Prepare v4.0.14 release (#17173) 2025-03-13 12:36:34 +01:00
Robin MalfaitandGitHub 9b37af5508 Prepare release 4.0.13 (#17132) 2025-03-11 17:58:53 +01:00
6dde284a63 Prepare v4.0.12 release (#17033)
Co-authored-by: Philipp Spiess <[email protected]>
2025-03-07 12:38:53 +01:00
Philipp SpiessandGitHub bd5a64258b Prepare v4.0.11 release (#16987) 2025-03-06 11:09:39 +00:00
a98d9b374d Prepare v4.0.10 release (#16963)
Co-authored-by: Adam Wathan <[email protected]>
2025-03-05 18:32:15 +01:00
3d4871420a Prepare v4.0.9 release (#16804)
Co-authored-by: Adam Wathan <[email protected]>
2025-02-25 17:33:28 +01:00
4de5b3c7bd Prepare v4.0.8 release (#16713)
<!--

👋 Hey, thanks for your interest in contributing to Tailwind!

**Please ask first before starting work on any significant new
features.**

It's never a fun experience to have your pull request declined after
investing a lot of time and effort into a new feature. To avoid this
from happening, we request that contributors create an issue to first
discuss any significant new features. This includes things like adding
new utilities, creating new at-rules, or adding new component examples
to the documentation.


https://github.com/tailwindcss/tailwindcss/blob/master/.github/CONTRIBUTING.md

-->

---------

Co-authored-by: Adam Wathan <[email protected]>
2025-02-21 16:06:37 +01:00
632414c827 Prepare v4.0.7 release (#16629)
Co-authored-by: Adam Wathan <[email protected]>
2025-02-18 16:51:20 +01:00
Robin MalfaitandGitHub 7cf455b174 Pin exact versions of tailwindcss and @tailwindcss/* (#16623)
This PR fixes an issue where installing a specific version of
`@tailwindcss/postcss` and `tailwindcss` could still result in a version
mismatch. This is because we were relying on `^4.0.6` for example
instead of `4.0.6`.

This PR now pins all these versions to prevent this:
```
❯ pnpm why tailwindcss
devDependencies:
@tailwindcss/postcss 4.0.5
├─┬ @tailwindcss/node 4.0.6
│ └── tailwindcss 4.0.6
└── tailwindcss 4.0.5
```
2025-02-18 11:44:12 +01:00
Robin MalfaitandGitHub f47bec0c0d Prepare v4.0.6 (#16407) 2025-02-10 14:09:00 +01:00
15ead3303d Prepare v4.0.5 (#16373)
<!--

👋 Hey, thanks for your interest in contributing to Tailwind!

**Please ask first before starting work on any significant new
features.**

It's never a fun experience to have your pull request declined after
investing a lot of time and effort into a new feature. To avoid this
from happening, we request that contributors create an issue to first
discuss any significant new features. This includes things like adding
new utilities, creating new at-rules, or adding new component examples
to the documentation.


https://github.com/tailwindcss/tailwindcss/blob/master/.github/CONTRIBUTING.md

-->

---------

Co-authored-by: Adam Wathan <[email protected]>
2025-02-08 13:48:34 -05:00
5895a5ae3f Prepare v4.0.4 (#16302)
Co-authored-by: Adam Wathan <[email protected]>
2025-02-06 15:18:11 +01:00
Robin MalfaitandGitHub b6d9fea6a7 Prepare v4.0.3 (#16146) 2025-02-01 12:38:55 +01:00
8b473067a3 Prepare for v4.0.2 release (#16131)
Co-authored-by: Adam Wathan <[email protected]>
2025-01-31 19:30:36 +01:00
3946686e25 Prepare v4.0.1 release (#16018)
Co-authored-by: Adam Wathan <[email protected]>
2025-01-29 14:14:35 -05:00