Skip to content

Commit 8e1a408

Browse files
authored
fix(rsc): fix loadModuleDevProxy with @cloudflare/vite-plugin (#993)
1 parent 7f81290 commit 8e1a408

File tree

4 files changed

+159
-33
lines changed

4 files changed

+159
-33
lines changed

packages/plugin-rsc/examples/react-router/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"react-router": "7.9.6"
1919
},
2020
"devDependencies": {
21-
"@cloudflare/vite-plugin": "^1.14.2",
21+
"@cloudflare/vite-plugin": "^1.15.3",
2222
"@tailwindcss/typography": "^0.5.19",
2323
"@tailwindcss/vite": "^4.1.17",
2424
"@types/react": "^19.2.7",
@@ -27,6 +27,6 @@
2727
"@vitejs/plugin-rsc": "latest",
2828
"tailwindcss": "^4.1.17",
2929
"vite": "^7.2.2",
30-
"wrangler": "^4.47.0"
30+
"wrangler": "^4.51.0"
3131
}
3232
}

packages/plugin-rsc/examples/starter-cf-single/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@
1515
"react-dom": "^19.2.0"
1616
},
1717
"devDependencies": {
18-
"@cloudflare/vite-plugin": "^1.14.2",
18+
"@cloudflare/vite-plugin": "^1.15.3",
1919
"@types/react": "^19.2.7",
2020
"@types/react-dom": "^19.2.3",
2121
"@vitejs/plugin-react": "latest",
2222
"@vitejs/plugin-rsc": "latest",
2323
"rsc-html-stream": "^0.0.7",
24-
"vite": "^7.2.2"
24+
"vite": "^7.2.2",
25+
"wrangler": "^4.51.0"
2526
}
2627
}

packages/plugin-rsc/src/plugin.ts

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -728,18 +728,7 @@ export default function vitePluginRsc(
728728
this.environment.mode === 'dev' &&
729729
rscPluginOptions.loadModuleDevProxy
730730
) {
731-
const origin = server.resolvedUrls?.local[0]
732-
assert(origin, '[vite-rsc] no server for loadModueleDevProxy')
733-
const endpoint =
734-
origin +
735-
'__vite_rsc_load_module_dev_proxy?' +
736-
new URLSearchParams({ environmentName, entryName })
737-
replacement = `__vite_rsc_rpc.createRpcClient(${JSON.stringify({
738-
endpoint,
739-
})})`
740-
s.prepend(
741-
`import * as __vite_rsc_rpc from "@vitejs/plugin-rsc/utils/rpc";`,
742-
)
731+
replacement = `import("virtual:vite-rsc/rpc-client").then((module) => module.createRpcClient(${JSON.stringify({ environmentName, entryName })}))`
743732
} else if (this.environment.mode === 'dev') {
744733
const environment = server.environments[environmentName]!
745734
const source = getEntrySource(environment.config, entryName)
@@ -851,6 +840,32 @@ export default function vitePluginRsc(
851840
})
852841
},
853842
},
843+
{
844+
name: 'rsc:virtual:vite-rsc/rpc-client',
845+
resolveId(source) {
846+
if (source === 'virtual:vite-rsc/rpc-client') {
847+
return `\0${source}`
848+
}
849+
},
850+
load(id) {
851+
if (id === '\0virtual:vite-rsc/rpc-client') {
852+
const { server } = manager
853+
const origin = server.resolvedUrls?.local[0]
854+
assert(origin, '[vite-rsc] no server for loadModuleDevProxy')
855+
856+
return `\
857+
import * as __vite_rsc_rpc from "@vitejs/plugin-rsc/utils/rpc";
858+
export function createRpcClient(params) {
859+
const endpoint =
860+
"${origin}" +
861+
"__vite_rsc_load_module_dev_proxy?" +
862+
new URLSearchParams(params);
863+
return __vite_rsc_rpc.createRpcClient({ endpoint });
864+
}
865+
`
866+
}
867+
},
868+
},
854869
{
855870
name: 'rsc:virtual:vite-rsc/assets-manifest',
856871
resolveId(source) {

pnpm-lock.yaml

Lines changed: 127 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)