# Release notes

This page lists HyperFormula release notes. The format is based on Keep a Changelog (opens new window).

HyperFormula adheres to Semantic Versioning (opens new window).

# Unreleased

# Changed

  • Breaking change: The Czech, Danish, German, Spanish, Finnish, French, Hungarian, Italian, Norwegian Bokmål, Dutch, Polish, Portuguese, Russian, and Turkish language packs now use the official localized names for VSTACK and HSTACK. If an existing formula uses the English VSTACK or HSTACK name while one of these language packs is active, update that formula to the localized function name exported by the language pack.

# 3.4.0

Release date: August 10, 2026

# Added

# Fixed

  • Fixed the behavior of MATCH, VLOOKUP, HLOOKUP, and XLOOKUP functions when the search range contained empty cells. #1697 (opens new window)
  • Fixed the VLOOKUP, HLOOKUP, and XLOOKUP functions to return 0 instead of an empty value when the matched cell in the result range is empty. #1697 (opens new window)
  • Fixed the page freezing when entering a long string of digits containing a non-digit character near the end (e.g. 012...789a or 012...789 123) into a cell. #1520 (opens new window)

# 3.3.0

Release date: May 20, 2026

# Added

# Fixed

  • Fixed a memory leak in LazilyTransformingAstService where the transformations array grew unboundedly, causing increasing memory usage over time. #1629 (opens new window)
  • Fixed a memory leak in UndoRedo where oldData entries for evicted undo stack entries were never cleaned up, causing increasing memory usage over time. #1629 (opens new window)
  • Fixed the IRR function returning #NUM! error when the initial investment significantly exceeds the sum of returns. #1628 (opens new window)
  • Fixed the ADDRESS function ignoring defaultValue when arguments are syntactically empty (e.g., =ADDRESS(2,3,,FALSE())). #1632 (opens new window)

# 3.2.0

Release date: February 19, 2026

# Added

# Fixed

# 3.1.1

Release date: December 18, 2025

# Fixed

  • Fixed an issue where cells were not recalculated after adding, removing and renaming sheets. #1116 (opens new window)
  • Fixed an issue where overwriting a non-computed cell caused the Value of the formula cell is not computed error. #1194 (opens new window)

# 3.1.0

Release date: October 14, 2025

# Changed

  • Renamed the arraySizeMethod parameter in the FunctionMetadata interface to sizeOfResultArrayMethod. The arraySizeMethod is deprecated and will be removed in one of the next major releases. #1401 (opens new window)
  • Renamed the arrayFunction parameter in the FunctionMetadata interface to enableArrayArithmeticForArguments. The arrayFunction is deprecated and will be removed in one of the next major releases. #1401 (opens new window)

# Fixed

  • Fixed an issue where the OFFSET function was ignoring the sheet reference in the provided address. #1477 (opens new window)

# 3.0.1

Release date: August 11, 2025

# Fixed

# 3.0.0

Release date: January 14, 2025

# Added

# Changed

  • Breaking change: Changed ES module build to use mjs files and exports property in package.json to make importing language files possible in Node environment. #1344 (opens new window)
  • Breaking change: Changed the default value of the precisionRounding configuration option to 10. #1300 (opens new window)
  • Make methods simpleCellAddressToString and simpleCellRangeToString more logical and easier to use. #1151 (opens new window)

# Removed

# 2.7.1

Release date: July 18, 2024

# Fixed

  • Fixed an issue where adding or removing columns with DenseStrategy for address mapping resulted in the Cannot read properties of undefined (reading 'splice') error. #1406 (opens new window)

# 2.7.0

Release date: Apr 10, 2024

# Added

# 2.6.2

Release date: Feb 15, 2024

# Changed

# 2.6.1

Release date: Dec 27, 2023

# Fixed

# 2.6.0

Release date: Sep 19, 2023

# Added

  • Exported the EmptyValue symbol as a public API. This allows custom functions to handle empty cell values. #1232 (opens new window)

# Changed

# Fixed

# 2.5.0

Release date: May 29, 2023

# Added

# Changed

# Fixed

# 2.4.0

Release date: April 24, 2023

# Added

# Fixed

# 2.3.1

Release date: March 3, 2023

# Fixed

  • Fixed an issue where named-expression names were not allowed to start with a cell reference. #1058 (opens new window)
  • Fixed an issue where named-expression names were allowed to start with "R1C1" cell references. For better compatibility with other spreadsheet software, strings such as R4C5, RC1000, R1C or RC can't be used in named-expression names anymore. #1058 (opens new window)
  • Fixed an issue where using reversed ranges with absolute addressing could cause the Incorrect array size error. #1106 (opens new window)
  • Fixed an issue where removing a sheet (removeSheet()) without clearing it (clearSheet()) could cause an error. #1121 (opens new window)

