fix(runtime): clear up detached hostRefs and rootAppliedStyles #6087
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What is the current behavior?
There seems to be a memory leak within Stencil that causes performance problems as documented in:
It turns out that Stencil doesn't properly clear up its
hostRefs
global when elements are removed from the DOM. Given that thehostRefs
global is never garbage collected, all its value will remain in memory which requires us to do some manual cleanup. Furthermore, we have been using references in another global variable calledrootAppliedStyles
which also never gets cleaned up.What is the new behavior?
This patch enhances the
disconnectedCallback
hook to clean up detached nodes from thehostRefs
androotAppliedStyles
maps.Documentation
Does this introduce a breaking change?
Testing
I am investigating if we can add some memory checks through Puppeteer and Chrome Devtools.
Other information
A development release is now available at
@stencil/[email protected]
. If anyone is able to help validate the memory leak fix, your assistance would be greatly appreciated.