From 834ad29997a9e90dbf73d21d137ea6845ecdd316 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..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