From 05edb2524c641c193d854d5ec0ae8d0ceb699c0e Mon Sep 17 00:00:00 2001 From: anvarbek Date: Tue, 20 Oct 2026 16:58:17 +0900 Subject: [PATCH] Fix Switch crash when onChange fires after view recycle Guard _eventEmitter in RCTSwitchComponentView onChange before dispatch, matching ScrollView/Image/Modal. prepareForRecycle clears the emitter while UISwitch can still deliver a deferred ValueChanged. Fixes #59203 Co-authored-by: Cursor --- .../Mounting/ComponentViews/Switch/RCTSwitchComponentView.mm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/Switch/RCTSwitchComponentView.mm b/packages/react-native/React/Fabric/Mounting/ComponentViews/Switch/RCTSwitchComponentView.mm index a7484b3b05fb..5a9696cbae47 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/Switch/RCTSwitchComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/Switch/RCTSwitchComponentView.mm @@ -110,6 +110,10 @@ - (void)onChange:(UISwitch *)sender return; } + if (!_eventEmitter) { + return; + } + static_cast(*_eventEmitter) .onChange(SwitchEventEmitter::OnChange{.value = static_cast(sender.on)}); }