From d355e595e906d12af8e426250a2b1dab263d93d4 Mon Sep 17 00:00:00 2001 From: cyco130 Date: Fri, 31 Mar 2023 15:37:17 +0300 Subject: [PATCH] feat: reuse existing style elements in dev --- packages/vite/src/client/client.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/vite/src/client/client.ts b/packages/vite/src/client/client.ts index ee8cd5c855d544..2be47973cd199f 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 tags 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