diff --git a/packages/react-native/React/CoreModules/RCTDeviceInfo.mm b/packages/react-native/React/CoreModules/RCTDeviceInfo.mm index 38f8118c733791..bfb49700825841 100644 --- a/packages/react-native/React/CoreModules/RCTDeviceInfo.mm +++ b/packages/react-native/React/CoreModules/RCTDeviceInfo.mm @@ -75,11 +75,44 @@ - (void)initialize selector:@selector(interfaceFrameDidChange) name:RCTWindowFrameDidChangeNotification object:nil]; + + // TODO T175901725 - Registering the RCTDeviceInfo module to the notification is a short-term fix to unblock 0.73 + // The actual behavior should be that the module is properly registered in the TurboModule/Bridge infrastructure + // and the infrastructure imperatively invoke the `invalidate` method, rather than listening to a notification. + // This is a temporary workaround until we can investigate the issue better as there might be other modules in a + // similar situation. + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(invalidate) + name:RCTBridgeWillInvalidateModulesNotification + object:nil]; } - (void)invalidate { _invalidated = YES; + [self _cleanupObservers]; +} + +- (void)_cleanupObservers +{ + [[NSNotificationCenter defaultCenter] removeObserver:self + name:RCTAccessibilityManagerDidUpdateMultiplierNotification + object:[_moduleRegistry moduleForName:"AccessibilityManager"]]; + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIApplicationDidChangeStatusBarOrientationNotification + object:nil]; + + [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil]; + + [[NSNotificationCenter defaultCenter] removeObserver:self name:RCTUserInterfaceStyleDidChangeNotification object:nil]; + + [[NSNotificationCenter defaultCenter] removeObserver:self name:RCTWindowFrameDidChangeNotification object:nil]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(invalidate) + name:RCTBridgeWillInvalidateModulesNotification + object:nil]; } static BOOL RCTIsIPhoneNotched()