What’s new in Handsontable 8.4.0

Beata Mówka Release Notes / May 11, 2021

What’s new in Handsontable 8.4.0

The new release of Handsontable has arrived and it brings lots of bug fixes as well as new hooks, and a new versioning scheme.

New versioning scheme

Handsontable follows the semVer versioning strategy, which proves to be predictable and self-explanatory for developers working with Handsontable. However, until now we have been releasing our wrappers for frameworks in separation from the core library, resulting in four different versions of the software. We noticed that it was confusing for some developers, especially for those writing applications in one of the supported frameworks.

With the 8.4.0 release, we changed the versioning scheme by unifying all package version numbers. There will be only one Handsontable version from now. We believe this is a huge improvement to the way how we inform you about the updates to the software, regardless of your technology preferences.

Obviously, each consecutive release will respect the semVer rules.

Here you have a comparison between the previous and the new versioning strategy.

  • Before 8.4.0: React 5.0.0, Vue 6.0.0, Angular 7.0.0, Pure JS 8.3.2
  • 8.4.0 and later: All packages are now 8.4.0

New hooks to Undo/Redo plugin

We added new hooks to solve issue #6948 reported on GitHub. A detailed explanation of the solution can be found in this PR. The new hooks are listed below:

  • beforeUndoStackChange
  • afterUndoStackChange
  • beforeRedoStackChange
  • afterRedoStackChange

You can use new hooks to react to changes in the stack of undo/redo items. For example it is useful when you create a spreadsheet-like toolbar and want to grey out the “Undo” icon () when there are no actions left in the undo stack.

Improvements to the Nested Header plugin

With the “Nested Header” plugin you can group columns by adding multiple levels of headers. This feature is useful when you have data that belong to various categories – for example, the data in the column ”Full name” (level 1) could be presented as part of the categories: “Employee data” (first group), and “Company A” (second group).

Previously, a bug caused a serious misalignment of headers whenever you hid one or more columns within the nested headers structure. This issue is now fixed, but we’re still working on making it possible for you to collapse and expand such columns using the grid’s UI. We expect that this problem will be fixed soon and released within one of the future versions.

Minor improvements to the mobile experience

To improve your experience on mobile devices we fixed an issue that made it difficult to open the cell editor when tapping twice on it (#6961). We also noticed that some users couldn’t open the dropdown menu (column menu) on Android devices (#6212). That’s fixed now too.

Fixes and additions

Below is a complete list of changes in version 8.4.0 released on May 11, 2021:


  • Introduced a separated attribute for the label options (the label DOM element may wrap input or be placed next to it). #3172
  • Introduced the modifyAutoColumnSizeSeed hook to let developers overwrite the default behavior of the AutoColumnSize sampling. #3339
  • Added support for hiding columns for the NestedHeaders plugin. #6879
  • Added ability to skip stacking actions by the UndoRedo plugin and introduced new hooks. #6948

Fixed issues

  • Fixed a problem with sorting the checkbox-typed cells and an issue with empty cells not being displayed properly. #4047
  • Fixed a problem where undoing the removal of row with readOnly cells was not performed properly. #4754
  • Fixed state-change resolving for externally added checkboxes. #5934
  • Fixed a problem with the native selection being removed with the fragmentSelection option enabled. #6083
  • Fixed a bug where the number of columns rendered in the viewport was not correct. #6115
  • Fixed a bug with the Dropdown Menu not opening on Android devices. #6212
  • Fixed the double-tap issue on iOS. #6961
  • Fixed a problem with the Comments editor being destroyed after destroying another Handsontable instance. #7091
  • Fixed incorrect numericFormat‘s type definition. #7420
  • Fixed the trimWhitespace tests on Firefox. #7593
  • Fixed the [NPM Audit] Github Action job to report found vulnerabilities. #7621
  • Fixed some minor iOS problems. #7659
  • Fixed the TypeScript definition for the suspended rendering feature. #7666
  • Fixed the postbuild and examples:install scripts on Windows. #7680
  • Fixed the contents of the production package.json. #7723
  • Fixed an issue, where the callbacks for the UndoRedo plugin were called twice. #7825
  • Vue: Fixed a problem with displaying and removing rows in the Nested Rows plugin. #7548
  • React: Fixed incompatibility in the property type definitions for the HotColumn component. #7612


  • Enhanced the ESLint config file by adding a rule that checks if new lines are missing before some keywords or statements. #7691

Leave a comment below or drop us a message if you have any questions. Follow us on Twitter to keep up with news and updates.