All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Flutter package publishing: the pub.dev release now ships the complete set of native libraries.
- Swift Package on Xcode 26: the package now uses a binary target with a versioned macOS framework, fixing build failures for apps that depend on
sqlite-jsvia Swift Package Manager.
- Flutter package on iOS: iOS device and simulator binaries are now shipped as separate slices, so Flutter apps build and run correctly on both.
- Parameter binding in
db.exec(): values can now be passed as extra arguments and are bound to the statement's placeholders — e.g.db.exec("SELECT ? AS a, ? AS b", 42, "hello"). Supported types arenull, numbers,BigInt, booleans, strings andArrayBuffer. Previously all placeholders were left unbound. BigIntreturn values from JavaScript functions are now converted to SQLite INTEGER instead of silently becomingNULL.- String exceptions (
throw "message") now surfacemessageas the SQL error text instead of a generic error.
- Updated the embedded QuickJS engine to 0.12.1, including support for import attributes.
- Crashes when an aggregate or window function failed to initialize: SQLite still invokes the final/value/inverse callbacks after a failed step, which dereferenced a NULL context and crashed the process.
- Crashes when using a
Rowsetafter it was finalized (next(),get(),name(),toArray()). js_load_text()/js_load_blob()on files larger than one byte always failed to load due to a wrongfread()argument order.- Redundant writes to the JavaScript functions table: the duplicate check never matched, so every call rewrote the row. A failure while preparing the write could also lead to undefined behavior.
- Wrong error reported for window functions: an error raised in
valuewas reported as coming fromfinal, and an error ininverseas coming fromstep. - Memory leaks on extension initialization failure and when the JavaScript runtime could not be created.
- Flutter package: native libraries are now included in the published pub.dev package.
- Flutter package with prebuilt native libraries for all supported platforms.
- Android 15+ compatibility: the Android libraries are now built with 16 KB page size support, required by recent devices and by Google Play.
- Node package
@sqliteai/sqlite-js, shipping the prebuilt extension for Node.js projects.
- Memory leak when the initialization code of an aggregate function failed to evaluate.
- Android AAR package, so the extension can be added to Android projects as a Gradle dependency.
- Swift Package Manager support: the repository can be added directly as a package dependency in Xcode projects.
- Apple
xcframeworkand musl (Alpine/static) builds. macOS and iOS binaries are now signed and notarized.
- The license now explicitly grants usage for open-source projects.
- Linux builds failing to link against the math library.
js_set_max_stack_size()to configure the JavaScript engine stack limit. Set it to0when the same database connection or runtime is used from multiple threads, to avoid spurious "stack overflow" errors.
- Memory leaks when a JavaScript function raised an error.
- Window function state leaking between invocations: the aggregate context was not reset between separate calls, so results could be affected by a previous query. Related memory leaks in the JavaScript context were also fixed.
- Crash on shutdown caused by an incorrect teardown order of the JavaScript runtime.
- Android and Apple builds producing binaries for the wrong architectures.
- Android and iOS binaries to the official releases.
Initial public release.
- Custom SQLite functions written in JavaScript:
js_create_scalar(),js_create_aggregate(),js_create_window()andjs_create_collation(). js_eval()to evaluate arbitrary JavaScript from SQL, andjs_load_text()/js_load_blob()to load code from a file.js_init_table()to persist JavaScript functions inside the database, so they are automatically restored — and can be synced across devices — when the database is opened.dbglobal object to query the current database from JavaScript, together with theRowsetclass for iterating results.js_version()to retrieve the extension version.- Prebuilt binaries for Linux (x86/ARM), macOS (x86/ARM) and Windows.