From e82ba35b6c3b2a04c29c5fb19605ea261cf73aaa Mon Sep 17 00:00:00 2001 From: Szymon Gaczol Date: Thu, 11 Jun 2026 13:00:47 +0200 Subject: [PATCH 1/3] invalidate call removal in didMoveToWindow --- .../bottom-accessory/RNSTabsBottomAccessoryComponentView.mm | 2 -- 1 file changed, 2 deletions(-) diff --git a/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm b/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm index ecaa8bb71e..e4f6889fb1 100644 --- a/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm +++ b/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm @@ -50,8 +50,6 @@ - (void)didMoveToWindow { if (self.window != nil) { [_helper registerForAccessoryFrameChanges]; - } else { - [self invalidate]; } } From 57e62c59c916f178729f2870bcf2fe42b64862d5 Mon Sep 17 00:00:00 2001 From: Szymon Gaczol Date: Thu, 11 Jun 2026 15:53:50 +0200 Subject: [PATCH 2/3] unregisterForAccessoryFrameChanges if self.window == nil --- .../bottom-accessory/RNSTabsBottomAccessoryComponentView.mm | 2 ++ ios/tabs/bottom-accessory/RNSTabsBottomAccessoryHelper.h | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm b/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm index e4f6889fb1..a47b40b51a 100644 --- a/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm +++ b/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm @@ -50,6 +50,8 @@ - (void)didMoveToWindow { if (self.window != nil) { [_helper registerForAccessoryFrameChanges]; + } else { + [_helper unregisterForAccessoryFrameChanges]; } } diff --git a/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryHelper.h b/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryHelper.h index f1a782f5e6..1af5256f08 100644 --- a/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryHelper.h +++ b/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryHelper.h @@ -27,6 +27,10 @@ API_AVAILABLE(ios(26.0)) * `RNSTabBarController`. */ - (void)registerForAccessoryFrameChanges; +/** + * Removes the KVO registration set up by `registerForAccessoryFrameChanges`. + */ +- (void)unregisterForAccessoryFrameChanges; /** * Invalidates observers, display link (if it is used); resets internal properties. */ From 90f9724f312aaf85c97aece20eb17c41487e2978 Mon Sep 17 00:00:00 2001 From: Szymon Gaczol Date: Thu, 11 Jun 2026 15:57:20 +0200 Subject: [PATCH 3/3] didMoveToWindow modified in RNSTabsBottomAccessoryContentComponentView --- .../RNSTabsBottomAccessoryContentComponentView.mm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryContentComponentView.mm b/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryContentComponentView.mm index 6d378314fb..e0c87b4b31 100644 --- a/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryContentComponentView.mm +++ b/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryContentComponentView.mm @@ -27,11 +27,15 @@ - (instancetype)initWithFrame:(CGRect)frame - (void)didMoveToWindow { + if (self.window == nil) { + return; + } + if ([self.superview isKindOfClass:[RNSTabsBottomAccessoryComponentView class]]) { RNSTabsBottomAccessoryComponentView *accessoryView = static_cast(self.superview); _accessoryView = accessoryView; - [_accessoryView.helper setContentView:(self.window != nil ? self : nil) forEnvironment:_environment]; + [_accessoryView.helper setContentView:self forEnvironment:_environment]; } else { [_accessoryView.helper setContentView:nil forEnvironment:_environment]; _accessoryView = nil;