# 2.3.0

Release date: December 22, 2022

# Added

# 2.2.0

Release date: November 17, 2022

# Added

  • Added an American English (enUS) language pack. It's a convenience alias: it contains the same translations as the existing British English (enGB) language pack. #1025 (opens new window)

# Fixed

# 2.1.0

Release date: September 8, 2022

# Added

# Changed

  • Changed the rounding strategy of the default time-parsing function to be independent of the timeFormats configuration option. Now, time values are always rounded to the nearest millisecond (0.001 s). #953 (opens new window)

# Fixed

  • Fixed a rounding issue that caused the TEXT function to convert dates and times to strings incorrectly. #1043 (opens new window)
  • Fixed an issue where functions SUMIF, SUMIFS, COUNTIF, COUNTIFS, and AVERAGEIF incorrectly handled complex numeric values. #951 (opens new window)

# Removed

# 2.0.1

Release date: June 14, 2022

# Changed

  • Changed the following npm scripts (used internally): docs, docs:api, docs:dev, docs:build, coverage, typings:check. #977 (opens new window)

# Fixed

# 2.0.0

Release date: April 14, 2022

# Added

# Changed

# Fixed

# 1.3.1

Release date: January 11, 2022

# Fixed

  • Fixed an issue where warnings about deprecated configuration options were getting duplicated. #882 (opens new window)

# 1.3.0

Release date: October 20, 2021

# Added

# Fixed

# 1.2.0

Release date: September 23, 2021

# Changed

  • Removed gpu.js from optional dependencies and marked config options gpujs and gpuMode as deprecated.

# 1.1.0

Release date: August 12, 2021

# Added

  • Added support for the array arithmetic mode in the calculateFormula() method. #782 (opens new window)
  • Added a new CellType returned by getCellType: CellType.ARRAYFORMULA. It's assigned to the top-left corner of an array, and is recognized by the isCellPartOfArray() and doesCellHaveFormula() methods. #781 (opens new window)

# Changed

  • Deprecated the binarySearchThreshold configuration option, as every search of sorted data always uses binary search. #791 (opens new window)

# Fixed

# 1.0.0

Release date: July 15, 2021

# Added

# Changed

  • Breaking change: Changed API of many sheet-related methods to take sheetId instead of sheetName as an argument. #645 (opens new window)
  • Breaking change: Removed support for matrix formulas ({=FORMULA}) notation. Engine now supports formulas returning array of values (instead of only scalars). #652 (opens new window)
  • Breaking change: Removed numeric matrix detection along with matrixDetection and matrixDetectionThreshold config options. #669 (opens new window)
  • Breaking change: Changed API of the following methods to take SimpleCellRange type argument: copy, cut, getCellDependents, getCellPrecedents, getFillRangeData, getRangeFormulas, getRangeSerialized, getRangeValues, isItPossibleToMoveCells, isItPossibleToSetCellContents, moveCells. #687 (opens new window)
  • Breaking change: Changed the AGPLv3 license to GPLv3.
  • Breaking change: Removed the free non-commercial license.
  • Breaking change: Changed behaviour of setCellContents so that it is possible to override space occupied by spilled array. #708 (opens new window)
  • Breaking change: Changed behaviour of addRows/removeRows so that it is possible to add/remove rows across spilled array without changing array size. #708 (opens new window)
  • Breaking change: Changed behaviour of addColumns/removeColumns so that it is possible to add/remove columns across spilled array without changing array size. #732 (opens new window)
  • Breaking change: Changed config options #747 (opens new window):
before after
matrixColumnSeparator arrayColumnSeparator
matrixRowSeparator arrayRowSeparator
before after
matrixMapping arrrayMapping
isCellPartOfMatrix isCellPartOfArray
before after
SourceLocationHasMatrixError SourceLocationHasArrayError
TargetLocationHasMatrixError TargetLocationHasArrayError
  • Changed SWITCH function, so it takes array as its first argument.
  • Changed TRANSPOSE function, so it works with data of any type. #708 (opens new window)
  • Changed the way how we include gpu.js making it even more optional #753 (opens new window)

# Fixed

# 0.6.2

Release date: May 26, 2021

# Changed

  • Modified a private field in one of the classes to ensure broader compatibility with older TypeScript versions. #681 (opens new window)

