From ee64988c141b6112e07ebe490c880dc660a7436d Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 10 Apr 2024 14:19:26 +0900 Subject: [PATCH] fix: skip react-server hmr for client reference --- examples/react-server/vite.config.ts | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/examples/react-server/vite.config.ts b/examples/react-server/vite.config.ts index 919720ab..fdf063b6 100644 --- a/examples/react-server/vite.config.ts +++ b/examples/react-server/vite.config.ts @@ -110,14 +110,18 @@ function vitePluginReactServer(): PluginOption { ids, invalidated: [...invalidated], }); - console.log("[react-server:hmr]", ctx.file); - __global.server.environments.client.hot.send({ - type: "custom", - event: "react-server:update", - data: { - file: ctx.file, - }, - }); + // client reference id is also in react server module graph, + // but we skip RSC HMR for this case since Client HMR handles it. + if (!ids.some((id) => manager.clientReferences.has(id))) { + console.log("[react-server:hmr]", ctx.file); + __global.server.environments.client.hot.send({ + type: "custom", + event: "react-server:update", + data: { + file: ctx.file, + }, + }); + } return []; } } @@ -132,6 +136,7 @@ function vitePluginUseClient(): PluginOption { const transformPlugin: Plugin = { name: vitePluginUseClient.name + ":transform", async transform(code, id, _options) { + manager.clientReferences.delete(id); if (this.environment?.name === "react-server") { if (/^("use client")|('use client')/.test(code)) { manager.clientReferences.add(id);