From cacbbf4053f9a91f17cb2d1b75d9caf2cd8cf33b Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Fri, 3 Apr 2026 18:49:28 +0700 Subject: [PATCH] fix(app): remove input event listener from scrollbar hook that raced with RNW controlled input The scrollbar hook's raw DOM `input` listener on the textarea called setState before React Native Web's delegated handler could process the same event, causing a re-render with the stale controlled value and swallowing the edit. Scroll and ResizeObserver already cover all scrollbar metric updates. --- packages/app/src/components/use-web-scrollbar.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/app/src/components/use-web-scrollbar.tsx b/packages/app/src/components/use-web-scrollbar.tsx index 5b4f95948..2e19032bf 100644 --- a/packages/app/src/components/use-web-scrollbar.tsx +++ b/packages/app/src/components/use-web-scrollbar.tsx @@ -77,7 +77,6 @@ export function useWebElementScrollbar( } element.addEventListener("scroll", update, { passive: true }); - element.addEventListener("input", update, { passive: true }); const resizeObserver = new ResizeObserver(update); resizeObserver.observe(element); @@ -90,7 +89,6 @@ export function useWebElementScrollbar( return () => { element.removeEventListener("scroll", update); - element.removeEventListener("input", update); resizeObserver.disconnect(); element.removeAttribute("data-hide-scrollbar"); (element.style as any).scrollbarWidth = "";