# 0.6.1

Release date: May 24, 2021

# Changed

# Fixed

# 0.6.0

Release date: April 27, 2021

# Added

# Changed

  • Breaking change: Moved GPU.js from dependencies to devDependencies and optionalDependencies. #642 (opens new window)

# Fixed

# 0.5.0

Release date: April 15, 2021

# Added

# Changed

# Fixed

# 0.4.0

Release date: December 17, 2020

# Added

  • Added 50 mathematical functions: ROMAN, ARABIC, FACT, FACTDOUBLE, COMBIN, COMBINA, GCD, LCM, MROUND, MULTINOMIAL, QUOTIENT, RANDBETWEEN, SERIESSUM, SIGN, SQRTPI, SUMX2MY2, SUMX2PY2, SUMXMY2, CEILING.MATH, FLOOR.MATH, FLOOR, CEILING.PRECISE, FLOOR.PRECISE, ISO.CEILING, COMPLEX, IMABS, IMAGINARY, IMARGUMENT, IMCONJUGATE, IMCOS, IMCOSH, IMCOT, IMCSC, IMCSCH, IMDIV, IMEXP, IMLN, IMLOG10, IMLOG2, IMPOWER, IMPRODUCT, IMREAL, IMSEC, IMSECH, IMSIN, IMSINH, IMSQRT, IMSUB, IMSUM, IMTAN. #537 (opens new window) , #582 (opens new window) , #281 (opens new window) , #581 (opens new window)
  • Added 106 statistical functions: EXPON.DIST, EXPONDIST, FISHER, FISHERINV, GAMMA, GAMMA.DIST, GAMMADIST, GAMMALN, GAMMALN.PRECISE, GAMMA.INV, GAMMAINV, GAUSS, BETA.DIST, BETADIST, BETA.INV, BETAINV, BINOM.DIST, BINOMDIST, BINOM.INV, BESSELI, BESSELJ, BESSELK, BESSELY, CHISQ.DIST, CHISQ.DIST.RT, CHISQ.INV, CHISQ.INV.RT, CHIDIST, CHIINV, F.DIST, F.DIST.RT, F.INV, F.INV.RT, FDIST, FINV, WEIBULL, WEIBULL.DIST, HYPGEOMDIST, HYPGEOM.DIST, T.DIST, T.DIST.2T, T.DIST.RT, T.INV, T.INV.2T, TDIST, TINV, LOGNORM.DIST, LOGNORMDIST, LOGNORM.INV, LOGINV, NORM.DIST, NORMDIST, NORM.S.DIST, NORMSDIST, NORM.INV, NORMINV, NORM.S.INV, NORMSINV, PHI, NEGBINOM.DIST, NEGBINOMDIST, POISSON, POISSON.DIST, LARGE, SMALL, AVEDEV, CONFIDENCE, CONFIDENCE.NORM, CONFIDENCE.T, DEVSQ, GEOMEAN, HARMEAN, CRITBINOM, COVAR, COVARIANCE.P, COVARIANCE.S, PEARSON, RSQ, STANDARDIZE, Z.TEST, ZTEST, F.TEST, FTEST, STEYX, SLOPE, CHITEST, CHISQ.TEST, T.TEST, TTEST, SKEW.P, SKEW, WEIBULLDIST, VARS, TINV2T, TDISTRT, TDIST2T, STDEVS, FINVRT, FDISTRT, CHIDISTRT, CHIINVRT, COVARIANCEP, COVARIANCES, LOGNORMINV, POISSONDIST, SKEWP. #152 (opens new window) , #154 (opens new window) , #160 (opens new window)
  • Added function aliases mechanism. #569 (opens new window)
  • Added support for scientific notation. #579 (opens new window)
  • Added support for complex numbers. #281 (opens new window)

# Changed

  • A breaking change: CEILING function implementation to be consistent with existing implementations. #582 (opens new window)

# Fixed

# 0.3.0

Release date: October 22, 2020

