Skip to content

Commit bea99bb

Browse files
committed
fix(rsc): keep manually added link stylesheet during dev
1 parent aa95627 commit bea99bb

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

packages/plugin-rsc/src/plugin.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -834,9 +834,15 @@ window.__vite_plugin_react_preamble_installed__ = true;
834834
// technically this doesn't have to wait for "vite:beforeUpdate" and should do it right after browser css import.
835835
// TODO: there migth be a clever way to let Vite deduplicate itself.
836836
// cf. https://github.com/withastro/astro/blob/acb9b302f56e38833a1ab01147f7fde0bf967889/packages/astro/src/vite-plugin-astro-server/pipeline.ts#L133-L135
837-
code += `
837+
code += /* js */ `
838838
const ssrCss = document.querySelectorAll("link[rel='stylesheet']");
839-
import.meta.hot.on("vite:beforeUpdate", () => ssrCss.forEach(node => node.remove()));
839+
import.meta.hot.on("vite:beforeUpdate", () => {
840+
ssrCss.forEach(node => {
841+
if (node.dataset.precedence?.startsWith("vite-rsc/")) {
842+
node.remove();
843+
}
844+
})
845+
});
840846
`
841847
// close error overlay after syntax error is fixed and hmr is triggered.
842848
// https://github.com/vitejs/vite/blob/8033e5bf8d3ff43995d0620490ed8739c59171dd/packages/vite/src/client/client.ts#L318-L320

packages/plugin-rsc/src/ssr.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ function preloadDeps(deps: ResolvedAssetDeps) {
6060
})
6161
}
6262
for (const href of deps.css) {
63-
ReactDOM.preinit(href, { as: 'style' })
63+
ReactDOM.preinit(href, {
64+
as: 'style',
65+
precedence: 'vite-rsc/client-reference',
66+
})
6467
}
6568
}

0 commit comments

Comments
 (0)