# 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).

# 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.