sqlite_async
High-performance asynchronous interface for SQLite on Dart and Flutter.
0.14.4
425K downloads/mo
#566 most downloaded on pub.dev
powersync-ja/sqlite_async.dart
What this package is like to depend on
Last release 1 months ago
22 Jul 2026
Ships fairly regularly
a new release about every 6 weeks
Nearly every release is documented
notes for 37 of 39 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
45 releases · first in 2023
9 releases in the last 12 months
see the full history below
Release timeline
45 releases · Mar 2023 to Jul 2026Releases
latest 45-
0.14.422 Jul 2026Release notes
Open source →- Add beforeOpen callback to native factories in #152
- Update
sqlite3andsqlite3_web, deprecateflushparameter in #153 - Allow caching prepared statements in #150
Full Changelog: sqlite_async-v0.14.3...sqlite_async-v0.14.4
Release notes
Open source →- Native: Add the
NativeSqliteOpenFactory.beforeOpenmethod, which can be overridden to configure SQLite asynchronously before opening databases. - Web: Upgrade
package:sqlite3_webto flush IndexedDB writes automatically, deprecateflush(). - Add
SqliteOptions.preparedStatementCacheSizeto cache prepared statements (disabled by default).
-
0.14.310 Jun 2026Release notes
Open source →- Include identifier of mutexes when a navigator lock attempt is aborted.
- Support versions
0.9.xofpackage:sqlite3_web.
-
0.14.227 May 2026Release notes
Open source →Update to
sqlite3_webversions0.8.x.Full Changelog: sqlite_async-v0.14.1...sqlite_async-v0.14.2
-
0.14.121 Apr 2026Release notes
Open source →- Fix update notifications firing before completed transactions in #140
Full Changelog: sqlite_async-v0.14.0...sqlite_async-v0.14.1
-
0.14.013 Apr 2026Release notes
Open source →- Support versions 3.x of the
sqlite3package and 0.7.x ofsqlite3_web. - Remove the
sqlite3_open.dartlibrary, SQLite libraries are no longer loaded through Dart. - Breaking: Rewrite the native connection pool implementation.
- Remove isolate connection factories. Simply open the same database on another isolate, it's safe to do so now.
- It is no longer possible to register user-defined functions in Dart. Extensions providing functions in native code can still be used.
- Breaking: Remove
AbstractDefaultSqliteOpenFactoryandDefaultSqliteOpenFactory. UseSqliteOpenFactoryinstead. To provide a custom open factory, importNativeSqliteOpenFactoryorWebSqliteOpenFactorywith a platform-specific import and extend those classes. - Breaking: Remove the
maxReadersparameter onSqliteDatabase. Set that parameter onSqliteOptionsinstead. - Breaking: Remove libraries exporting the
sqlite3package:- Instead of
package:sqlite_async/sqlite3.dart, importpackage:sqlite3/sqlite3.dart. - Instead of
package:sqlite_async/sqlite3_common.dart, importpackage:sqlite3/common.dart. - Instead of
package:sqlite_async/sqlite3_wasm.dart, importpackage:sqlite3/wasm.dart. - Instead of
package:sqlite_async/sqlite3_web.dart, importpackage:sqlite3_web/sqlite3_web.dart.
- Instead of
- Breaking: Remove
SqliteDatabaseMixinandSqliteQueries. ExtendSqliteConnectioninstead. - Breaking: Calls locking the database that fail with a timeout now throw an
AbortExceptioninstead of aTimeoutException. - The
throttleparameter onwatchandonChangecan now be set tonull. This also introduceswatchUnthrottledandonChangeUnthrottled, which only buffer on paused subscriptions instead of applying a static timeout. - Add
abortableReadLockandabortableWriteLock. The methods can be used to acquire a read/write context with a flexible abort signal instead of a static timeout.
Release notes
Open source →- Support versions 3.x of the
sqlite3package and 0.7.x ofsqlite3_web. - Remove the
sqlite3_open.dartlibrary, SQLite libraries are no longer loaded through Dart. - Breaking: Rewrite the native connection pool implementation.
- Remove isolate connection factories. Simply open the same database on another isolate, it's safe to do so now.
- It is no longer possible to register user-defined functions in Dart. Extensions providing functions in native code can still be used.
- Breaking: Remove
AbstractDefaultSqliteOpenFactoryandDefaultSqliteOpenFactory. UseSqliteOpenFactoryinstead. To provide a custom open factory, importNativeSqliteOpenFactoryorWebSqliteOpenFactorywith a platform-specific import and extend those classes. - Breaking: Remove the
maxReadersparameter onSqliteDatabase. Set that parameter onSqliteOptionsinstead. - Breaking: Remove libraries exporting the
sqlite3package:- Instead of
package:sqlite_async/sqlite3.dart, importpackage:sqlite3/sqlite3.dart. - Instead of
package:sqlite_async/sqlite3_common.dart, importpackage:sqlite3/common.dart. - Instead of
package:sqlite_async/sqlite3_wasm.dart, importpackage:sqlite3/wasm.dart. - Instead of
package:sqlite_async/sqlite3_web.dart, importpackage:sqlite3_web/sqlite3_web.dart.
- Instead of
- Breaking: Remove
SqliteDatabaseMixinandSqliteQueries. ExtendSqliteConnectioninstead. - Breaking: Calls locking the database that fail with a timeout now throw an
AbortExceptioninstead of aTimeoutException. - The
throttleparameter onwatchandonChangecan now be set tonull. This also introduceswatchUnthrottledandonChangeUnthrottled, which only buffer on paused subscriptions instead of applying a static timeout. - Add
abortableReadLockandabortableWriteLock. The methods can be used to acquire a read/write context with a flexible abort signal instead of a static timeout.
- Support versions 3.x of the
-
0.14.0-wip.001 Apr 2026 pre-releaseRelease notes
Open source →Note: This version of
sqlite_asyncis still in development and there might be additional API changes between this release and the final0.14.0version. This release is mostly meant for internal testing.- Support versions 3.x of the
sqlite3package and 0.6.x ofsqlite3_web. - Remove the
sqlite3_open.dartlibrary, SQLite libraries are no longer loaded through Dart. - Breaking: Rewrite the native connection pool implementation.
- Remove isolate connection factories. Simply open the same database on another isolate, it's safe to do so now.
- It is no longer possible to register user-defined functions in Dart. Extensions providing functions in native code can still be used.
- Breaking: Remove
AbstractDefaultSqliteOpenFactoryandDefaultSqliteOpenFactory. UseSqliteOpenFactoryinstead. To provide a custom open factory, importNativeSqliteOpenFactoryorWebSqliteOpenFactorywith a platform-specific import and extend those classes. - Breaking: Remove the
maxReadersparameter onSqliteDatabase. Set that parameter onSqliteOptionsinstead. - Breaking: Remove libraries exporting the
sqlite3package:- Instead of
package:sqlite_async/sqlite3.dart, importpackage:sqlite3/sqlite3.dart. - Instead of
package:sqlite_async/sqlite3_common.dart, importpackage:sqlite3/common.dart. - Instead of
package:sqlite_async/sqlite3_wasm.dart, importpackage:sqlite3/wasm.dart. - Instead of
package:sqlite_async/sqlite3_web.dart, importpackage:sqlite3_web/sqlite3_web.dart.
- Instead of
- Breaking: Remove
SqliteDatabaseMixinandSqliteQueries. ExtendSqliteConnectioninstead. - Breaking: Calls locking the database that fail with a timeout now throw an
AbortExceptioninstead of aTimeoutException. - The
throttleparameter onwatchandonChangecan now be set tonull. This also introduceswatchUnthrottledandonChangeUnthrottled, which only buffer on paused subscriptions instead of applying a static timeout. - Add
abortableReadLockandabortableWriteLock. The methods can be used to acquire a read/write context with a flexible abort signal instead of a static timeout.
- Support versions 3.x of the
-
0.13.119 Jan 2026 -
0.13.004 Nov 2025 -
0.12.213 Oct 2025Release notes
Open source →- Add
withAllConnectionsmethod to run statements on all connections in the pool.
- Add
-
0.12.108 Aug 2025 -
0.12.008 Aug 2025 -
0.11.830 Jul 2025Release notes
Open source →- Support nested transactions (emulated with
SAVEPOINTstatements). - Fix web compilation issues with version
2.8.0ofpackage:sqlite3.
- Support nested transactions (emulated with
-
0.11.703 Jun 2025Release notes
Open source →- Shared worker: Release locks owned by connected client tab when it closes.
- Fix web concurrency issues: Consistently apply a shared mutex or let a shared worker coordinate access.
-
0.11.628 May 2025Release notes
Open source →- Native: Consistently report errors when opening the database instead of causing unhandled exceptions.
-
0.11.522 May 2025Release notes
Open source →- Allow profiling queries. Queries are profiled by default in debug and profile builds, the runtime
for queries is added to profiling timelines under the
sqlite_asynctag. - Fix cancelling
watch()queries sometimes taking longer than necessary. - Fix web databases not respecting lock timeouts.
- Allow profiling queries. Queries are profiled by default in debug and profile builds, the runtime
for queries is added to profiling timelines under the
-
0.11.405 Feb 2025Release notes
Open source →- Add
SqliteConnection.synchronousWrapperandSqliteDatabase.singleConnection. Together, these can be used to wrap rawCommonDatabaseinstances frompackage:sqlite3as aDatabase(without an automated worker or isolate setup). This can be useful in tests where synchronous access to the underlying database is convenient.
- Add
-
0.11.303 Feb 2025 -
0.11.227 Jan 2025 -
0.11.121 Jan 2025Release notes
Open source →- Remove remaining
dart:js_utilimports in favor of new interop APIs. - Add
WebSqliteOpenFactorywith web-specific behavior for open factories.
- Remove remaining
-
0.11.006 Nov 2024 -
0.10.101 Nov 2024Release notes
Open source →- For database setups not using a shared worker, use a
BroadcastChannelto share updates across different tabs.
- For database setups not using a shared worker, use a
-
0.10.028 Oct 2024Release notes
Open source →- Add the
exposeEndpoint()method available on web databases. It returns a serializable description of the database endpoint that can be sent across workers. This allows sharing an opened database connection across workers.
- Add the
-
0.9.128 Oct 2024Release notes
Open source →- Support version ^0.2.0 of package:sqlite3_web
- Fix update notifications to only fire outside transactions
- Fix update notifications to be debounced on web
-
0.9.003 Sep 2024Release notes
Open source →-
Support the latest version of package:web and package:sqlite3_web
-
Export sqlite3
openfor packages that depend onsqlite_async
-
-
0.8.321 Aug 2024Release notes
Open source →- Updated web database implementation for get and getOptional. Fixed refreshSchema not working in web.
-
0.8.220 Aug 2024Release notes
Open source →- FEAT: Added
refreshSchema(), allowing queries and watch calls to work against updated schemas.
- FEAT: Added
-
0.8.110 Jul 2024 -
0.8.004 Jul 2024 -
0.7.025 Jun 2024Release notes
Open source →- BREAKING CHANGE: Update all Database types to use a
CommonDatabaseinterface. - Update
openDBandopenmethods to be synchronous. - Fix
ArgumentError (Invalid argument(s): argument value for 'return_value' is null)in sqlite3 when closing the database connection by upgrading to version 2.4.4.
- BREAKING CHANGE: Update all Database types to use a
-
0.7.0-alpha.527 Jun 2024 pre-releaseRelease notes
Open source →- The dependency for the
Driftpackage is now removed in favour of using the newsqlite3_webpackage. - A new implementation for WebDatabase is used for SQL database connections on web.
- New exports are added for downstream consumers of this package to extended custom workers with custom SQLite function capabilities.
- Update minimum Dart SDK to 3.4.0
- The dependency for the
-
0.7.0-alpha.430 May 2024 pre-release -
0.7.0-alpha.317 Apr 2024 pre-release -
0.7.0-alpha.205 Mar 2024 pre-releaseRelease notes
Open source →- Fix re-using a shared Mutex from https://github.com/powersync-ja/sqlite_async.dart/pull/31
-
0.7.0-alpha.114 Feb 2024 pre-release -
0.6.104 Apr 2024Release notes
Open source →- Fix errors when closing a
SqliteDatabase. - Configure SQLite
busy_timeout(30s default). This fixes "database is locked (code 5)" error when using multipleSqliteDatabaseinstances for the same database. - Fix errors when opening multiple connections at the same time, e.g. when running multiple read queries concurrently right after opening the dtaabase.
- Improved error handling when an Isolate crashes with an uncaught error.
- Rewrite connection pool logic to fix performance issues when multiple read connections are open.
- Fix using
SqliteDatabase.isolateConnectionFactory()in multiple isolates.
- Fix errors when closing a
-
0.6.003 Jan 2024Release notes
Open source →- Allow catching errors and continuing the transaction. This is technically a breaking change, although it should not be an issue in most cases.
- Add
tx.closedanddb/tx.getAutoCommit()to check whether transactions are active. - Requires sqlite3 ^2.3.0 and Dart ^3.2.0.
-
0.5.207 Sep 2023 -
0.5.103 Aug 2023Release notes
Open source →- Fix
watchwhen called with query parameters. - Clean up
-waland-shmfiles on close.
- Fix
-
0.5.024 Jul 2023 -
0.4.029 Jun 2023Release notes
Open source →- Ensure database connections are cleaned up on unhandled Isolate errors.
- Minor performance improvements.
-
0.3.005 Apr 2023Release notes
Open source →- Better error messages for recursive transactions.
- Breaking change: Error by default when starting a read transaction within a write transaction.
-
0.2.128 Mar 2023 -
0.2.028 Mar 2023 -
0.1.128 Mar 2023Nothing published for this version
-
0.1.027 Mar 2023Nothing published for this version