Skip to content
v3.4.0

Migrating from 2.x to 3.0

To upgrade your HyperFormula version from 2.x.x to 3.0.0, follow this guide.

We changed the way of importing language files in ES module system to a more modern way using mjs files and exports property. This change is required to make HyperFormula compatible with newer ESM configurations in Node and browser environments.

The previous import paths became deprecated. For most environments they still work in version 3.0.0, but it will be removed in the future. To avoid any issues, update your code to use the new paths.

New import paths for ES and CommonJS module systems

Section titled “New import paths for ES and CommonJS module systems”

For ES and CommonJS modules, use the path hyperformula/i18n/languages, to import the language files. E.g.:

import { frFR } from "hyperformula/i18n/languages"; // ESM
const { frFR } = require('hyperformula/i18n/languages'); // CommonJS

If you use the UMD module system, you don’t need to change anything.

Additional steps for projects using Angular

Section titled “Additional steps for projects using Angular”
  1. Make sure you use Typescript 5 or newer
  2. In your tsconfig.json, set:
"moduleResolution": "bundler",

Additional steps for projects using Typescript

Section titled “Additional steps for projects using Typescript”

In your tsconfig.json, set:

"module": "node16",
"moduleResolution": "node16",

Additional steps for projects using Webpack 4 or older

Section titled “Additional steps for projects using Webpack 4 or older”
  1. In your code, use the legacy paths for importing language files. Unfortunately, Webpack 4 does not support exports property. E.g.:
import { frFR } from "hyperformula/es/i18n/languages";
  1. In your webpack.config.js, add the following configuration to handle .mjs files properly:
module: {
rules: [
{
test: /\.m?js$/,
include: /node_modules/,
type: "javascript/auto",
},
],
}

Additional steps for projects using Parcel

Section titled “Additional steps for projects using Parcel”
  1. Make sure you use Parcel 2.9 or newer. Older versions of Parcel do not support exports property.
  2. In your package.json, add the following configuration:
"@parcel/resolver-default": {
"packageExports": true
}

If you don’t want to upgrade Parcel, you can keep using the legacy import paths for language files, but they will be removed in one of the upcoming releases. E.g.:

import { frFR } from "hyperformula/es/i18n/languages";

We tested the changes with the most popular bundlers and frameworks. If you use a different configuration, and you encounter any issues, please contact us via GitHub. We will try to make it work for you, although for older versions of bundlers and frameworks, it might be impossible.

Removal of the binarySearchThreshold configuration option (deprecated since version 1.1.0)

Section titled “Removal of the binarySearchThreshold configuration option (deprecated since version 1.1.0)”

The binarySearchThreshold has no effect since version 1.1.0. If your codebase still uses this option, please remove it.

Change in the default value of the precisionRounding configuration option

Section titled “Change in the default value of the precisionRounding configuration option”

HyperFormula 3.0.0 introduces a change in the default value of the precisionRounding configuration option. The new default value is 10. If you want to keep the old behavior, set the precisionRounding option to 14 in the HyperFormula configuration:

const hf = HyperFormula.buildEmpty({
precisionRounding: 14
});