From 0bbe896526816a5a1b27007780bc1350e4475f57 Mon Sep 17 00:00:00 2001 From: Meshan Khosla Date: Sun, 25 Oct 2026 10:55:45 -0700 Subject: [PATCH] dashboard: fix scrollbar freezing during live updates --- .../features/data/components/Table/TableScrollbar.tsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/npm-packages/dashboard-common/src/features/data/components/Table/TableScrollbar.tsx b/npm-packages/dashboard-common/src/features/data/components/Table/TableScrollbar.tsx index ab2cb2591f..84ab04f906 100644 --- a/npm-packages/dashboard-common/src/features/data/components/Table/TableScrollbar.tsx +++ b/npm-packages/dashboard-common/src/features/data/components/Table/TableScrollbar.tsx @@ -31,7 +31,7 @@ function useScrollbar( ); const [initialScrollTop, setInitialScrollTop] = useState(0); const [isDragging, setIsDragging] = useState(false); - const rafIdRef = useRef(0); + const rafIdRef = useRef(null); const lastMouseYRef = useRef(null); const handleTrackClick = useCallback( @@ -72,9 +72,9 @@ function useScrollbar( setIsDragging(false); // Cancel any pending animation frame - if (rafIdRef.current) { + if (rafIdRef.current !== null) { cancelAnimationFrame(rafIdRef.current); - rafIdRef.current = 0; + rafIdRef.current = null; } } }, [isDragging]); @@ -130,7 +130,7 @@ function useScrollbar( lastMouseYRef.current = e.clientY; // Start animation frame if not already running - if (!rafIdRef.current) { + if (rafIdRef.current === null) { rafIdRef.current = requestAnimationFrame(updateScrollPosition); } @@ -155,8 +155,9 @@ function useScrollbar( document.body.style.userSelect = ""; // Clean up any ongoing animation frame - if (rafIdRef.current) { + if (rafIdRef.current !== null) { cancelAnimationFrame(rafIdRef.current); + rafIdRef.current = null; } }; }, [handleThumbMousemove, handleThumbMouseup]);