.ai/INTEGRATIONS.md
Handsontable is a frontend-only library with no built-in external API integrations. It runs entirely in the browser and makes no network requests unless explicitly configured by the user. The library supports air-gapped environments. There is no built-in telemetry.
Formula Engine (Optional):
hyperformula ^3.0.0 (optional dependency)handsontable/src/plugins/formulas/handsontable/src/plugins/formulas/engine/register.jshandsontable.full.js variant; external in handsontable.jsDatabases:
handsontable/src/dataMap/ (DataMap, MetaManager).File Storage:
Caching:
Auth Provider:
Error Tracking:
handsontable/src/helpers/errors.js with throwWithCause(error, cause) utility.Logs:
handsontable/src/helpers/console.js (wraps console to avoid direct global access).Hosting:
handsontable, @handsontable/react-wrapper, @handsontable/angular-wrapper, @handsontable/vue3)docs/netlify/)CI Pipeline:
.github/workflows/)test.yml, build-all.yml, code-quality.yml, publish.ymlVisual Regression Testing:
@argos-ci/core ^5.1.1) - Screenshot comparison service used in visual-tests/Documentation Search:
.github/workflows/docs-algolia-reindex.yml)Required env vars:
hot.config.js (root):
HOT_FILENAME - Output filename (handsontable)HOT_VERSION - Library version string (17.0.0)HOT_PACKAGE_NAME - npm package name (handsontable)HOT_BUILD_DATE - Build timestamp (generated via moment().format())HOT_RELEASE_DATE - Release date stringNODE_ENV, BABEL_ENVSecrets location:
.env files present.Incoming:
Outgoing:
These are the only external libraries bundled or referenced at runtime:
| Library | Version | Purpose | Integration Point |
|---|---|---|---|
dompurify | ^3.1.7 | XSS sanitization of HTML content | Used internally for cell content sanitization |
numbro | 2.5.0 | Number formatting | Used by numeric cell type and renderers |
moment | 2.30.1 | Date parsing/formatting | Used by date cell type and Pikaday editor |
@handsontable/pikaday | ^1.0.0 | Date picker UI | Date editor plugin (forked from original Pikaday) |
hyperformula | ^3.0.0 | Formula engine | Optional; integrated via Formulas plugin (src/plugins/formulas/) |
Note: Numbro locale files and Moment locale files are excluded from the build via empty-loader (handsontable/.config/loader/empty-loader.js) to reduce bundle size. Only the base libraries are included.
React (wrappers/react-wrapper/):
handsontable ^17.0.0wrappers/react-wrapper/src/hotTableInner.tsxselection.exportSelection() / selection.importSelection() during updateSettings()Angular (wrappers/angular-wrapper/):
handsontable ^17.0.0, @angular/core >=16.0.0wrappers/angular-wrapper/projects/hot-table/src/lib/rxjs ^7.8.1, tslib ^2.3.0, zone.js ~0.13.0NODE_OPTIONS=--openssl-legacy-providerstandalone: true with imports: [HotTableModule]. Use app.config.ts (ApplicationConfig + provideZoneChangeDetection) instead of AppModule. License is set globally via HOT_GLOBAL_CONFIG -- no per-table licenseKey. Templates use @if/@for control flow, not *ngIf/*ngFor. Row data typed as RowObject[] from handsontable/common.Vue 3 (wrappers/vue3/):
handsontable ^17.0.0, vue ^3.2.22rollup-plugin-vueSupported formats (client-side only):
handsontable/src/utils/parseTable.jsNo built-in database synchronization. Applications must implement their own save/load mechanisms.
Handsontable provides an extensive hook system for component lifecycle and user interactions (not external webhooks). Hooks are defined in handsontable/src/core/hooks/. Plugins register hooks globally at module level:
import Hooks from '../../core/hooks';
Hooks.getSingleton().register('beforeMyAction');
Hooks.getSingleton().register('afterMyAction');
Key hook categories: lifecycle (beforeInit/afterInit, beforeRender/afterRender), data (beforeChange/afterChange, beforeLoadData/afterLoadData), selection, editor/renderer, and plugin-specific hooks.