npm / @op-engineering/op-sqlite
@op-engineering/op-sqlite
What changed in @op-engineering/op-sqlite 15 to 18, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-21.
2 breaking1 security13 new APIs and options5 performance5 behavior and defaults1 tooling20 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@op-engineering/op-sqlite 1813 changes
Breaking changes 1
crsqlite has been removed.
Security 1
Fixes a use-after-free in the commit hook callback.
New APIs and options 3
Adds support for using op-sqlite on watchOS.
Prepared statements now provide executeSync.
Storage database names can now be customized.
Performance 1
Skips redundant sqlite3_clear_bindings and long long disambiguation on the hot insert path.
Tooling 1
Initial SPM support was added, allowing developers to use SPM with the package.
Fixes and other changes 6
Finalized handles are now preserved.
Transaction commits are now awaited, so callers can rely on commit completion before continuing.
Skips the explicit Kotlin plugin when AGP provides built-in Kotlin.
Unsubscribing a reactive query no longer touches a closed connection.
Fixes the missing Package.swift in the NPM release, so the package includes this file.
Compatibility fixes for 0.87 were added.
@op-engineering/op-sqlite 176 changes
New APIs and options 2
Adds the failOnCreate option.
Read-only databases are now supported.
Performance 1
Various performance improvements were made; the notes do not specify which operations are affected.
Behavior and default changes 1
Raw execution now returns column names.
Fixes and other changes 2
Excludes the libsql_experimental and turso_sdk_kit xcframeworks to fix the sqlcipher iOS build.
Fixes web support for Expo web.
@op-engineering/op-sqlite 167 changes
Breaking changes 1
delete no longer takes any parameters, changing how developers call it.
New APIs and options 3
Adds a method to convert strings more efficiently.
The key-value Storage class can now close its database.
Exposes sqlite3_interrupt() as db.interrupt().
Behavior and default changes 1
The native implementation now uses the SQLCipher key API.
Fixes and other changes 2
Manual UTF-8 parsing was reverted, changing how UTF-8 parsing is handled.
Native ATTACH/DETACH parameters are now bound.
@op-engineering/op-sqlite 1521 changes
New APIs and options 5
Adds React Native Web support.
Adds Turso support.
Memory databases are now supported for Node.
Adds partial, experimental support for using @op-engineering/op-sqlite with Node.js.
Exposes flushPendingReactiveQueries as an API.
Performance 3
libsql switches to a dylib, reducing disk size.
Tried performance optimizations; the notes do not specify their effects.
Simple result creation is faster.
Behavior and default changes 3
On Android, user-supplied sqliteFlags can override performanceMode defaults.
sqlite-vec is updated to support 16kb pages.
Encryption keys can now be empty.
Fixes and other changes 10
Android now uses SQLITE_STRICT_SUBTYPE=1 to match iOS.
Android now uses SQLITE_THREADSAFE=2 to match iOS.
Fixes incorrect boolean casting on macOS.
Fixes sub array insertion.
Updated sqlitevec signatures; the notes do not specify which signatures changed.
Fixes null Android build config flags.
Fixes a threading performance regression.
Fixes a botched podspec script, which may affect iOS package builds.
Fixes invalidated modules not resolving promises.
Fixes the Android external directory absolute path being null.