Skip to content

Sheetwrite 0.6.1

Faster data-grid edits, paged scrolling, text lookups and XLSX rejects, and the upgrade checklist for Sheetwrite 0.6.1.
npm install @sheetwrite/core@0.6.1
Update each adapter and add-on you use to 0.6.1 too: all packages release together.
On this page

Sheetwrite 0.6.1 fixes four slowdowns that the 0.6.0 release comparison found against 0.5.4. It has no API changes. All eight packages release as 0.6.1.

Highlights

  • Data-grid edits as fast as 0.5.4 again. Value edits in a workbook without formulas no longer run the formula recalculation pass.
  • Faster scrolling back to evicted pages. The screen-reader mirror no longer rewrites cells whose labels did not change.
  • Faster text lookups. Recalculation after many single-cell writes no longer checks every written cell.
  • Faster XLSX safety checks. A file that expands too much is rejected before its parts are read.

Changes

Each number below compares the same workload, one capture of each version on the same machine, paired run by run. A ratio below 1× is faster.

Data-grid edits

0.6.0 made 1,000 value edits on a data grid about 27% slower than 0.5.4. Every value edit called the formula recalculation pass, even in a workbook without formulas, where the pass has no work to do.

In 0.6.1 a value edit in a workbook without formulas or pivot tables skips the pass. Edits take 0.79× the time of 0.6.0, the same as 0.5.4. Workbooks with formulas or pivot tables recalculate as before.

Paged scrolling

In 0.6.0, every data refresh also refreshes the accessibility mirror, so a screen reader reads loaded values instead of #LOADING!. The mirror then rewrote every cell, even when nothing had changed. Scrolling back to a page that was evicted took 2.1× as long as in 0.5.4.

In 0.6.1 the mirror writes only the cells and attributes that change. The same scroll takes 0.60× the time of 0.6.0. Screen readers still read the loaded values.

Text lookups

When many single-cell writes are followed by one bulk write, the next recalculation checked every written cell, although the sheet had far fewer formulas. In 0.6.1 the recalculation checks the formulas instead when they are fewer. Lookups over 1,000 text cells are 9% to 17% faster than in 0.5.4.

XLSX import and export

  • A file whose parts declare too much expansion, such as a ZIP bomb, is now rejected from the archive directory, before any part is read. The reject takes 0.84× the time of 0.6.0.
  • Small worksheets parse in one step: the deeply nested XML reject takes 0.98× the time of 0.6.0, with the same depth and size limits.
  • Export leaves about 7% less short-lived memory behind for large scalar sheets.

All limits apply as before. Import and export produce the same bytes.

Upgrade checklist

  1. EveryoneRequired

    Update every package together

    Install 0.6.1 for each @sheetwrite/* package that you use. Packages from different versions are not supported together.

    corewasmformulasxlsxchartsreactvuesvelte

  2. If you upgrade from 0.5.xAlso do

    Complete the 0.6.0 steps first

    Read the 0.6.0 upgrade checklist.

Documentation