From 36489418a7af5bd0a5281346fe204a89ed9e1ab5 Mon Sep 17 00:00:00 2001 From: Daniel Riccio Date: Wed, 3 Sep 2025 18:17:02 -0500 Subject: [PATCH] ui(settings): restore scroll synchronously to prevent flicker; dx(ui): name TabContent for clearer DevTools --- webview-ui/src/components/common/Tab.tsx | 1 + webview-ui/src/components/settings/SettingsView.tsx | 10 ++++------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/webview-ui/src/components/common/Tab.tsx b/webview-ui/src/components/common/Tab.tsx index 06e392a4da..495bb1b34b 100644 --- a/webview-ui/src/components/common/Tab.tsx +++ b/webview-ui/src/components/common/Tab.tsx @@ -45,6 +45,7 @@ export const TabContent = forwardRef(({ className, chi ) }) +TabContent.displayName = "TabContent" export const TabList = forwardRef< HTMLDivElement, diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index 1827cc38d5..632873308e 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -411,12 +411,10 @@ const SettingsView = forwardRef(({ onDone, t [activeTab], ) - useEffect(() => { - requestAnimationFrame(() => { - if (contentRef.current) { - contentRef.current.scrollTop = scrollPositions.current[activeTab] ?? 0 - } - }) + useLayoutEffect(() => { + if (contentRef.current) { + contentRef.current.scrollTop = scrollPositions.current[activeTab] ?? 0 + } }, [activeTab]) // Store direct DOM element refs for each tab