Skip to content

Commit 41e4bf5

Browse files
authored
fix(rsc): fix client reference preload when group chunk re-exports client components from entry chunk (#768)
1 parent c40234e commit 41e4bf5

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

packages/plugin-rsc/src/plugin.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ type ClientReferenceMeta = {
6363
// build only for tree-shaking unused export
6464
exportNames: string[]
6565
renderedExports: string[]
66+
groupChunkId?: string
6667
}
6768

6869
type ServerRerferenceMeta = {
@@ -800,10 +801,11 @@ export default function vitePluginRsc(
800801
assert(entry)
801802
const entryUrl = assetsURL(entry.chunk.fileName, manager)
802803
const clientReferenceDeps: Record<string, AssetDeps> = {}
803-
for (const [id, meta] of Object.entries(
804-
manager.clientReferenceMetaMap,
805-
)) {
806-
const deps: AssetDeps = assetDeps[id]?.deps ?? { js: [], css: [] }
804+
for (const meta of Object.values(manager.clientReferenceMetaMap)) {
805+
const deps: AssetDeps = assetDeps[meta.groupChunkId!]?.deps ?? {
806+
js: [],
807+
css: [],
808+
}
807809
clientReferenceDeps[meta.referenceKey] = assetsURLOfDeps(
808810
mergeAssetDeps(deps, entry.deps),
809811
manager,
@@ -1145,13 +1147,16 @@ function vitePluginUseClient(
11451147
// group client reference modules by `clientChunks` option
11461148
manager.clientReferenceGroups = {}
11471149
for (const meta of Object.values(manager.clientReferenceMetaMap)) {
1148-
const name =
1150+
let name =
11491151
useClientPluginOptions.clientChunks?.(meta.importId) ||
11501152
// use original module id as name by default
11511153
normalizePath(path.relative(manager.config.root, meta.importId))
1154+
name = name.replaceAll('..', '__')
11521155
const group = (manager.clientReferenceGroups[name] ??= [])
11531156
group.push(meta)
1157+
meta.groupChunkId = `\0virtual:vite-rsc/client-references/group/${name}`
11541158
}
1159+
debug('client-reference-groups', manager.clientReferenceGroups)
11551160
for (const [name, metas] of Object.entries(
11561161
manager.clientReferenceGroups,
11571162
)) {

0 commit comments

Comments
 (0)