Description
In the attached repro, I have a button that mounts and unmounts a large number of components. Based on my observations, ShadowNodeFamily may not be deallocated correctly.
When repeatedly toggling the content, I notice in the Debug Memory Graph in Xcode that the number of ShadowNodeFamily instances keeps increasing. Additionally, when I click "Collect garbage" in the Memory tab of RN DevTools, the number of instances does not decrease.
This suggests that the objects might still be retained somewhere.
Steps to reproduce
- Press a button that mounts a large subtree of components.
- Press the button again to unmount the subtree.
- Repeat that multiple times.
- Observe the
Debug Memory Graph in Xcode.
React Native Version
0.84.1
Affected Platforms
Runtime - iOS
Output of npx @react-native-community/cli info
System:
OS: macOS 26.3
CPU: (10) arm64 Apple M2 Pro
Memory: 100.70 MB / 16.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 24.3.0
path: /opt/homebrew/bin/node
Yarn:
version: 1.22.22
path: /opt/homebrew/bin/yarn
npm:
version: 11.4.2
path: /opt/homebrew/bin/npm
Watchman:
version: 2025.09.15.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.16.2
path: /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 25.2
- iOS 26.2
- macOS 26.2
- tvOS 26.2
- visionOS 26.2
- watchOS 26.2
Android SDK:
API Levels:
- "33"
- "34"
- "35"
- "36"
Build Tools:
- 29.0.2
- 33.0.1
- 34.0.0
- 35.0.0
- 36.0.0
- 36.1.0
- 36.1.0
System Images:
- android-25 | Google APIs ARM 64 v8a
- android-27 | Google APIs ARM 64 v8a
- android-28 | Google APIs ARM 64 v8a
- android-29 | Google APIs ARM 64 v8a
- android-31 | Google APIs ARM 64 v8a
- android-33 | Google APIs ARM 64 v8a
- android-34 | Google Play ARM 64 v8a
- android-36 | Android TV ARM 64 v8a
- android-36 | Google Play ARM 64 v8a
Android NDK: Not Found
IDEs:
Android Studio: 2025.1 AI-251.26094.121.2512.13840223
Xcode:
version: 26.3/17C529
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.15
path: /usr/bin/javac
Ruby:
version: 3.4.2
path: /Users/tomaszboron/.rbenv/shims/ruby
npmPackages:
"@react-native-community/cli":
installed: 20.1.0
wanted: 20.1.0
react:
installed: 19.2.3
wanted: 19.2.3
react-native:
installed: 0.84.1
wanted: 0.84.1
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: true
newArchEnabled: true
Stacktrace or Logs
MANDATORY Reproducer
https://github.com/t0maboro/ShadowNodeFamilyRepro#
Screenshots and Videos
after a few toggles:
after some more toggles:

Description
In the attached repro, I have a button that mounts and unmounts a large number of components. Based on my observations,
ShadowNodeFamilymay not be deallocated correctly.When repeatedly toggling the content, I notice in the
Debug Memory GraphinXcodethat the number ofShadowNodeFamilyinstances keeps increasing. Additionally, when I click "Collect garbage" in theMemorytab ofRN DevTools, the number of instances does not decrease.This suggests that the objects might still be retained somewhere.
Steps to reproduce
Debug Memory GraphinXcode.React Native Version
0.84.1
Affected Platforms
Runtime - iOS
Output of
npx @react-native-community/cli infoStacktrace or Logs
MANDATORY Reproducer
https://github.com/t0maboro/ShadowNodeFamilyRepro#
Screenshots and Videos
after a few toggles:
after some more toggles: