Sheetwrite

Canvas spreadsheet engine · Rust/WASM core · MIT

Build web spreadsheets you still own.

Sheetwrite is a canvas spreadsheet engine with a Rust/WASM data core and first-party Vanilla, React, Vue, and Svelte adapters. Your application owns the document, the persistence, and the chrome — the engine owns the speed.

Revenue modelIllustrative product view
=SUM(D2:D5)
Resident window Cached rowswork sent to the calculation engine
A static Sheetwrite composition: formula dependencies, selection, and resident-window state.
0.6 ms
median interaction at one million rows
108 MB
renderer heap in the same capture
4
first-party framework mounts
Evidence
Source 47f1643

The live route, reserved below

Watch the Grid, the calculation engine, and your host agree.

A paged formula sheet makes each request, checked result, drawing choice, and host save readable. No illustration stands in for the working Grid.

Try the live engine view →
  1. 01Edit in the Grid

    Change one actual value and watch its formula update.

  2. 02Check the result

    Jump to a row and see only the needed page arrive.

  3. 03Save to your host

    Read the acknowledgement returned by the host boundary.

Results you can check

Measured, not promised

Median speedups over Handsontable, read directly from saved benchmark results. The gap widens as the data grows.

  • 1k rows7.2× faster
    median of 14 interactions · best 96.7× in scroll-right.top-left
  • 10k rows10.7× faster
    median of 14 interactions · best 111.3× in scroll-right.top-left
  • 100k rows26.3× faster
    median of 14 interactions · best 201.2× in scroll-right.top-left
  • 1M rows130.3× faster
    median of 12 interactions · best 1522.2× in scroll-smooth.same-window · Handsontable did not finish 2 of 14
Bar length maps the median speedup on a shared log scale — ×1 would be parity.

Every interaction must return the correct result; failed runs stay failed. See how we measured it.

Live feature examples

Try the work you need to do.

Every public feature has one live example, an action to try, and a browser test you can run. Browse every feature →

  1. 01Database & documentsReal IndexedDB commits, conflict recovery, and compaction.Open the live scenario →
  2. 02InteroperabilityXLSX and CSV/TSV exchange with honest fidelity boundaries.Open the live scenario →
  3. 03Performance & scaleA million paged rows with measured Worker evidence.Open the live scenario →
  4. 04CollaborationTwo live clients staying in sync through one shared server.Open the live scenario →

Framework adapters

One engine, four first-party mounts

The same engine mounts four ways — every workbench is a bounded, directly editable product story.

Runtime contract

The ownership line is explicit

  1. 01 · Host

    You own the product.

    Lifecycle, persistence, collaboration, and product UI stay in your codebase.

  2. 02 · TypeScript core

    One narrow seam.

    Grid API, transactions, virtualization, interaction, and renderer coordination — ownership crosses in one place.

  3. 03 · Rust / WASM

    The engine owns the speed.

    Columnar cells, formulas, query scans, snapshots, and packed render windows.

Read the runtime-ownership model →