hiddenColumns plugin causes unresponsive browser when updateSettings is called

Tags: #<Tag:0x00007f0b10cb6ef8>

Example in the fiddle. http://jsfiddle.net/6Lnb9yct/3/

To reproduce, scroll to the bottom of the table and click the checkbox (It hides another column). The browser becomes unresponsive for a long time.

It doesn’t only happen when the hiddenColumn setting is updated, but also when I e.g., update the columns (to use an alternative renderer for a column).
If I disable the hiddenColumn plugin, everything works fine.

Hey Jonas,

works pretty fast on my Chrome 75 on Windows 10. Besides the fact that the hiddenColumn plugin is a bit slow itself.
I think that you could track progress on this issue https://github.com/handsontable/handsontable/issues/4381 but if it’s something different please share more details (OS/Browser settings, a video).

I’v adjusted the fiddle to include a timer (http://jsfiddle.net/Lcojz0nq/) and it takes 12 seconds to re-render the table with a table of 10k rows, while the browser is busy.

And it seems to be the plugin itself (Even though only 15 rows are rendered in the dom at all). This makes it unusable in that case.
Here’s a performance analysis result:

I’m working on Mac (10.13.6), Chrome Version 75.0.3770.100 (Official Build) (64-bit)

Also, here is a video https://drive.google.com/file/d/1uhpsIY6AJXM9PrqeaJOmLUa0JbReBwjM/view?usp=sharing

Can I ask you to share those findings here https://github.com/handsontable/handsontable/issues/4381? We keep this topic to track the performance of the hiddenColumn plugin.

We are currently working on the new rendering engine here https://github.com/handsontable/handsontable/issues/5769 in a result of processing those changes and reusing the already rendered elements the hidden columns should also improve. You can check the changes that we are applying here https://github.com/handsontable/handsontable/pull/6089. It shows what path did we choose to handle the elements in the DOM and how to remove redundant calls.