From cbe0f2ddd9b6863625236697feacd2d53c4aa5ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82?= Date: Tue, 14 Jul 2026 17:39:28 +0200 Subject: [PATCH] Fix SharedValue change crash --- .../src/handlers/gestures/reanimatedWrapper.ts | 4 ++-- .../src/v3/hooks/useJSResponderHandler.ts | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/react-native-gesture-handler/src/handlers/gestures/reanimatedWrapper.ts b/packages/react-native-gesture-handler/src/handlers/gestures/reanimatedWrapper.ts index c5b187dc56..b4a0651bc7 100644 --- a/packages/react-native-gesture-handler/src/handlers/gestures/reanimatedWrapper.ts +++ b/packages/react-native-gesture-handler/src/handlers/gestures/reanimatedWrapper.ts @@ -76,9 +76,9 @@ let Reanimated: handlers: (((event: T) => void) | null)[] ): (event: T) => void; // TODO: runOnJS and runOnUI are deprecated. These should be removed in near future. - runOnJS( + runOnJS: ( fn: (...args: A) => R - ): (...args: Parameters) => void; + ) => (...args: Parameters) => void; runOnUI( fn: (...args: A) => R ): (...args: Parameters) => void; diff --git a/packages/react-native-gesture-handler/src/v3/hooks/useJSResponderHandler.ts b/packages/react-native-gesture-handler/src/v3/hooks/useJSResponderHandler.ts index b1b13286d5..2f4e78fdba 100644 --- a/packages/react-native-gesture-handler/src/v3/hooks/useJSResponderHandler.ts +++ b/packages/react-native-gesture-handler/src/v3/hooks/useJSResponderHandler.ts @@ -63,16 +63,20 @@ export function useJSResponderHandler< return; } - const notifyEnabledChanged = reanimated.runOnJS(() => { + const { runOnJS } = reanimated; + + const notifyEnabledChanged = () => { setEnabledSharedValueRevision((revision) => revision + 1); - }); + }; const attachListeners = ( sharedValues: SharedValue[], id: number, - listener: () => void + notify: () => void ) => { 'worklet'; + const listener = runOnJS(notify); + for (const sharedValue of sharedValues) { sharedValue.addListener(id, listener); }