Skip to content

Deprecation policy

This page explains how Handsontable handles deprecated APIs — including the grace period before removal and how you will be notified.

Deprecation occurs when better alternatives emerge that offer improved performance, security, or usability compared to existing implementations. It also helps maintain API consistency by removing redundant or inconsistent functions, creating a cleaner overall design. As web standards and the JavaScript ecosystem evolve, certain approaches become obsolete or suboptimal, requiring updates to stay current. Additionally, deprecation reduces maintenance complexity by phasing out rarely-used or problematic features, while addressing potential security vulnerabilities in older implementations. Rather than introducing breaking changes, deprecation provides a gradual migration path that gives developers time to adapt while clearly signaling the library’s future direction.

After a Handsontable feature, a framework wrapper or any other part of the API is marked deprecated, we commit to a grace period (at least 3 months) during which the deprecated feature still works. We will not remove the feature immediately in the next minor or patch release. Instead, removal is deferred until a future major release, in accordance with semantic versioning.

Support

During the deprecation period:

  • We will fix critical bugs and security vulnerabilities in the deprecated feature.
  • We will not add new enhancements for deprecated APIs.
  • Full stability and long-term support are guaranteed only within LTS releases.

Relation to LTS

Handsontable follows a Long-Term Support (LTS) model, where every even-numbered major release becomes an LTS release with ~30 months of support. For more details, please visit Long Term Support.

Deprecation notifications

We will announce deprecations and removals through release notes accompanied by blog posts. Additionally, deprecated features may show console warnings in development builds. Deprecated APIs will be clearly marked in our documentation with a recommended alternative (if possible).

For significant deprecations (especially those affecting many users), we will provide dedicated Migration Guides.

For more details about our versioning policy please visit Versioning policy

Removed in version 18.0

Dependencies

The following dependencies were deprecated in version 17.0 and removed in version 18.0.

RemovedDescriptionMigration guide
numbro.jsHandled numeric data formatting. Replace with Intl.NumberFormat.Migrate from 17.1 to 18.0 -> Numeric formatting
PikadayDisplayed a date picker. The intl-date cell type now uses the native browser date picker.Migrate from 17.1 to 18.0 -> Date/Time
moment.jsParsed, validated, and displayed dates. The intl-date and intl-time cell types use the native Intl.DateTimeFormat API.Migrate from 17.1 to 18.0 -> Date/Time
DOMPurifyAn XSS sanitizer for HTML. Use the sanitizer option to provide your own sanitizer function.Migrate from 17.1 to 18.0 -> HTML sanitization

APIs

RemovedDeprecated inReplacementMigration guide
correctFormat and datePickerConfig options17.0valueParser and valueSetterMigrate from 17.1 to 18.0 -> correctFormat option
numericFormat.pattern and numericFormat.culture17.0Intl.NumberFormat options and the locale optionMigrate from 17.1 to 18.0 -> Numeric formatting
handsontable/common import subpath— (never documented)handsontable or handsontable/baseMigrate from 17.1 to 18.0 -> Imports

Removed in version 17.0

APIs

RemovedDeprecated inReplacementMigration guide
PersistentState plugin, its persistentState option, and the persistentStateSave, persistentStateLoad, and persistentStateReset hooks16.1Persist state in your application code. The saveManualColumnWidths(), loadManualColumnWidths(), saveManualRowHeights(), and loadManualRowHeights() methods that relied on the plugin are deprecated (see below).Changelog 17.x
hot.undo(), hot.redo(), hot.clearUndo(), hot.isUndoAvailable(), hot.isRedoAvailable(), and hot.undoRedoBefore 16.0hot.getPlugin('undoRedo')Changelog 17.x

List of current deprecations

The following APIs are deprecated. They keep working and print a one-time console warning. They are scheduled for removal in version 19.0, the next major release.

Methods

DeprecatedDeprecated inRemovalReplacementMigration guide
saveManualColumnWidths() (ManualColumnResize)18.019.0No-op. Persist widths in your application code.Migrate from 17.1 to 18.0 -> Resize-state methods
loadManualColumnWidths() (ManualColumnResize)18.019.0No-op. Pass an array to manualColumnResize.Migrate from 17.1 to 18.0 -> Resize-state methods
saveManualRowHeights() (ManualRowResize)18.019.0No-op. Persist heights in your application code.Migrate from 17.1 to 18.0 -> Resize-state methods
loadManualRowHeights() (ManualRowResize)18.019.0No-op. Pass an array to manualRowResize.Migrate from 17.1 to 18.0 -> Resize-state methods
Handsontable.helper.sanitize()18.019.0Pass-through. Use the sanitizer option.sanitizer option

Options

DeprecatedDeprecated inRemovalReplacementMigration guide
columnHeaders (export options of the exportFile plugin)17.119.0colHeaders — rename the key; the value keeps its meaning.Export to CSV -> Available options

TypeScript types

Type aliases do not print console warnings. Your editor shows them as deprecated.

DeprecatedDeprecated inRemovalReplacement
Settings (exported from handsontable/plugins/exportFile)18.019.0ExportFileSettings
DataProviderOptions (exported from handsontable/plugins/dataProvider)18.019.0DataProviderFetchOptions