diff --git a/packages/react-native/React/CoreModules/RCTDeviceInfo.mm b/packages/react-native/React/CoreModules/RCTDeviceInfo.mm index b62b332b89cc47..62383c99a61de5 100644 --- a/packages/react-native/React/CoreModules/RCTDeviceInfo.mm +++ b/packages/react-native/React/CoreModules/RCTDeviceInfo.mm @@ -13,6 +13,7 @@ #import #import #import +#import #import #import @@ -20,13 +21,14 @@ using namespace facebook::react; -@interface RCTDeviceInfo () +@interface RCTDeviceInfo () @end @implementation RCTDeviceInfo { UIInterfaceOrientation _currentInterfaceOrientation; NSDictionary *_currentInterfaceDimensions; BOOL _isFullscreen; + BOOL _invalidated; } @synthesize moduleRegistry = _moduleRegistry; @@ -70,6 +72,11 @@ - (void)initialize object:nil]; } +- (void)invalidate +{ + _invalidated = YES; +} + static BOOL RCTIsIPhoneNotched() { static BOOL isIPhoneNotched = NO; @@ -108,9 +115,11 @@ static BOOL RCTIsIPhoneNotched() - (NSDictionary *)_exportedDimensions { - RCTAssert(_moduleRegistry, @"ModuleRegistry must be set to properly init dimensions"); + RCTAssert(!_invalidated, @"Failed to get exported dimensions: RCTDeviceInfo has been invalidated"); + RCTAssert(_moduleRegistry, @"Failed to get exported dimensions: RCTModuleRegistry is nil"); RCTAccessibilityManager *accessibilityManager = (RCTAccessibilityManager *)[_moduleRegistry moduleForName:"AccessibilityManager"]; + RCTAssert(accessibilityManager, @"Failed to get exported dimensions: AccessibilityManager is nil"); CGFloat fontScale = accessibilityManager ? accessibilityManager.multiplier : 1.0; return RCTExportedDimensions(fontScale); }