From 2fe7fbc9d0c2a43f0334ee5ca409ec869b3db01c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Norte?= Date: Thu, 26 Feb 2026 11:42:40 +0000 Subject: [PATCH] [RN] Expose event as a global variable during dispatch --- .../src/__tests__/ReactFabric-test.internal.js | 11 ++++++++++- .../src/legacy-events/EventPluginUtils.js | 5 +++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/react-native-renderer/src/__tests__/ReactFabric-test.internal.js b/packages/react-native-renderer/src/__tests__/ReactFabric-test.internal.js index 42cc136a7202..f2ecd64eec1f 100644 --- a/packages/react-native-renderer/src/__tests__/ReactFabric-test.internal.js +++ b/packages/react-native-renderer/src/__tests__/ReactFabric-test.internal.js @@ -1099,6 +1099,8 @@ describe('ReactFabric', () => { // Check for referential equality expect(ref1.current).toBe(event.target); expect(ref1.current).toBe(event.currentTarget); + + expect(global.event).toBe(event); }} onStartShouldSetResponder={() => true} /> @@ -1110,6 +1112,8 @@ describe('ReactFabric', () => { // Check for referential equality expect(ref2.current).toBe(event.target); expect(ref2.current).toBe(event.currentTarget); + + expect(global.event).toBe(event); }} onStartShouldSetResponder={() => true} /> @@ -1123,6 +1127,9 @@ describe('ReactFabric', () => { const [dispatchEvent] = nativeFabricUIManager.registerEventHandler.mock.calls[0]; + const preexistingEvent = {}; + global.event = preexistingEvent; + dispatchEvent(getViewById('one').instanceHandle, 'topTouchStart', { target: getViewById('one').reactTag, identifier: 17, @@ -1150,7 +1157,9 @@ describe('ReactFabric', () => { changedTouches: [], }); - expect.assertions(6); + expect(global.event).toBe(preexistingEvent); + + expect.assertions(9); }); it('findHostInstance_DEPRECATED should warn if used to find a host component inside StrictMode', async () => { diff --git a/packages/react-native-renderer/src/legacy-events/EventPluginUtils.js b/packages/react-native-renderer/src/legacy-events/EventPluginUtils.js index 64a05cef33fa..2027ac2e20fc 100644 --- a/packages/react-native-renderer/src/legacy-events/EventPluginUtils.js +++ b/packages/react-native-renderer/src/legacy-events/EventPluginUtils.js @@ -67,6 +67,9 @@ function validateEventDispatches(event) { */ export function executeDispatch(event, listener, inst) { event.currentTarget = getNodeFromInstance(inst); + const currentEvent = global.event; + global.event = event; + try { listener(event); } catch (error) { @@ -77,6 +80,8 @@ export function executeDispatch(event, listener, inst) { // TODO: Make sure this error gets logged somehow. } } + + global.event = currentEvent; event.currentTarget = null; }