-
-
Notifications
You must be signed in to change notification settings - Fork 400
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
react-jss
dynamic rules memory leak in strict mode
#1648
Comments
ernestostifano
added a commit
to ernestostifano/jss
that referenced
this issue
Jul 12, 2023
ernestostifano
added a commit
to ernestostifano/jss
that referenced
this issue
Jul 12, 2023
ernestostifano
added a commit
to ernestostifano/jss
that referenced
this issue
Jul 13, 2023
ernestostifano
added a commit
to ernestostifano/jss
that referenced
this issue
Jul 13, 2023
ernestostifano
added a commit
to ernestostifano/jss
that referenced
this issue
Jul 13, 2023
ernestostifano
added a commit
to ernestostifano/jss
that referenced
this issue
Sep 26, 2023
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Expected behavior:
Unreferenced style rules should be properly removed after un-mounting all associated components instances.
Describe the bug:
When React's strict mode is enabled, dynamic rules are not properly removed after un-mounting components, probably because of strict mode's double render (rule keys gets shifted during second render, probably because React Hooks best practices were not followed).
The app ultimately becomes unresponsive.
Reproduction:
https://codesandbox.io/s/happy-joliot-pmmq4d
It is sufficient to mount and un-mount a component with dynamic styles in any React application using strict mode and count the number of attached styles rules.
issue/react-jss-no-dynamic-remove
yarn start
Component A
andComponent B
buttons and see how style rules count increases.<StrictMode>
from./src/app.js
and repeat step4
. No more leak.Note: If a custom ID generator is added to print generated classnames, it can be seen how keys increase twice because of strict mode's double render.
Versions (please complete the following information):
10.10.0
Chrome
,Firefox
,Safari
andEdge
(latest versions at the time of submission)macOS 13.4
Managing expectations:
I think this is an important bug because it can be easily reproduced and ultimately makes apps unresponsive during development. Also, it was not that simple to pinpoint the source of the memory leak. Should not be that difficult to fix. I would be happy to work on the fix if someone gives me proper context.
Potentially related issues:
The text was updated successfully, but these errors were encountered: