🐛 Bug Report
Every call to fetch() uses memory and does not release it. The larger the fetch response, the more memory leaked.
- I've confirmed that this is happening in 0.57.8, 0.58.6, and 0.59.0-rc.3.
- I've tried this with both
node-fetch and whatwg-fetch and it happens using both libraries.
- It is not isolated to
response.blob(). It affects all types of responses.
- It happens with both Release and Debug.
- It happens with raw
XMLHttpRequest as well as fetch.
- I can confirm that it's happening on a (real) iPhone X with iOS 12.1.4 and the Simulator for an iPhone 8 with iOS 12.1.
Comparing memory snapshots in Safari found no difference in size even while the Chrome/Xcode memory profiles showed dramatic increases in memory. I'm not great at debugging memory leaks so I could be wrong but I suspect that means it might be on the native side and not on the JS side.
To Reproduce
I've created an example repo to reproduce the error in 0.59.0-rc.3: https://github.com/cjroth/react-native-fetch-memory-leak. You can copy the App.js and see that it happens in previous versions as well.
Expected Behavior
After each fetch() call that is no longer referenced, the memory should return to what it was previously.
Code Example
https://github.com/cjroth/react-native-fetch-memory-leak
Environment
React Native Environment Info:
System:
OS: macOS 10.14.1
CPU: (4) x64 Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz
Memory: 16.96 MB / 8.00 GB
Shell: 5.3 - /bin/zsh
Binaries:
Node: 11.10.0 - /usr/local/bin/node
Yarn: 1.13.0 - /usr/local/bin/yarn
npm: 6.8.0 - /usr/local/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 12.1, macOS 10.14, tvOS 12.1, watchOS 5.1
IDEs:
Xcode: 10.1/10B61 - /usr/bin/xcodebuild
npmPackages:
react: 16.8.3 => 16.8.3
react-native: 0.59.0-rc.3 => 0.59.0-rc.3
npmGlobalPackages:
react-native-cli: 2.0.1
react-native-git-upgrade: 0.2.7
react-native-rename: 2.4.0

🐛 Bug Report
Every call to
fetch()uses memory and does not release it. The larger the fetch response, the more memory leaked.node-fetchandwhatwg-fetchand it happens using both libraries.response.blob(). It affects all types of responses.XMLHttpRequestas well asfetch.Comparing memory snapshots in Safari found no difference in size even while the Chrome/Xcode memory profiles showed dramatic increases in memory. I'm not great at debugging memory leaks so I could be wrong but I suspect that means it might be on the native side and not on the JS side.
To Reproduce
I've created an example repo to reproduce the error in 0.59.0-rc.3: https://github.com/cjroth/react-native-fetch-memory-leak. You can copy the App.js and see that it happens in previous versions as well.
Expected Behavior
After each fetch() call that is no longer referenced, the memory should return to what it was previously.
Code Example
https://github.com/cjroth/react-native-fetch-memory-leak
Environment