# Migrating from 2.x to 3.0
To upgrade your HyperFormula version from 2.x.x to 3.0.0, follow this guide.
# Importing language files
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
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
- Make sure you use Typescript 5 or newer
- In your
tsconfig.json
, set:
"moduleResolution": "bundler",
# Additional steps for projects using Typescript
In your tsconfig.json
, set:
"module": "node16",
"moduleResolution": "node16",
# Additional steps for projects using Webpack 4 or older
- 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";
- 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
- Make sure you use Parcel 2.9 or newer. Older versions of Parcel do not support
exports
property. - In your
package.json
, add the following configuration (opens new window):
"@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";
# Other projects
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)
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
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
});