PackageTrack
Sign in Get early access

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 2026
2024 2025 2026
Release Pre-release

Releases

latest 45
  1. 0.14.4 22 Jul 2026
    Release notes
    • Add beforeOpen callback to native factories in #152
    • Update sqlite3 and sqlite3_web, deprecate flush parameter in #153
    • Allow caching prepared statements in #150

    Full Changelog: sqlite_async-v0.14.3...sqlite_async-v0.14.4

    Open source →
    Release notes
    • Native: Add the NativeSqliteOpenFactory.beforeOpen method, which can be overridden to configure SQLite asynchronously before opening databases.
    • Web: Upgrade package:sqlite3_web to flush IndexedDB writes automatically, deprecate flush().
    • Add SqliteOptions.preparedStatementCacheSize to cache prepared statements (disabled by default).
    Open source →
  2. 0.14.3 10 Jun 2026
    Release notes
    • Include name of navigator lock on abort in #147
    • Support latest sqlite3_web package in #148

    Full Changelog: sqlite_async-v0.14.2...sqlite_async-v0.14.3

    Open source →
    Release notes
    • Include identifier of mutexes when a navigator lock attempt is aborted.
    • Support versions 0.9.x of package:sqlite3_web.
    Open source →
  3. 0.14.2 27 May 2026
    Release notes

    Update to sqlite3_web versions 0.8.x.

    Full Changelog: sqlite_async-v0.14.1...sqlite_async-v0.14.2

    Open source →
    Release notes
    • Support versions 0.8.x of package:sqlite3_web.
    Open source →
  4. 0.14.1 21 Apr 2026
    Release notes
    • Fix update notifications firing before completed transactions in #140

    Full Changelog: sqlite_async-v0.14.0...sqlite_async-v0.14.1

    Open source →
    Release notes
    • Fix update notifications sometimes firing before a write has completed.
    Open source →
  5. 0.14.0 13 Apr 2026
    Release notes
    • Support versions 3.x of the sqlite3 package and 0.7.x of sqlite3_web.
    • Remove the sqlite3_open.dart library, 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 AbstractDefaultSqliteOpenFactory and DefaultSqliteOpenFactory. Use SqliteOpenFactory instead. To provide a custom open factory, import NativeSqliteOpenFactory or WebSqliteOpenFactory with a platform-specific import and extend those classes.
    • Breaking: Remove the maxReaders parameter on SqliteDatabase. Set that parameter on SqliteOptions instead.
    • Breaking: Remove libraries exporting the sqlite3 package:
      • Instead of package:sqlite_async/sqlite3.dart, import package:sqlite3/sqlite3.dart.
      • Instead of package:sqlite_async/sqlite3_common.dart, import package:sqlite3/common.dart.
      • Instead of package:sqlite_async/sqlite3_wasm.dart, import package:sqlite3/wasm.dart.
      • Instead of package:sqlite_async/sqlite3_web.dart, import package:sqlite3_web/sqlite3_web.dart.
    • Breaking: Remove SqliteDatabaseMixin and SqliteQueries. Extend SqliteConnection instead.
    • Breaking: Calls locking the database that fail with a timeout now throw an AbortException instead of a TimeoutException.
    • The throttle parameter on watch and onChange can now be set to null. This also introduces watchUnthrottled and onChangeUnthrottled, which only buffer on paused subscriptions instead of applying a static timeout.
    • Add abortableReadLock and abortableWriteLock. The methods can be used to acquire a read/write context with a flexible abort signal instead of a static timeout.
    Open source →
    Release notes
    • Support versions 3.x of the sqlite3 package and 0.7.x of sqlite3_web.
    • Remove the sqlite3_open.dart library, 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 AbstractDefaultSqliteOpenFactory and DefaultSqliteOpenFactory. Use SqliteOpenFactory instead. To provide a custom open factory, import NativeSqliteOpenFactory or WebSqliteOpenFactory with a platform-specific import and extend those classes.
    • Breaking: Remove the maxReaders parameter on SqliteDatabase. Set that parameter on SqliteOptions instead.
    • Breaking: Remove libraries exporting the sqlite3 package:
      • Instead of package:sqlite_async/sqlite3.dart, import package:sqlite3/sqlite3.dart.
      • Instead of package:sqlite_async/sqlite3_common.dart, import package:sqlite3/common.dart.
      • Instead of package:sqlite_async/sqlite3_wasm.dart, import package:sqlite3/wasm.dart.
      • Instead of package:sqlite_async/sqlite3_web.dart, import package:sqlite3_web/sqlite3_web.dart.
    • Breaking: Remove SqliteDatabaseMixin and SqliteQueries. Extend SqliteConnection instead.
    • Breaking: Calls locking the database that fail with a timeout now throw an AbortException instead of a TimeoutException.
    • The throttle parameter on watch and onChange can now be set to null. This also introduces watchUnthrottled and onChangeUnthrottled, which only buffer on paused subscriptions instead of applying a static timeout.
    • Add abortableReadLock and abortableWriteLock. The methods can be used to acquire a read/write context with a flexible abort signal instead of a static timeout.
    Open source →
  6. 0.14.0-wip.0 01 Apr 2026 pre-release
    Release notes

    Note: This version of sqlite_async is still in development and there might be additional API changes between this release and the final 0.14.0 version. This release is mostly meant for internal testing.

    • Support versions 3.x of the sqlite3 package and 0.6.x of sqlite3_web.
    • Remove the sqlite3_open.dart library, 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 AbstractDefaultSqliteOpenFactory and DefaultSqliteOpenFactory. Use SqliteOpenFactory instead. To provide a custom open factory, import NativeSqliteOpenFactory or WebSqliteOpenFactory with a platform-specific import and extend those classes.
    • Breaking: Remove the maxReaders parameter on SqliteDatabase. Set that parameter on SqliteOptions instead.
    • Breaking: Remove libraries exporting the sqlite3 package:
      • Instead of package:sqlite_async/sqlite3.dart, import package:sqlite3/sqlite3.dart.
      • Instead of package:sqlite_async/sqlite3_common.dart, import package:sqlite3/common.dart.
      • Instead of package:sqlite_async/sqlite3_wasm.dart, import package:sqlite3/wasm.dart.
      • Instead of package:sqlite_async/sqlite3_web.dart, import package:sqlite3_web/sqlite3_web.dart.
    • Breaking: Remove SqliteDatabaseMixin and SqliteQueries. Extend SqliteConnection instead.
    • Breaking: Calls locking the database that fail with a timeout now throw an AbortException instead of a TimeoutException.
    • The throttle parameter on watch and onChange can now be set to null. This also introduces watchUnthrottled and onChangeUnthrottled, which only buffer on paused subscriptions instead of applying a static timeout.
    • Add abortableReadLock and abortableWriteLock. The methods can be used to acquire a read/write context with a flexible abort signal instead of a static timeout.
    Open source →
  7. 0.13.1 19 Jan 2026
    Release notes
    • Add executeMultiple to run multiple statements not using parameters.
    Open source →
    Release notes
    • Add executeMultiple to run multiple statements not using parameters.
    Open source →
  8. 0.13.0 04 Nov 2025
    Release notes
    • Update sqlite3_web to 0.4.0
    Open source →
  9. 0.12.2 13 Oct 2025
    Release notes
    • Add withAllConnections method to run statements on all connections in the pool.
    Open source →
  10. 0.12.1 08 Aug 2025
    Release notes
    • Fix distributing updates from shared worker.
    Open source →
  11. 0.12.0 08 Aug 2025
    Release notes
    • Avoid large transactions creating a large internal update queue.
    Open source →
  12. 0.11.8 30 Jul 2025
    Release notes
    • Support nested transactions (emulated with SAVEPOINT statements).
    • Fix web compilation issues with version 2.8.0 of package:sqlite3.
    Open source →
  13. 0.11.7 03 Jun 2025
    Release notes
    • 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.
    Open source →
  14. 0.11.6 28 May 2025
    Release notes
    • Native: Consistently report errors when opening the database instead of causing unhandled exceptions.
    Open source →
  15. 0.11.5 22 May 2025
    Release notes
    • 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_async tag.
    • Fix cancelling watch() queries sometimes taking longer than necessary.
    • Fix web databases not respecting lock timeouts.
    Open source →
  16. 0.11.4 05 Feb 2025
    Release notes
    • Add SqliteConnection.synchronousWrapper and SqliteDatabase.singleConnection. Together, these can be used to wrap raw CommonDatabase instances from package:sqlite3 as a Database (without an automated worker or isolate setup). This can be useful in tests where synchronous access to the underlying database is convenient.
    Open source →
  17. 0.11.3 03 Feb 2025
    Release notes
    • Support being compiled with package:build_web_compilers.
    Open source →
  18. 0.11.2 27 Jan 2025
    Release notes
    • Support latest version of package:sqlite3_web.
    • Support dart2wasm.
    Open source →
  19. 0.11.1 21 Jan 2025
    Release notes
    • Remove remaining dart:js_util imports in favor of new interop APIs.
    • Add WebSqliteOpenFactory with web-specific behavior for open factories.
    Open source →
  20. 0.11.0 06 Nov 2024
    Release notes
    • Automatically flush IndexedDB storage to fix durability issues
    Open source →
  21. 0.10.1 01 Nov 2024
    Release notes
    • For database setups not using a shared worker, use a BroadcastChannel to share updates across different tabs.
    Open source →
  22. 0.10.0 28 Oct 2024
    Release notes
    • 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.
    Open source →
  23. 0.9.1 28 Oct 2024
    Release notes
    • 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
    Open source →
  24. 0.9.0 03 Sep 2024
    Release notes
    • Support the latest version of package:web and package:sqlite3_web

    • Export sqlite3 open for packages that depend on sqlite_async

    Open source →
  25. 0.8.3 21 Aug 2024
    Release notes
    • Updated web database implementation for get and getOptional. Fixed refreshSchema not working in web.
    Open source →
  26. 0.8.2 20 Aug 2024
    Release notes
    • FEAT: Added refreshSchema(), allowing queries and watch calls to work against updated schemas.
    Open source →
  27. 0.8.1 10 Jul 2024
    Release notes
    • Added Navigator locks for web Mutexs.
    Open source →
  28. 0.8.0 04 Jul 2024
    Release notes
    • Added web support (web functionality is in beta)
    Open source →
  29. 0.7.0 25 Jun 2024
    Release notes
    • BREAKING CHANGE: Update all Database types to use a CommonDatabase interface.
    • Update openDB and open methods 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.
    Open source →
  30. 0.7.0-alpha.5 27 Jun 2024 pre-release
    Release notes
    • The dependency for the Drift package is now removed in favour of using the new sqlite3_web package.
    • 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
    Open source →
  31. 0.7.0-alpha.4 30 May 2024 pre-release
    Release notes
    • Add latest changes from master
    Open source →
  32. 0.7.0-alpha.3 17 Apr 2024 pre-release
    Release notes
    • Add latest changes from master
    Open source →
  33. 0.7.0-alpha.2 05 Mar 2024 pre-release
    Release notes Open source →
  34. 0.7.0-alpha.1 14 Feb 2024 pre-release
    Release notes
    • Added initial support for web platform.
    Open source →
  35. 0.6.1 04 Apr 2024
    Release notes
    • Fix errors when closing a SqliteDatabase.
    • Configure SQLite busy_timeout (30s default). This fixes "database is locked (code 5)" error when using multiple SqliteDatabase instances 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.
    Open source →
  36. 0.6.0 03 Jan 2024
    Release notes
    • 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.closed and db/tx.getAutoCommit() to check whether transactions are active.
    • Requires sqlite3 ^2.3.0 and Dart ^3.2.0.
    Open source →
  37. 0.5.2 07 Sep 2023
    Release notes
    • Fix releasing of locks when closing `SharedMutex``.
    Open source →
  38. 0.5.1 03 Aug 2023
    Release notes
    • Fix watch when called with query parameters.
    • Clean up -wal and -shm files on close.
    Open source →
  39. 0.5.0 24 Jul 2023
    Release notes
    • No code changes.
    • Updated dependencies to support sqlite3 2.x.
    Open source →
  40. 0.4.0 29 Jun 2023
    Release notes
    • Ensure database connections are cleaned up on unhandled Isolate errors.
    • Minor performance improvements.
    Open source →
  41. 0.3.0 05 Apr 2023
    Release notes
    • Better error messages for recursive transactions.
    • Breaking change: Error by default when starting a read transaction within a write transaction.
    Open source →
  42. 0.2.1 28 Mar 2023
    Release notes
    • Fix update notifications missing the first update.
    Open source →
  43. 0.2.0 28 Mar 2023
    Release notes
    • Initial version.
    Open source →
  44. 0.1.1 28 Mar 2023

    Nothing published for this version

  45. 0.1.0 27 Mar 2023

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive