diff --git a/packages/plugin-rsc/e2e/basic.test.ts b/packages/plugin-rsc/e2e/basic.test.ts index e7d63d11e..76d77c79a 100644 --- a/packages/plugin-rsc/e2e/basic.test.ts +++ b/packages/plugin-rsc/e2e/basic.test.ts @@ -43,6 +43,39 @@ test.describe('build-base', () => { defineTest(f) }) +test.describe('dev-react-compiler', () => { + const f = useFixture({ + root: 'examples/basic', + mode: 'dev', + cliOptions: { + env: { + TEST_REACT_COMPILER: 'true', + }, + }, + }) + defineTest(f) + + test('verify react compiler', async ({ page }) => { + await page.goto(f.url()) + await waitForHydration(page) + const res = await page.request.get(f.url('src/routes/client.tsx')) + expect(await res.text()).toContain('react.memo_cache_sentinel') + }) +}) + +test.describe('build-react-compiler', () => { + const f = useFixture({ + root: 'examples/basic', + mode: 'build', + cliOptions: { + env: { + TEST_REACT_COMPILER: 'true', + }, + }, + }) + defineTest(f) +}) + test.describe(() => { // disabled by default if (!process.env.TEST_ISOLATED) return diff --git a/packages/plugin-rsc/examples/basic/package.json b/packages/plugin-rsc/examples/basic/package.json index 7db4bcf45..dbbd36342 100644 --- a/packages/plugin-rsc/examples/basic/package.json +++ b/packages/plugin-rsc/examples/basic/package.json @@ -25,6 +25,7 @@ "@vitejs/test-dep-client-in-server2": "file:./test-dep/client-in-server2", "@vitejs/test-dep-server-in-client": "file:./test-dep/server-in-client", "@vitejs/test-dep-server-in-server": "file:./test-dep/server-in-server", + "babel-plugin-react-compiler": "19.1.0-rc.2", "tailwindcss": "^4.1.4", "vite": "^7.0.2", "vite-plugin-inspect": "^11.2.0" diff --git a/packages/plugin-rsc/examples/basic/vite.config.ts b/packages/plugin-rsc/examples/basic/vite.config.ts index 67c4404e5..7e960be8f 100644 --- a/packages/plugin-rsc/examples/basic/vite.config.ts +++ b/packages/plugin-rsc/examples/basic/vite.config.ts @@ -22,7 +22,14 @@ export default defineConfig({ clearScreen: false, plugins: [ tailwindcss(), - react(), + process.env.TEST_REACT_COMPILER + ? (react({ + babel: { plugins: ['babel-plugin-react-compiler'] }, + }).map((p) => ({ + ...p, + applyToEnvironment: (e: any) => e.name === 'client', + })) as any) + : react(), vitePluginUseCache(), rsc({ entries: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5b58d2d7a..08f8c3d2c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -548,6 +548,9 @@ importers: '@vitejs/test-dep-server-in-server': specifier: file:./test-dep/server-in-server version: file:packages/plugin-rsc/examples/basic/test-dep/server-in-server(react@19.1.0) + babel-plugin-react-compiler: + specifier: 19.1.0-rc.2 + version: 19.1.0-rc.2 tailwindcss: specifier: ^4.1.4 version: 4.1.11 @@ -7944,7 +7947,7 @@ snapshots: babel-plugin-react-compiler@19.1.0-rc.2: dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.27.7 bail@2.0.2: {}