diff --git a/packages/react-native/React/Base/RCTBridge.mm b/packages/react-native/React/Base/RCTBridge.mm index 8a44d2ae748..32000177fcb 100644 --- a/packages/react-native/React/Base/RCTBridge.mm +++ b/packages/react-native/React/Base/RCTBridge.mm @@ -313,6 +313,7 @@ RCT_NOT_IMPLEMENTED(-(instancetype)init) - (void)dealloc { + RCTBridge *batchedBridge = self.batchedBridge; /** * This runs only on the main thread, but crashes the subclass * RCTAssertMainQueue(); @@ -332,7 +333,17 @@ RCT_NOT_IMPLEMENTED(-(instancetype)init) RCTExecuteOnMainQueue(^{ facebook::react::jsinspector_modern::getInspectorInstance().removePage(*inspectorPageId); inspectorPageId.reset(); - inspectorTarget.reset(); + // NOTE: RCTBridgeHostTargetDelegate holds a weak reference to RCTBridge. + // Conditionally call `inspectorTarget.reset()` to avoid a crash. + if (batchedBridge) { + [batchedBridge + dispatchBlock:^{ + inspectorTarget.reset(); + } + queue:RCTJSThread]; + } else { + inspectorTarget.reset(); + } }); } }