Skip to content

chore(deps): support Node 26+ (better-sqlite3 13, drop engines cap) - #29

Merged
spytensor merged 1 commit into
mainfrom
chore/support-node-26
Aug 6, 2026
Merged

chore(deps): support Node 26+ (better-sqlite3 13, drop engines cap)#29
spytensor merged 1 commit into
mainfrom
chore/support-node-26

Conversation

@spytensor

Copy link
Copy Markdown
Owner

Why

better-sqlite3@12.6.2 is a V8-ABI (NAN) build that fails to compile on Node 26 (V8 removed the APIs it used). That blocked pnpm install, the test suite, and desktop packing on Node 26 — increasingly common on contributors' machines.

What

  • better-sqlite3 12.6.2 → 13.0.3 — 13.x migrated to node-addon-api (Node-API), which is ABI-stable across Node majors and ships one prebuilt that works on Node 22/24/26+. No more per-Node-version native breakage.
  • engines.node >=22.12 <26>=22.12 (root/ui/desktop) — the upper cap existed only to block the unbuildable native dep; unnecessary now.

@lancedb/lancedb was already Node-API (napi: true), so it needed no change — better-sqlite3 was the sole Node-26 blocker.

Verified on Node 26.5.1

  • pnpm install — pulls the Node-API prebuilt, no node-gyp, no engine block.
  • Native load — better-sqlite3 opens a DB, SQLite 3.53.4.
  • DB-layer suites store / tenants / security385 tests pass (incl. the entitlements/quotas suites that couldn't run before on Node 26). Typecheck clean.

Our better-sqlite3 usage is minimal (new Database / .pragma / .prepare; no .function/.aggregate/loadExtension/unsafeMode), so the 12→13 major carries no API-surface risk here.

Note: .nvmrc stays 22 as the reference/release-build version (the desktop app bundles Node 22.21.1); contributors can now dev on 22–26+.

better-sqlite3 12.6.2 is a V8-ABI (NAN) build that fails to compile on Node 26
(V8 removed the APIs it used), which blocked install, tests, and desktop packing
on Node 26 — increasingly common on contributors' machines.

better-sqlite3 13.0.3 migrated to node-addon-api (Node-API), which is ABI-stable
across Node majors and ships a single prebuilt that works on Node 22/24/26+.
@lancedb/lancedb was already Node-API, so it needed no change — better-sqlite3
was the sole blocker.

- better-sqlite3 ^12.6.2 → ^13.0.3
- engines.node ">=22.12 <26" → ">=22.12" (root/ui/desktop); the cap is no longer
  needed now that the native dep is Node-API.

Verified on Node 26.5.1: pnpm install (Node-API prebuilt, no node-gyp), native
load (SQLite 3.53.4), and DB-layer suites store/tenants/security — 385 tests
pass. Our better-sqlite3 usage is minimal (new Database/pragma/prepare), so the
12→13 major carries no API surface risk for this repo.

Co-authored-by: Mozi <MoziAI-co@users.noreply.github.com>
@spytensor
spytensor merged commit 3bb1b14 into main Aug 6, 2026
4 checks passed
@spytensor
spytensor deleted the chore/support-node-26 branch August 6, 2026 04:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant