Handsontable 8.1.0 has been released
The new 8.1.0 version of Handsontable introduces the support for resizing the non-contiguous rows and columns and improvements to the performance of several plugins which is especially visible for large datasets. We also extended and reorganized the e2e test codebase, and did some additional enhancements.
Resize the non-contiguous rows and columns
This change was made possible thanks to the great help from the community member Siddharth Bhalgami, who improved our existing plugin and created a pull request (#7162). The new feature allows you to select non-adjacent rows or columns and resize them all at once. See how it works in action on the animation below:
We also worked on improving the performance of three plugins: Trim Rows, Hidden Rows, and Hidden Columns. We achieved a significant boost in execution time when working with a data set of 1.5M records with many trimmed and hidden indexes (#7223). It can be best observed when you filter, hide, or trim the rows and then trigger a reverse operation – you remove filtering, show rows, or untrim rows.
The following chart presents the average gain in performance when comparing this version 8.1.0 with the previous 8.0.0. We iterated the tests at least 5x using Firefox 79 on a MacBookPro, 15″, Mid 2015, i7 2.2 GHz, macOS Catalina. The data set consisted of 100k rows and 15 columns. The time of rendering was then measured with 100, 1k, 10k, and 50k trimmed rows. “Trimmed” rows are the ones that are hidden before the grid is rendered.
For 100 trimmed rows, the performance gain starts to be noticeable. 1k trimmed rows showed a slightly better performance boost – from 142.4 ms to 106 ms. Results for 10k presented a noticeable speed reduction of 34%, from 203 ms to 134.4 ms. The highest decrease was observed in the 50k test case where it used to render in 1997 ms and now it renders in 136.6 ms. Further investigation showed that for larger sets of trimmed rows the performance boost becomes even more evident.
Other changes and fixes
We made some additional changes related to security and tests:
copy-webpack-pluginpackage was updated to the newest major version to keep up with security requirements. Alongside this change, some other dependencies were updated as well. (#7222)
- The codebase of e2e tests was expanded, and existing tests were reorganized and improved for better maintainability. Most of them concern hidden column functionality. (#6491)
List of fixed issues:
- Fixed an issue where the value did not show if the first part of the merged area was hidden. (#6871)
- Fixed an issue where after selecting the top-left element, resizing the row range was not possible. (#7139)
- Fixed a bug introduced within #6871 and did some refactoring. (#7220)
- Fixed an issue where column headers were cut off after hiding and revealing the columns with the
- Fixed an issue where a redundant row was added during copy/paste operations in some cases. (#5961)
- Fixed an issue where too many values were pasted after a column was hidden. (#6743)
- Fixed a bug where an attempt to move collapsed parent rows, with the
NestedRowsplugin enabled, resulted in an error. (#7132)
- Fixed an issue where, after column or row alteration, Handsontable threw an error if
ColumnSummarywas enabled without defined row ranges. (#7174)
- Fixed an issue where using
updateSettingswas breaking column sorting in specific cases. (#7228)
- Fixed an issue where, if
fixedColumnsLeftwas defined, rows had their left borders missing after disabling the row headers using
- Fixed an issue where the Handsontable instance could fall into an infinite loop during vertical scrolling. It only happened when the scrollable element was the
- Fixed an issue with moving rows to the last row of the table when the
NestedRowsplugin was enabled. Repaired some other minor moving-related bugs as well. (#6067)
- Fixed an issue with adding an unnecessary extra empty line in cells on Safari. (#7262)
- Fixed an issue with clipped column headers when they were changed before or within the usage of
We recommend updating to 8.1.0 as it includes performance improvements which can positively affect the end-user experience of using the software.
If you still run on 7.x.x, we’ve prepared a migration guide that facilitates the upgrade.