# Added

  • Added 9 text functions EXACT, LOWER, UPPER, MID, T, SUBSTITUTE, REPLACE, UNICODE, UNICHAR. #159 (opens new window)
  • Added 5 datetime functions: INTERVAL, NETWORKDAYS, NETWORKDAYS.INTL, WORKDAY, WORKDAY.INTL. #153 (opens new window)
  • Added 3 information functions HLOOKUP, ROW, COLUMN. #520 (opens new window)
  • Added 5 financial functions FVSCHEDULE, NPV, MIRR, PDURATION, XNPV. #542 (opens new window)
  • Added 12 statistical functions VAR.P, VAR.S, VARA, VARPA, STDEV.P, STDEV.S, STDEVA, STDEVPA, VARP, VAR, STDEVP, STDEV. #536 (opens new window)
  • Added 2 mathematical functions SUBTOTAL, PRODUCT. #536 (opens new window)
  • Added 15 operator functions HF.ADD, HF.CONCAT, HF.DIVIDE, HF.EQ, HF.GT, HF.GTE, HF.LT, HF.LTE, HF.MINUS, HF.MULTIPLY, HF.NE, HF.POW, HF.UMINUS, HF.UNARY_PERCENT, HF.UPLUS. #543 (opens new window)

# Fixed

# 0.2.0

Release date: September 22, 2020

# Added

# Changed

  • Operation moveCells creating cyclic dependencies does not cause losing original formula. #479 (opens new window)
  • Simplified adding new function modules, reworked (simplified) implementations of existing modules. #480 (opens new window)

# Fixed

# 0.1.3

Release date: July 21, 2020

# Fixed

# 0.1.2

Release date: July 13, 2020

# Fixed

# 0.1.1

Release date: July 1, 2020

# Fixed

# 0.1.0

Alpha release date: June 25, 2020 🎉

  • Core functionality of the engine
  • Support for data types: String, Error, Number, Date, Time, DateTime, Duration, Distinct Logical
  • Support for logical operators: =, <>, >, <, >=, <=
  • Support for arithmetic operators: +, -, *, /, %
  • Support for text operator: &
  • CRUD operations:
    • modifying the value of a single cell
    • adding/deleting row/column
    • reading the value or formula from the selected cell
    • moving a cell or a block of cells
    • deleting a subset of rows or columns
    • recalculating and refreshing of a worksheet
    • batching CRUD operations
    • support for wildcards and regex inside criterion functions like SUMIF, COUNTIF
    • named expressions support
    • support for cut, copy, paste
    • undo/redo support
  • The following functions: ABS(), ACOS(), AND(), ASIN(), ATAN(), ATAN2(), AVERAGE(), AVERAGEA(), AVERAGEIF(), BASE(), BIN2DEC(), BIN2HEX()BIN2OCT(), BITAND(), BITLSHIFT(), BITOR(), BITRSHIFT(), BITXOR(), CEILING(), CHAR(), CHOOSE(), CODE(), COLUMNS(), CONCATENATE(), CORREL(), COS(), COT(), COUNT(), COUNTA(), COUNTBLANK(), COUNTIF(), COUNTIFS(), COUNTUNIQUE(), DATE(), DAY(), DAYS(), DEC2BIN(), DEC2HEX(), DEC2OCT(), DECIMAL(), DEGREES(), DELTA(), E(), EOMONTH(), ERF(), ERFC(), EVEN(), EXP(), FALSE(), IF(), IFERROR(), IFNA(), INDEX(), INT(), ISBLANK(), ISERROR(), ISEVEN(), ISLOGICAL(), ISNONTEXT(), ISNUMBER(), ISODD(), ISTEXT(), LN(), LOG(), LOG10(), MATCH(), MAX(), MAXA(), MAXPOOL(), MEDIAN(), MEDIANPOOL(), MIN(), MINA(), MMULT(), MOD(), MONTH(), NOT(), ODD(), OFFSET(), OR(), PI(), POWER(), RADIANS() , RAND(), ROUND(), ROUNDDOWN(), ROUNDUP(), ROWS(), SIN(), SPLIT(), SQRT(), SUM(), SUMIF(), SUMIFS(), SUMPRODUCT(), SUMSQ(), SWITCH(), TAN(), TEXT(), TRANSPOSE(), TRUE(), TRUNC(), VLOOKUP(), XOR(), YEAR()
  • Support for volatile functions
  • Cultures supports - can be configured according to the application need
  • Custom functions support
  • Set OpenDocument v1.2 (opens new window) as a standard to follow
  • Error handling:
    • Division by zero: #DIV/0!
    • Unknown function name: #NAME?
    • Wrong type of argument in a function or wrong type of operator: #VALUE!
    • Invalid numeric values: #NUM!
    • No value available: #N/A
    • Cyclic dependency: #CYCLE!
    • Wrong address reference: #REF
  • Built-in function translation support for 16 languages: English, Czech, Danish, Dutch, Finnish, French, German, Hungarian, Italian, Norwegian, Polish, Portuguese, Russian, Spanish, Swedish, Turkish.