diff --git a/packages/plugin-rsc/e2e/basic.test.ts b/packages/plugin-rsc/e2e/basic.test.ts index bf96dcb6c..edb67fb52 100644 --- a/packages/plugin-rsc/e2e/basic.test.ts +++ b/packages/plugin-rsc/e2e/basic.test.ts @@ -1237,14 +1237,32 @@ function defineTest(f: Fixture) { logs.push(msg.text()) } }) - f.createEditor('src/routes/tailwind/unused.tsx').resave() - await page.waitForTimeout(200) f.createEditor('src/routes/tailwind/server.tsx').resave() + await expect + .poll(() => logs) + .toEqual([ + expect.stringMatching(/\[vite-rsc:update\].*\/tailwind\/server.tsx/), + ]) await page.waitForTimeout(200) expect(logs).toEqual([ expect.stringMatching(/\[vite-rsc:update\].*\/tailwind\/server.tsx/), ]) }) + + // https://github.com/tailwindlabs/tailwindcss/pull/19745 + test('tailwind force reloads on file changes outside of module graph', async ({ + page, + }) => { + await page.goto(f.url()) + await waitForHydration(page) + const reloaded = page.waitForEvent('framenavigated', { + predicate: (frame) => + frame === page.mainFrame() && frame.url().startsWith(f.url()), + }) + f.createEditor('src/routes/tailwind/unused.tsx').resave() + await reloaded + await waitForHydration(page) + }) }) test('temporary references @js', async ({ page }) => { diff --git a/packages/plugin-rsc/examples/basic/package.json b/packages/plugin-rsc/examples/basic/package.json index 31098a4c5..a3072f5e8 100644 --- a/packages/plugin-rsc/examples/basic/package.json +++ b/packages/plugin-rsc/examples/basic/package.json @@ -16,7 +16,7 @@ "react-dom": "^19.2.4" }, "devDependencies": { - "@tailwindcss/vite": "^4.2.1", + "@tailwindcss/vite": "file:../../../../tailwindcss-vite-4.2.1.tgz", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "latest", @@ -30,7 +30,7 @@ "@vitejs/test-dep-transitive-cjs": "file:./test-dep/transitive-cjs", "@vitejs/test-dep-transitive-use-sync-external-store": "file:./test-dep/transitive-use-sync-external-store", "rsc-html-stream": "^0.0.7", - "tailwindcss": "^4.2.1", + "tailwindcss": "file:../../../../tailwindcss-4.2.1.tgz", "vite": "^8.0.0-beta.16", "wrangler": "^4.67.0" }, diff --git a/packages/plugin-rsc/examples/basic/vite.config.ts b/packages/plugin-rsc/examples/basic/vite.config.ts index d974b3ea3..5d37635e4 100644 --- a/packages/plugin-rsc/examples/basic/vite.config.ts +++ b/packages/plugin-rsc/examples/basic/vite.config.ts @@ -19,16 +19,16 @@ export default defineConfig({ plugins: [ // import("vite-plugin-inspect").then(m => m.default()), tailwindcss(), - { - // TODO: quick workaround for https://github.com/tailwindlabs/tailwindcss/pull/19670 - name: 'fix-tailwind-full-reload', - configResolved(config) { - const plugin = config.plugins.find( - (p) => p.name === '@tailwindcss/vite:generate:serve', - ) - delete plugin?.hotUpdate - }, - }, + // { + // // TODO: quick workaround for https://github.com/tailwindlabs/tailwindcss/pull/19670 + // name: 'fix-tailwind-full-reload', + // configResolved(config) { + // const plugin = config.plugins.find( + // (p) => p.name === '@tailwindcss/vite:generate:serve', + // ) + // delete plugin?.hotUpdate + // }, + // }, react(), vitePluginUseCache(), vitePluginVirtualModuleTest(), diff --git a/packages/plugin-rsc/examples/react-router/cf/vite.config.ts b/packages/plugin-rsc/examples/react-router/cf/vite.config.ts index eacc427c7..56725c433 100644 --- a/packages/plugin-rsc/examples/react-router/cf/vite.config.ts +++ b/packages/plugin-rsc/examples/react-router/cf/vite.config.ts @@ -12,16 +12,16 @@ export default defineConfig({ plugins: [ // import("vite-plugin-inspect").then(m => m.default()), tailwindcss(), - { - // TODO: quick workaround for https://github.com/tailwindlabs/tailwindcss/pull/19670 - name: 'fix-tailwind-full-reload', - configResolved(config) { - const plugin = config.plugins.find( - (p) => p.name === '@tailwindcss/vite:generate:serve', - ) - delete plugin?.hotUpdate - }, - }, + // { + // // TODO: quick workaround for https://github.com/tailwindlabs/tailwindcss/pull/19670 + // name: 'fix-tailwind-full-reload', + // configResolved(config) { + // const plugin = config.plugins.find( + // (p) => p.name === '@tailwindcss/vite:generate:serve', + // ) + // delete plugin?.hotUpdate + // }, + // }, react(), rsc({ entries: { diff --git a/packages/plugin-rsc/examples/react-router/package.json b/packages/plugin-rsc/examples/react-router/package.json index f025fc8a6..5d2c7f0eb 100644 --- a/packages/plugin-rsc/examples/react-router/package.json +++ b/packages/plugin-rsc/examples/react-router/package.json @@ -20,12 +20,12 @@ "devDependencies": { "@cloudflare/vite-plugin": "^1.25.2", "@tailwindcss/typography": "^0.5.19", - "@tailwindcss/vite": "^4.2.1", + "@tailwindcss/vite": "file:../../../../tailwindcss-vite-4.2.1.tgz", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "latest", "@vitejs/plugin-rsc": "latest", - "tailwindcss": "^4.2.1", + "tailwindcss": "file:../../../../tailwindcss-4.2.1.tgz", "vite": "^8.0.0-beta.16", "wrangler": "^4.67.0" } diff --git a/packages/plugin-rsc/examples/react-router/vite.config.ts b/packages/plugin-rsc/examples/react-router/vite.config.ts index 451f6c36c..1b1a216ea 100644 --- a/packages/plugin-rsc/examples/react-router/vite.config.ts +++ b/packages/plugin-rsc/examples/react-router/vite.config.ts @@ -11,16 +11,16 @@ export default defineConfig({ plugins: [ // import("vite-plugin-inspect").then(m => m.default()), tailwindcss(), - { - // TODO: quick workaround for https://github.com/tailwindlabs/tailwindcss/pull/19670 - name: 'fix-tailwind-full-reload', - configResolved(config) { - const plugin = config.plugins.find( - (p) => p.name === '@tailwindcss/vite:generate:serve', - ) - delete plugin?.hotUpdate - }, - }, + // { + // // TODO: quick workaround for https://github.com/tailwindlabs/tailwindcss/pull/19670 + // name: 'fix-tailwind-full-reload', + // configResolved(config) { + // const plugin = config.plugins.find( + // (p) => p.name === '@tailwindcss/vite:generate:serve', + // ) + // delete plugin?.hotUpdate + // }, + // }, react(), rsc({ entries: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ecc4391ab..e4f127076 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -523,8 +523,8 @@ importers: version: 19.2.4(react@19.2.4) devDependencies: '@tailwindcss/vite': - specifier: ^4.2.1 - version: 4.2.1(vite@8.0.0-beta.16(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.1)) + specifier: file:../../../../tailwindcss-vite-4.2.1.tgz + version: file:tailwindcss-vite-4.2.1.tgz(vite@8.0.0-beta.16(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.1)) '@types/react': specifier: ^19.2.14 version: 19.2.14 @@ -565,8 +565,8 @@ importers: specifier: ^0.0.7 version: 0.0.7 tailwindcss: - specifier: ^4.2.1 - version: 4.2.1 + specifier: file:../../../../tailwindcss-4.2.1.tgz + version: file:tailwindcss-4.2.1.tgz vite: specifier: ^8.0.0-beta.16 version: 8.0.0-beta.16(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.1) @@ -693,10 +693,10 @@ importers: version: 1.25.4(vite@8.0.0-beta.16(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.1))(workerd@1.20260302.0)(wrangler@4.68.0) '@tailwindcss/typography': specifier: ^0.5.19 - version: 0.5.19(tailwindcss@4.2.1) + version: 0.5.19(tailwindcss@file:tailwindcss-4.2.1.tgz) '@tailwindcss/vite': - specifier: ^4.2.1 - version: 4.2.1(vite@8.0.0-beta.16(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.1)) + specifier: file:../../../../tailwindcss-vite-4.2.1.tgz + version: file:tailwindcss-vite-4.2.1.tgz(vite@8.0.0-beta.16(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.1)) '@types/react': specifier: ^19.2.14 version: 19.2.14 @@ -710,8 +710,8 @@ importers: specifier: latest version: link:../.. tailwindcss: - specifier: ^4.2.1 - version: 4.2.1 + specifier: file:../../../../tailwindcss-4.2.1.tgz + version: file:tailwindcss-4.2.1.tgz vite: specifier: ^8.0.0-beta.16 version: 8.0.0-beta.16(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.1) @@ -2807,11 +2807,13 @@ packages: '@tailwindcss/typography@0.5.19': resolution: {integrity: sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==} + version: 0.5.19 peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - '@tailwindcss/vite@4.2.1': - resolution: {integrity: sha512-TBf2sJjYeb28jD2U/OhwdW0bbOsxkWPwQ7SrqGf9sVcoYwZj7rkXljroBO9wKBut9XnmQLXanuDUeqQK0lGg/w==} + '@tailwindcss/vite@file:tailwindcss-vite-4.2.1.tgz': + resolution: {integrity: sha512-jMSCDeV1X+1893GdvvrfK132Fwiay6u2OtSW/2cWWhgamcMa6wov5y/xBoVuy0y6ZFnIMJJYNWkzLSQvn09pXA==, tarball: file:tailwindcss-vite-4.2.1.tgz} + version: 4.2.1 peerDependencies: vite: ^5.2.0 || ^6 || ^7 @@ -4901,6 +4903,10 @@ packages: tailwindcss@4.2.1: resolution: {integrity: sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==} + tailwindcss@file:tailwindcss-4.2.1.tgz: + resolution: {integrity: sha512-wQ4Dn9fK4z/8K7NaAOlNtUZi0l6x/ZaiX2p4u7URV0fLEmIxJNVFnjfrtm0WVdmNErzyeMdlgRpj/DOf2KC/Lw==, tarball: file:tailwindcss-4.2.1.tgz} + version: 4.2.1 + tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -6580,12 +6586,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.2.1 '@tailwindcss/oxide-win32-x64-msvc': 4.2.1 - '@tailwindcss/typography@0.5.19(tailwindcss@4.2.1)': + '@tailwindcss/typography@0.5.19(tailwindcss@file:tailwindcss-4.2.1.tgz)': dependencies: postcss-selector-parser: 6.0.10 - tailwindcss: 4.2.1 + tailwindcss: file:tailwindcss-4.2.1.tgz - '@tailwindcss/vite@4.2.1(vite@8.0.0-beta.16(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.1))': + '@tailwindcss/vite@file:tailwindcss-vite-4.2.1.tgz(vite@8.0.0-beta.16(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.1))': dependencies: '@tailwindcss/node': 4.2.1 '@tailwindcss/oxide': 4.2.1 @@ -8928,6 +8934,8 @@ snapshots: tailwindcss@4.2.1: {} + tailwindcss@file:tailwindcss-4.2.1.tgz: {} + tapable@2.2.1: {} tapable@2.3.0: {} diff --git a/tailwindcss-4.2.1.tgz b/tailwindcss-4.2.1.tgz new file mode 100644 index 000000000..b1a352c0f Binary files /dev/null and b/tailwindcss-4.2.1.tgz differ diff --git a/tailwindcss-vite-4.2.1.tgz b/tailwindcss-vite-4.2.1.tgz new file mode 100644 index 000000000..4f64c4aef Binary files /dev/null and b/tailwindcss-vite-4.2.1.tgz differ