Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Fix two big DOM leaks which were locking Chrome solid. #4111

Merged
merged 1 commit into from
Feb 23, 2020

Conversation

ara4n
Copy link
Member

@ara4n ara4n commented Feb 23, 2020

pillifyLinks leaked Pill components, which if they contained a BaseAvatar
would leak a whole DOM tree retained by the BaseAvatar's onClientSync
event listener. This tracks the Pill containers so they can be unmounted
via unmountPills.

BasicMessageComposer set an event listener on selectionchange in onFocus,
leaking a whole DOM tree if onBlur wasn't called. This removes it in unmount.

We've also seen Velociraptor retaining full DOM trees from RRs, which
this doesn't address as the leak is probably within Velocity, and the plan
is to replace it with CSS animations.

Should fix element-hq/element-web#12417

pillifyLinks leaked Pill components, which if they contained a BaseAvatar
would leak a whole DOM tree retained by the BaseAvatar's onClientSync
event listener.  This tracks the Pill containers so they can be unmounted
via unmountPills.

BasicMessageComposer set an event listener on selectionchange in onFocus
which leaked if onBlur wasn't called.  This removes it in unmount.

We've also seen Velociraptor retaining full DOM trees from RRs, which
this doesn't address as the leak is probably within Velocity, and the plan
is to replace it with CSS animations.

Should fix element-hq/element-web#12417
@ara4n ara4n requested a review from a team February 23, 2020 00:07
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Riot/Web locks Chrome 80 solid for ~40s with ~12 cores of kernel
2 participants