# better-sqlite3: what changed from 12 to 13 - Product: better-sqlite3 (https://whatsnew.fyi/product/better-sqlite3) - Vendor: WiseLibs - Range: changelog entries numbered after v12.12.0 up to and including v13.0.3, stable releases only - Entries below: 4 releases (newest first) - Resolved: 12 is v12.12.0 and 13 is v13.0.3, the newest stable release of each major we track - Carrying security changes: 0 · CVEs mentioned: 0 · Mentioning breaking changes: 0 · Removing or deprecating something: 1 - Page: https://whatsnew.fyi/product/better-sqlite3/compare/12...13 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## What changed (11 changes, grouped by kind) ### Added #### v13.0.2 (2026-07-29) - Add gypfile option to package.json #### v13.0.0 (2026-07-21) - Added db.explain() method for running EXPLAIN queries without needing to supply bound parameters - Added preparedStatement.toString() method for getting the expanded SQL of a prepared statement ### Changed #### v13.0.3 (2026-08-05) - Use Ubuntu 22.04-arm for builds #### v13.0.2 (2026-07-29) - Update SQLite to version 3.53.4 #### v13.0.0 (2026-07-21) - Refactored codebase to use node-addon-api and N-API for compatibility across different versions of Node.js and Electron ### Fixed #### v13.0.2 (2026-07-29) - Validate the parameters of table properly - Fix process aborting from terminating worker threads #### v13.0.1 (2026-07-21) - Fixed a regression in parameter binding where it would be overly strict and reject plain objects from other realms #### v13.0.0 (2026-07-21) - Fixed SqliteError cross-realm and Error.isError compatibility ### Removed #### v13.0.0 (2026-07-21) - Removed deprecated prebuild-install dependency ## Release notes ### v13.0.3 - Date: 2026-08-05 - Version: v13.0.3 - Original notes: https://github.com/WiseLibs/better-sqlite3/releases/tag/v13.0.3 - Permalink: https://whatsnew.fyi/product/better-sqlite3/releases/v13.0.3 - **changed** — Use Ubuntu 22.04-arm for builds ##### What's Changed * use Ubuntu 22.04-arm by @neoxpert in https://github.com/WiseLibs/better-sqlite3/pull/1510 **Full Changelog**: https://github.com/WiseLibs/better-sqlite3/compare/v13.0.2...v13.0.3 ### v13.0.2 - Date: 2026-07-29 - Version: v13.0.2 - Original notes: https://github.com/WiseLibs/better-sqlite3/releases/tag/v13.0.2 - Permalink: https://whatsnew.fyi/product/better-sqlite3/releases/v13.0.2 - **added** — Add gypfile option to package.json - **changed** — Update SQLite to version 3.53.4 - **fixed** — Validate the parameters of table properly - **fixed** — Fix process aborting from terminating worker threads ##### What's Changed * add gypfile option to package.json by @neoxpert in https://github.com/WiseLibs/better-sqlite3/pull/1505 * Update SQLite to version 3.53.4 by @JoshuaWise in https://github.com/WiseLibs/better-sqlite3/pull/1506 * validate the parameters of table properly by @theosotr in https://github.com/WiseLibs/better-sqlite3/pull/1504 * fix: this dependabot configuration does not set a co... in... by @anupamme in https://github.com/WiseLibs/better-sqlite3/pull/1508 * fixed process aborting from terminating worker threads (https://github.com/WiseLibs/better-sqlite3/issues/1507) ##### New Contributors * @theosotr made their first contribution in https://github.com/WiseLibs/better-sqlite3/pull/1504 * @anupamme made their first contribution in https://github.com/WiseLibs/better-sqlite3/pull/1508 **Full Changelog**: https://github.com/WiseLibs/better-sqlite3/compare/v13.0.1...v13.0.2 ### v13.0.1 - Date: 2026-07-21 - Version: v13.0.1 - Original notes: https://github.com/WiseLibs/better-sqlite3/releases/tag/v13.0.1 - Permalink: https://whatsnew.fyi/product/better-sqlite3/releases/v13.0.1 - **fixed** — Fixed a regression in parameter binding where it would be overly strict and reject plain objects from other realms **Full Changelog**: https://github.com/WiseLibs/better-sqlite3/compare/v13.0.0...v13.0.1 Fixed a regression in parameter binding where it would be overly strict and reject plain objects from other realms (e.g., in jest tests). ### v13.0.0 - Date: 2026-07-21 - Version: v13.0.0 - Original notes: https://github.com/WiseLibs/better-sqlite3/releases/tag/v13.0.0 - Permalink: https://whatsnew.fyi/product/better-sqlite3/releases/v13.0.0 - **changed** — Refactored codebase to use node-addon-api and N-API for compatibility across different versions of Node.js and Electron - **removed** — Removed deprecated prebuild-install dependency - **added** — Added db.explain() method for running EXPLAIN queries without needing to supply bound parameters - **added** — Added preparedStatement.toString() method for getting the expanded SQL of a prepared statement - **fixed** — Fixed SqliteError cross-realm and Error.isError compatibility Version `13.0.0` marks a major milestone, as it's the first version of `better-sqlite3` to run on [the N-API](https://nodejs.org/api/n-api.html). This means prebuilt binaries should theoretically work across different versions of Node.js and Electron, and perhaps even other runtimes like Bun. As a result, we've removed the deprecated [`prebuild-install`](https://www.npmjs.com/package/prebuild-install) dependency, and now prebuilt binaries are published directly with the `better-sqlite3` code itself. If your platform/architecture doesn't have a prebuilt binary, it should compile during install as before. ##### What's Changed * Refactored codebase to use node-addon-api by @JoshuaWise in https://github.com/WiseLibs/better-sqlite3/pull/1498 * Added a new [`db.explain()`](https://github.com/WiseLibs/better-sqlite3/blob/master/docs/api.md#explainstring---array-of-rows) method, for running EXPLAIN queries without needing to supply bound parameters. * Added a new [`preparedStatement.toString()`](https://github.com/WiseLibs/better-sqlite3/blob/master/docs/api.md#tostring---string) method, for getting the expanded SQL of a prepared statement. * Fix `SqliteError` cross-realm and `Error.isError` compatibility by @dennismutuku2005 in https://github.com/WiseLibs/better-sqlite3/pull/1473 ##### New Contributors * @dennismutuku2005 made their first contribution in https://github.com/WiseLibs/better-sqlite3/pull/1473 **Full Changelog**: https://github.com/WiseLibs/better-sqlite3/compare/v12.12.0...v13.0.0