Skip to content

Commit 4ca0046

Browse files
committed
fix(vscode-theming): debounce theme updates to improve performance
1 parent c0575fe commit 4ca0046

1 file changed

Lines changed: 8 additions & 1 deletion

File tree

  • packages/vscode-extension/src/webview

packages/vscode-extension/src/webview/theme.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,13 @@ export const setupThemeSync = (
3939
};
4040
window.addEventListener('message', onIframeReady);
4141

42-
const observer = new MutationObserver(sendTheme);
42+
let rafId = 0;
43+
const sendThemeDebounced = (): void => {
44+
cancelAnimationFrame(rafId);
45+
rafId = requestAnimationFrame(sendTheme);
46+
};
47+
48+
const observer = new MutationObserver(sendThemeDebounced);
4349
observer.observe(document.body, {
4450
attributes: true,
4551
attributeFilter: ['class', 'style'],
@@ -48,5 +54,6 @@ export const setupThemeSync = (
4854
return () => {
4955
window.removeEventListener('message', onIframeReady);
5056
observer.disconnect();
57+
cancelAnimationFrame(rafId);
5158
};
5259
};

0 commit comments

Comments
 (0)