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);
}