Skip to content

Commit ae68bf6

Browse files
authored
Merge branch 'main' into fix-remove-ignoredPackageWarnings
2 parents 2bcb864 + ad7584a commit ae68bf6

File tree

22 files changed

+398
-67
lines changed

22 files changed

+398
-67
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ See [`@vitejs/plugin-rsc` documentation](packages/plugin-rsc/README.md)
2424
| Package | Version (click for changelogs) |
2525
| ----------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------- |
2626
| [@vitejs/plugin-react](packages/plugin-react) | [![plugin-react version](https://img.shields.io/npm/v/@vitejs/plugin-react.svg?label=%20)](packages/plugin-react/CHANGELOG.md) |
27-
| [@vitejs/plugin-react-oxc](packages/plugin-react-oxc) | [![plugin-react-oxc version](https://img.shields.io/npm/v/@vitejs/plugin-react-oxc.svg?label=%20)](packages/plugin-react-oxc/CHANGELOG.md) |
2827
| [@vitejs/plugin-react-swc](packages/plugin-react-swc) | [![plugin-react-swc version](https://img.shields.io/npm/v/@vitejs/plugin-react-swc.svg?label=%20)](packages/plugin-react-swc/CHANGELOG.md) |
2928
| [@vitejs/plugin-rsc](packages/plugin-rsc) | [![plugin-rsc version](https://img.shields.io/npm/v/@vitejs/plugin-rsc.svg?label=%20)](packages/plugin-rsc/CHANGELOG.md) |
29+
| [@vitejs/plugin-react-oxc](packages/plugin-react-oxc) | [Deprecated](packages/plugin-react-oxc/CHANGELOG.md), merged with [`@vitejs/plugin-react`](packages/plugin-react) |
3030

3131
## License
3232

packages/plugin-rsc/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
## <small>[0.4.19](https://github.com/vitejs/vite-plugin-react/compare/[email protected]@0.4.19) (2025-08-11)</small>
2+
### Bug Fixes
3+
4+
* **rsc:** fix cjs default import on module runner ([#695](https://github.com/vitejs/vite-plugin-react/issues/695)) ([c329914](https://github.com/vitejs/vite-plugin-react/commit/c329914c572473d4f09261fa0eba77484e720d2e))
5+
* **rsc:** replace `?v=` check with more robust `node_modules` detection ([#696](https://github.com/vitejs/vite-plugin-react/issues/696)) ([f0359c4](https://github.com/vitejs/vite-plugin-react/commit/f0359c4eca48ca6eb2ba98254a272949a13f149e))
6+
* **rsc:** replace non-optimized server cjs warning with debug only log ([#698](https://github.com/vitejs/vite-plugin-react/issues/698)) ([a88fb2d](https://github.com/vitejs/vite-plugin-react/commit/a88fb2ded4c8b9f42f2fee70a482615f331122f4))
7+
18
## <small>[0.4.18](https://github.com/vitejs/vite-plugin-react/compare/[email protected]@0.4.18) (2025-08-11)</small>
29
### Bug Fixes
310

packages/plugin-rsc/e2e/basic.test.ts

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,42 @@ test.describe('dev-non-optimized-cjs', () => {
5858
)
5959
})
6060

61-
const f = useFixture({ root: 'examples/basic', mode: 'dev' })
61+
const f = useFixture({
62+
root: 'examples/basic',
63+
mode: 'dev',
64+
cliOptions: {
65+
env: {
66+
DEBUG: 'vite-rsc:cjs',
67+
},
68+
},
69+
})
70+
71+
test('show warning', async ({ page }) => {
72+
await page.goto(f.url())
73+
expect(f.proc().stderr()).toMatch(
74+
/non-optimized CJS dependency in 'ssr' environment.*@vitejs\/test-dep-cjs\/index.js/,
75+
)
76+
})
77+
})
78+
79+
test.describe('dev-inconsistent-client-optimization', () => {
80+
test.beforeAll(async () => {
81+
// remove explicitly added optimizeDeps.exclude
82+
const editor = f.createEditor('vite.config.ts')
83+
editor.edit((s) =>
84+
s.replace(`'@vitejs/test-dep-client-in-server2/client',`, ``),
85+
)
86+
})
87+
88+
const f = useFixture({
89+
root: 'examples/basic',
90+
mode: 'dev',
91+
})
6292

6393
test('show warning', async ({ page }) => {
6494
await page.goto(f.url())
6595
expect(f.proc().stderr()).toContain(
66-
`Found non-optimized CJS dependency in 'ssr' environment.`,
96+
'client component dependency is inconsistently optimized.',
6797
)
6898
})
6999
})
@@ -73,6 +103,7 @@ function defineTest(f: Fixture) {
73103
using _ = expectNoPageError(page)
74104
await page.goto(f.url())
75105
await waitForHydration(page)
106+
expect(f.proc().stderr()).toBe('')
76107
})
77108

78109
test('client component', async ({ page }) => {
@@ -465,6 +496,22 @@ function defineTest(f: Fixture) {
465496
'color',
466497
'rgb(255, 165, 0)',
467498
)
499+
await expectNoDuplicateServerCss(page)
500+
})
501+
502+
async function expectNoDuplicateServerCss(page: Page) {
503+
// check only manually inserted stylesheet link exists
504+
// (toHaveAttribute passes only when locator matches single element)
505+
await expect(page.locator('link[rel="stylesheet"]')).toHaveAttribute(
506+
'href',
507+
'/test-style-server-manual.css',
508+
)
509+
}
510+
511+
test('no duplicate server css', async ({ page }) => {
512+
await page.goto(f.url())
513+
await waitForHydration(page)
514+
await expectNoDuplicateServerCss(page)
468515
})
469516

470517
test('adding/removing css client @js', async ({ page }) => {
@@ -549,6 +596,7 @@ function defineTest(f: Fixture) {
549596
'color',
550597
'rgb(255, 165, 0)',
551598
)
599+
await expectNoDuplicateServerCss(page)
552600
})
553601

554602
// TODO: need a way to add/remove links on server hmr. for now, it requires a manually reload.

packages/plugin-rsc/e2e/fixture.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ export function useFixture(options: {
106106
await proc.done
107107
assert(proc.proc.exitCode === 0)
108108
}
109-
const proc = runCli({
109+
proc = runCli({
110110
command: options.command ?? `pnpm preview`,
111111
label: `${options.root}:preview`,
112112
cwd,

packages/plugin-rsc/examples/basic/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
"cf-release": "wrangler deploy"
1313
},
1414
"dependencies": {
15-
"@vitejs/plugin-rsc": "latest",
1615
"react": "^19.1.1",
1716
"react-dom": "^19.1.1"
1817
},
@@ -21,13 +20,14 @@
2120
"@types/react": "^19.1.9",
2221
"@types/react-dom": "^19.1.7",
2322
"@vitejs/plugin-react": "latest",
24-
"@vitejs/test-dep-transitive-cjs": "file:./test-dep/transitive-cjs",
25-
"@vitejs/test-dep-transitive-use-sync-external-store": "file:./test-dep/transitive-use-sync-external-store",
23+
"@vitejs/plugin-rsc": "latest",
2624
"@vitejs/test-dep-client-in-server": "file:./test-dep/client-in-server",
2725
"@vitejs/test-dep-client-in-server2": "file:./test-dep/client-in-server2",
26+
"@vitejs/test-dep-css-in-server": "file:./test-dep/css-in-server",
2827
"@vitejs/test-dep-server-in-client": "file:./test-dep/server-in-client",
2928
"@vitejs/test-dep-server-in-server": "file:./test-dep/server-in-server",
30-
"@vitejs/test-dep-css-in-server": "file:./test-dep/css-in-server",
29+
"@vitejs/test-dep-transitive-cjs": "file:./test-dep/transitive-cjs",
30+
"@vitejs/test-dep-transitive-use-sync-external-store": "file:./test-dep/transitive-use-sync-external-store",
3131
"rsc-html-stream": "^0.0.7",
3232
"tailwindcss": "^4.1.11",
3333
"vite": "^7.1.1",

packages/plugin-rsc/examples/basic/src/routes/style-server/server.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export function TestStyleServer() {
1010
</div>
1111
<link
1212
rel="stylesheet"
13-
href="/test.css"
13+
href="/test-style-server-manual.css"
1414
precedence="test-style-server-manual"
1515
/>
1616
<div className="test-style-server-manual">test-style-server-manual</div>

packages/plugin-rsc/examples/basic/src/server.tsx

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,17 @@ export default async function handler(request: Request): Promise<Response> {
2222
nonce,
2323
})
2424
if (nonce && response.headers.get('content-type')?.includes('text/html')) {
25-
response.headers.set(
26-
'content-security-policy',
27-
`default-src 'self'; ` +
28-
// `unsafe-eval` is required during dev since React uses eval for findSourceMapURL feature
29-
`script-src 'self' 'nonce-${nonce}' ${
30-
import.meta.env.DEV ? `'unsafe-eval'` : ``
31-
} ; ` +
32-
`style-src 'self' 'nonce-${nonce}'; `,
33-
)
25+
const cspValue = [
26+
`default-src 'self';`,
27+
// `unsafe-eval` is required during dev since React uses eval for findSourceMapURL feature
28+
`script-src 'self' 'nonce-${nonce}' ${import.meta.env.DEV ? `'unsafe-eval'` : ``};`,
29+
`style-src 'self' 'nonce-${nonce}';`,
30+
// allow blob: worker for Vite server ping shared worker
31+
import.meta.hot && `worker-src 'self' blob:;`,
32+
]
33+
.filter(Boolean)
34+
.join('')
35+
response.headers.set('content-security-policy', cspValue)
3436
}
3537
return response
3638
}

packages/plugin-rsc/examples/browser-mode/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
"preview": "false && vite preview"
1111
},
1212
"dependencies": {
13-
"@vitejs/plugin-rsc": "latest",
1413
"react": "^19.1.1",
1514
"react-dom": "^19.1.1"
1615
},
1716
"devDependencies": {
1817
"@types/react": "^19.1.9",
1918
"@types/react-dom": "^19.1.7",
2019
"@vitejs/plugin-react": "latest",
20+
"@vitejs/plugin-rsc": "latest",
2121
"vite": "^7.1.1"
2222
}
2323
}

packages/plugin-rsc/examples/e2e/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
"private": true,
44
"type": "module",
55
"devDependencies": {
6-
"@vitejs/plugin-rsc": "latest",
76
"@vitejs/plugin-react": "latest",
7+
"@vitejs/plugin-rsc": "latest",
88
"babel-plugin-react-compiler": "19.1.0-rc.2"
99
}
1010
}

0 commit comments

Comments
 (0)