From 3a41bd8dbd0d5fcaddde71a6f20dae7e6ce5ef16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20Ayg=C3=BCn?= Date: Wed, 5 Apr 2023 10:55:20 +0300 Subject: [PATCH] feat: reuse existing style elements in dev (#12678) --- 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 1818dda65eef98..cb668832aa6f53 100644 --- a/packages/vite/src/client/client.ts +++ b/packages/vite/src/client/client.ts @@ -363,6 +363,13 @@ function waitForWindowShow() { } 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