diff --git a/packages/vite/src/client/client.ts b/packages/vite/src/client/client.ts index ee8cd5c855d544..e857c19452ddb8 100644 --- a/packages/vite/src/client/client.ts +++ b/packages/vite/src/client/client.ts @@ -333,6 +333,13 @@ async function waitForSuccessfulPing( } const sheetsMap = new Map() + +// collect existing style elements that may have been inserted during SSR +// to avoid FOUC or duplicate styles +document.querySelectorAll('style[data-vite-dev-id]').forEach((el) => { + sheetsMap.set(el.getAttribute('data-vite-dev-id')!, el as HTMLStyleElement) +}) + // all css imports should be inserted at the same position // because after build it will be a single css file let lastInsertedStyle: HTMLStyleElement | undefined