- DATE:
- AUTHOR:
- PowerSync Product Team
JS Web Client SDK: v1.27.1
We are pleased to announce the release of version 1.27.1 of the PowerSync JavaScript/web client SDK.
See the full changelog below.
Have any questions or feedback? Chat with us and the PowerSync community on Discord.
Changelog
v1.27.1 - 2025-10-03
[ADDED] Expose connection options to simplify integrations and allow dynamic access to connection parameters. (PR #726)
v1.27.0 - 2025-09-29
[ADDED] Introduced sync streams as an early alpha release to enable more dynamic sync. Follow the discussion in #sync-streams-alpha in Discord. (PR #707)
[FIXED] A deadlock issue affecting OPFS when used with the Rust client, preventing potential stalls during sync across multiple tabs. (PR #725)
[IMPROVED] Updated the
powersync-sqlite-coreextension to v0.4.6. (PR #720)
v1.26.2 - 2025-09-17
[FIXED] A potential race condition in
WatchedQuerieswhenupdateSettingsis called frequently. (PR #713)[FIXED] The
TriggerManagertrackTableDiffAPI example, which showed an incorrect method. (PR #711)
v1.26.1 - 2025-09-04
[ADDED]
clientImplementationfield toSyncStatusreporting whether the default JavaScript-based vs new Rust-based sync client is being used. (PR #704)
[IMPROVED] Updated the
powersync-sqlite-coreextension to v0.4.5. (PR #702)[FIXED] An issue where an already fetching query would handle a query change and briefly report
isFetchingbeing false before becoming true again. (PR #706)
v1.26.0 - 2025-08-28
[ADDED]
getCrudTransactions(), returning an async iterator of transactions. This can be used to batch transactions when uploading CRUD data. (PR #693)[ADDED] Trigger‑based table diff tracking: Added an experimental feature that enables diff tracking using SQLite triggers, which is more efficient than differential watch queries on large datasets. Learn more in the release notes. (PR #663)
[IMPROVED] Updated the
powersync-sqlite-coreextension to v0.4.4. (PR #699)[FIXED] An issue where the Rust sync implementation might not disconnect in some circumstances. (PR #700)
v1.25.1 - 2025-08-08
[FIXED] Rust sync client: Fixed warning when reconnecting during CRUD uploads. (PR #676)
[DEPRECATED] Marked the
AbstractPowerSyncDatabase.disposemethod as deprecated. TheAbstractPowerSyncDatabase.closemethod should be used instead. (PR #683)
v1.25.0 - 2025-07-30
[ADDED] Incremental and differential watched queries implementation. Learn more in the docs. (PR #614)
[ADDED]
@powersync/adapter-sql-jsto support SQL.js. (PR #647)[IMPROVED] Export
AsyncDatabaseConnection(and related) types for internal use. (PR #655)[FIXED] A bug where a WebSocket connection timeout could cause an uncaught exception. (PR #671)
[FIXED] A warning about raw tables being used when they're not. (PR #673)
v1.24.0 - 2025-07-17
[ADDED] Experimental support for raw SQLite tables, giving you full control over the table structure to sync into.
While PowerSync manages tables as JSON views by default, raw tables have to be created by the application
developer. For more information about raw tables, see the release notes. (PR #654)[IMPROVED] Propagate logger from
PowerSyncDatabaseto streaming sync and remote implementations, and tweak some log messages. (PR #659)[IMPROVED] Updated the
powersync-sqlite-coreextension to v0.4.2. (PR #656)[FIXED] Sync stream delays during CRUD upload. (PR #661)
[INTERNAL] Removed shared mutex implementation of
readLockandwriteLock. (PR #662)
v1.23.2 - 2025-07-08
[FIXED] Compilation error due to broken import in
SyncProgress.d.ts(PR #657)
v1.23.1 - 2025-07-07
[IMPROVED] Added a CommonJS build for
@powersync/commonand re-orderedexportssorequire()loads the new.cjsbundle instead of the ESM build. (PR #644)[IMPROVED] Web clients now open write transactions with
BEGIN EXCLUSIVEinstead ofBEGIN, skipping the read→write upgrade step and reducing WA-sqlite lock retries. (PR #651)[IMPROVED] WebSocket keepalive tracking: treat any message as activity, extend lifetime to 90s, and defer BSON parsing which reduces keepalive errors on slow or busy connections. (PR #648)
Several fixes on the experimental Rust-based sync client:
[FIXED] After reconnecting, the sync client now properly uploads CRUD changes queued while offline; includes
DataStreamtweaks to allow inserting data while blocked onlowWater. (PR #650)[FIXED] The sync client reports correct
lastSyncedAtby converting UTC seconds to milliseconds, fixing the incorrect “1970” timestamps. (PR #649)[FIXED] The sync client’s
connect()promise no longer resolves before a connection was made. (PR #643)
[INTERNAL] Removed unused compaction logic. (PR #639)
v1.23.0 - 2025-06-18
[ADDED] An experimental sync client delivering improved sync performance. Learn more about it in the release notes.
[IMPROVED] Updated the
powersync-sqlite-coreextension to v0.4.0.[FIXED] Include metadata and previous values when serializing CRUD entries to JSON. (PR #631)
v1.22.0 - 2025-06-09
[IMPROVED] Behavior when connect is called multiple times in quick succession. Updating client parameters should now be more responsive. (PR #607)
[FIXED] A bug where changes in
SyncStatusdownloadErroranduploadErrormight not be reported. (PR #607)
v1.21.1 - 2025-06-02
[FIXED] Download progress reporting during compacting and defragmenting actions to prevent values from exceeding expected ranges. (PR #616)
v1.21.0 - 2025-05-27
[IMPROVED] Credentials management and error handling. Credentials are invalidated when they expire or become invalid based on responses from the PowerSync Service. The frequency of credential fetching has been reduced as a result of this work. (PR #604)
[IMPROVED] The sync worker now communicates credential invalidation to tabs. (PR #604)
[FIXED] An issue where the broadcast logger wasn't being passed to
WebRemote, causing worker remote logs not to be broadcasted to the tab's logs. (PR #602)
v1.20.1 - 2025-05-08
[ADDED] Exposed new table options allowing for more granular control over update tracking and metadata handling. (PR #578)
trackPrevious: PopulatesCrudEntry.previousValues, so you can see both the old and new values during an update.trackMetadata: Adds a_metadatacolumn to the table. Use this to store any custom metadata for uploads—accessible viaCrudEntry.metadata.ignoreEmptyUpdates: Skips generating CRUD entries when no data actually changes—reduces noise inuploadData.
[FIXED] An issue where
last_opwas being updated for lower-priority buckets during partial checkpoint completions. (PR #586)
v1.20.0 - 2025-05-02
[ADDED] Report real-time progress information about downloads through
SyncStatus.downloadProgress.(PR #555)[IMPROVED] Updated the
powersync-sqlite-coreextension to v0.3.14.[FIXED] An infinite loop when multiple tabs using
WASQLiteVFS.OPFSCoopSyncVFSare using the database concurrently.
v1.19.0 - 2025-04-24
[ADDED] Added a unified logger utility across common, web, and react-native packages, eliminating the need for consumers to manage
js-loggerdependencies separately. (PR #570)[IMPROVED] Standardized logging across web, node, attachments, react, and vue packages by replacing
console.xxx()calls with proper log level handling. (PR #565)
v1.18.0 - 2025-04-08
[IMPROVED] Updated the
copy-assetsscript to resolvenode_modulesusingrequire.resolve, allowing for cases where where thenode_moduleslocation might differ such as in a monorepo. (PR #561)
v1.17.2 - 2025-04-04
[FIXED] A race condition where checkpoints during uploads were not being applied. (PR #558)
v1.17.1 - 2025-04-02
[ADDED] Now exposing download and upload errors in
SyncStatusvia thedownloadErroranduploadErrorproperties. (PR #550)
v1.17.0 - 2025-03-27
[FIXED] Ensured navigator locks are acquired with a unique key to prevent issues with multiple
connect()calls breaking sync, seen especially in React'sStrictModeand when using client parameters. (PR #546)
v1.16.0 - 2025-03-27
[ADDED] Introduced
executeRawto allow Drizzle ORM to correctly map columns in query results, preventing issues with duplicate column names during joins. (PR #482)
[FIXED] Prevented web encryption from crashing during initialization by reordering the cache_size and encryption pragmas. (PR #537)
v1.15.0 - 2025-03-13
[FIXED] A deadlock issue occurring during sync when browser tabs enter a sleeping state while using the Origin Private File System (OPFS) Virtual File System (VFS). (PR #498)
v1.14.2 - 2025-03-10
[ADDED] Support for sync bucket priorities to sync critical data first. Learn more.
[IMPROVED] Unit tests by updating Vitest and Playwright to their latest versions and restructuring shared tests, resulting in more reliable CI test passes. (PR #520)
[FIXED] Raised the minimum required version for the
powersync-sqlite-coreextension to v0.3.11 to ensure compatibility with theps_sync_statefor restoringlastSyncedAtinformation.[FIXED] Updated
powersync-sqlite-coreto v0.3.12, which fixespowersync_last_synced_at()returning stale information.[FIXED] A race condition which occurred when closing a database (DBAdapter) asynchronously. This ensures a DBAdapter should be completely closed when
powersync.closehas been called.
v1.14.1
[FIXED] A bug where using OPFS and reconnecting to PowerSync would cause upload triggers to fail.
v1.14.0
[ADDED] A
fetchStrategyoption to theconnectmethod, allowing you to choose eitherbufferedorsequentialfor the WebSocket connect option. Internally the functionality ofbufferedwas used by default, but now it can be switched to thesequentialmode. This changes the WebSocket sync queue to only process one sync event at a time, improving known keep-alive issues for lower-end hardware with minimal impact on sync performance.[ADDED] A
cacheSizeKboption to the SQLite database configuration, defaulting to 50MB max cache size (versus the SQLite default of 2MB). This has a big impact on IndexedDB - see powersync-ja/powersync-sqlite-core#56 (comment).
export const db = new PowerSyncDatabase({ schema: AppSchema, database: { dbFilename: 'example.db', cacheSizeKb: 40000 } });v1.13.1
[ADDED]
retryDelayMsandcrudUploadThrottleMsoptions to theconnectmethod so that the values can be dynamically changed upon reconnecting.
v1.13.0
[ADDED] Support for OPFS virtual filesystem.
v1.12.3
[FIXED] Updated
powersync-sqlite-coreto v0.3.8, which fixes a view migration issue (see details).[IMPROVED] Increase maximum amount of columns from 63 to 1999.
v1.12.2
[FIXED] A rare issue where local changes could be reverted when a replication delay is present (see details).
[ADDED] Additional validation when creating the client-side schema.
v1.12.1
Updated dependencies.
v1.12.0
[ADDED] A CLI utility that can be invoked with
npx powersync-web copy-assetsorpnpm powersync-web copy-assetswhich can be used in platforms like React Native Web to configure web workers.[ADDED] A
temporaryStorageoption toWebSQLOpenFactoryOptionsto override the storage for temporary SQLite files. The default was also updated to "MEMORY" (previously "FILESYSTEM"), to avoid issues with larger queries or datasets.
v1.11.0
[IMPROVED] WA-SQLite to
@journeyapps/wa-sqlite@1.0.0which includes internal improvements and bug-fixes from the upstream WA-SQLite.Note that WA-SQLite performed some changes to the virtual filesystem structure in this update. An automatic migration will be executed when upgrading, however no down-migration is available. Downgrading to
@journeyapps/wa-sqlite < 1.0.0will require the IndexedDB storage to be erased (developers should be able to manually delete or rename the database).
v1.10.2
[FIXED] Updated
powersync-sqlite-coreto v0.3.6 which fixes an issue with remove operations resulting in dangling rows in some cases. See the PR for more details.
v1.10.1
[IMPROVED] Adds a check to confirm that navigator locks are present and throws an error otherwise, relevant for insecure contexts (e.g. http://127.0.0.2).
v1.10.0
[ADDED]
refreshSchema()which will cause all connections to be aware of a schema change.
v1.9.2
[IMPROVED]
getCrudBatchto use a default limit of 100 CRUD entries.
v1.9.1
[IMPROVED] Handle trailing forward slash in the POWERSYNC_URL environment variable.
v1.9.0
[IMPROVED] Updated
powersync-sqlite-coreto v0.3.0, which significantly improves the performance of incremental sync (see details).
v1.8.2
[IMPROVED] Deprecated the
rawTableNamesoption inSQLWatchOptions. All tables specified in thetablesoption will now be watched, including PowerSync tables with prefixes.
v1.8.1
[FIXED] An issue where sequentially mutating the same row multiple times could cause the CRUD upload queue monitoring to think CRUD operations have not been processed correctly by the
BackendConnectoruploadDatamethod. See details in this PR.
v1.8.0
[ADDED] UMD distribution to introduce
react-native-websupport (available under@powersync/web/umd). Learn more here.[IMPROVED] DB and sync workers instantiation can now be overriden with a path or a factory method.
[IMPROVED] Removed
lodashdependency.
v1.7.0
Note: Some features in this version require journeyapps/powersync-service v0.5.0 or later when self-hosting.
This version updates powersync-sqlite-core to version 0.2.0 and introduces:
[ADDED] Custom
User-Agentheader andclient_idparameter to sync requests.[ADDED] Emit update notifications for watch queries on
disconnectAndClear().[IMPROVED] Sync optimizations for MOVE and REMOVE operations. See details in this PR.
[IMPROVED]
SyncStatus.lastSyncedAtnow returns a persisted timestamp of the last synced at time (previously it reset after a restart).[IMPROVED] Validate that the
powersync-sqlite-coreversion number is in a compatible range of^0.2.0.[IMPROVED] Always cast
target_op(write checkpoints) to ensure it's an integer.
Additionally:
[IMPROVED] Merge
TableandTableV2definitions but keptTableV2to avoid making this a breaking change. Find details in this PR.[FIXED] SSR Mode detection for DB adapters. Removed the potential for SSR Web Streaming implementations to perform syncing operations. More details in the PR.
v1.6.0
[IMPROVED] Significantly improved performance in syncing large data sets (e.g. initial syncs) by debouncing update notifications [PR].
[IMPROVED]
WebSocketstreaming is now the default connection method. HTTP streaming can still be specified if desired.[IMPROVED] Added basic validations for required options in
PowerSyncDatabaseconstructor (useful for JavaScript).[INTERNAL] Updated the internals of
deleteBucketto use a simpler action.
v1.5.1
[FIXED] An issue where the shared sync manager would not discard stale credentials.
[FIXED]
hasSyncedstatus now resets correctly afterdisconnectAndClearhas been called.
v1.5.0
[IMPROVED] Added a warning if connector
uploadDatafunctions don't process CRUD items completely [PR].
v1.4.0
[IMPROVED] Polyfills are now prebundled into the SDK, requiring one less polyfill when using WebSockets.
v1.3.0
[ADDED]
debugModeflag to log queries on the Developer Tools performance timeline [PR].
v1.2.1
[IMPROVED] Transactions that are reporting on failed rollback exceptions are now silenced when they are safe to ignore.
v1.2.0
[IMPROVED] The constructor behavior of
PowerSyncDatabaseand logic for opening the SQLite database.[DEPRECATED]
WASQLitePowerSyncDatabaseOpenFactory
v1.1.0
[ADDED] Support for client parameters to further filter data via sync rules.
v1.0.2
Updated dependencies:
[FIXED] CRUD uploads which would not retry after failing until the connection status was updated. A failed CRUD operation should not change the status to
connected: false.
v1.0.1
Updated dependencies.
v1.0.0
This SDK is now in a stable release

Updated dependencies:
[ADDED] A mechanism for throttling watch callback executions.
v0.8.1
[FIXED] The issue where watched queries would not update after syncing upstream changes.
v0.8.0
[IMPROVED] Allow the package to be used without web workers.
v0.7.0
[IMPROVED] The import and usage of the BSON library.
v0.6.1
Updated dependencies:
[FIXED] An issue with Vite not being able to resolve Sourcemaps by introducing a
tsconfig.basefile in the root of the repo.
v0.6.0
[ADDED] Support for WebSocket sync stream connections. Learn more here.
Updated dependencies:
[IMPROVED] Removed the
uuiddependency.
v0.5.3
Updated dependencies:
[FIXED]
hasSyncedto also change when there is no data on app load.
v0.5.2
Updated dependencies:
[IMPROVED] Allow compilable queries to be used as hook arguments so that queries from an ORM can be used.
[FIXED]
disconnectAndClear()not clearingps_untypedrecords.[FIXED] Incorrect type of
Schema.tables.
v0.5.1
[IMRPOVED] Renamed the package from
@journeyapps/powersync-to@powersync/. The@journeyapps/powersync-sdk-webpackage is deprecated and the renamed package is published here: https://www.npmjs.com/package/@powersync/webUpdated dependencies:
[FIXED] Default
onErrorcallback forwatch()andonChange()that used an unbounded member.
v0.5.0
Updated dependencies:
[ADDED] Support for Full-text search and enabled recursive triggers.
v0.4.1
Updated dependencies:
[ADDED]
hasSyncedproperty toSyncStatus. This value is managed inAbstractPowerSyncDatabase, and becomestrueafter the first sync has completed.[ADDED] Added
waitForFirstSyncmethod to allow users toawaiton the state change ofhasSyncedtotrue.[FIXED] Resolving tables for
watch()before handling any results, eliminating a potential race condition between initial results and updates.[FIXED] Also handled a potential uncaught exception.
v0.4.0
[ADDED] The ability to disable broadcast logging in
WebPowerSyncFlags.[FIXED] Shared sync broadcast logger sanitization and error handling.
Updated dependencies:
[ADDED] Added
executeBatchmethod. This allows a SQL statement with multiple parameters to be executed in a single transaction, improving performance and consistency.[FIXED] A potential unhandled exception when aborting a stream fetch request for the
/sync/streamendpoint.
v0.3.3
Updated dependencies:
v0.3.2
[IMPROVED] Minor code cleanup for the shared sync worker.
Updated dependencies:
[FIXED] A regression where watched queries would update for table changes in external (not in query) tables.
v0.3.1
[IMPROVED] Added some serialization checks for broadcasted logs from the shared web worker. Unserializable items will now return a warning.
[FIXED] An issue where
SyncBucketStoragelogs would not be broadcasted from the shared sync worker to individual tabs.Updated dependencies:
[FIXED] An issue where sync stream exceptions would not close previous streaming connections.
[IMPROVED] Reduced JS bundle size.
v0.3.0
[IMPROVED] Multiple tab syncing by unloading stream and sync bucket adapter functionality to shared webworker.
Updated dependencies:
[ADDED]
disposemethods for sync stream clients and better closing of clients.[FIXED]
PowerSyncBackendConnector.fetchCredentialstype to allow returningnull.[IMPROVED] Internally moved crud upload watching to
SqliteBucketStorageAdapter.
v0.2.2
[FIXED] Issue on Next.js 14.1.0 where the shared sync web worker would fail to initialize.
Updated dependencies:
[ADDED]
equalsmethod onCrudEntryclass to better align comparison operations with JavaScript.[IMPROVED]
AbstractPowerSyncDatabase.getCrudBatchnow use agetAllinstead of usingdatabase.execute.[FIXED] Minor bugs in
BucketStorageadapter.[FIXED] Removed
object-hashpackage as a dependency as this caused issues with Next.js 14.1.0.
v0.2.1
Updated dependencies:
[FIXED] Missing
transactionIdvalue in the response ofgetNextCrudTransaction.
v0.2.0
Updated dependencies:
[ADDED]
viewNameoption to Schema Table definitions. This allows for overriding a table's view name, which allows having separate tables for a synced mode and a local-only mode, and moving data between the two.[IMPROVED] Table change updates to be throttled on the trailing edge. This prevents unnecessary query on both the leading and rising edge.
v0.1.3
[FIXED] Watched queries not updating due to race condition when opening multiple WA-SQLite connections due to initiating multiple PowerSync instances simultaneously.
v0.1.2
Updated dependencies:
[IMPROVED] Connector CRUD uploads will now be triggered whenever an internal CRUD operation change is triggered.
[IMPROVED] CRUD upload debouncing will now rather use a throttled approach - executing multiple continuous write/CRUD operations will now trigger a connector upload at most (every) 1 second (by default).
[FIXED] A bug where opening multiple WA-SQLite instances to the same DB could break watched queries. This issue could arise when using multiple tabs or when opening multiple PowerSync instances for the same DB (e.g when initializing PowerSync in React strict mode under some circumstances).
v0.1.1
[ADDED] Two example projects:
demos/example-webpack - containing a minimal example demonstrating bundling with Webpack.
demos/example-vite - containing a minimal example demonstrating bundling with Vite.
[IMPROVED] Introduced a new
pnpm formatscript to correctly format corresponding files with prettier.
[FIXED] Ignore directives for Vite to enable bundling the workers correctly.
v0.1.0
Initial beta release.