- DATE:
- AUTHOR:
- PowerSync Product Team
React Native Client SDK: v1.28.0
We are pleased to announce the release of version 1.28.0 of the PowerSync React Native Client SDK.
See the full changelog below.
Have any questions or feedback? Chat with us and the PowerSync community on Discord.
Changelog
v1.28.0 - 2025-11-03
[IMPROVED] Expose table names on Schema props, enabling
schema.props.<table>.nameaccess. (PR #741)
v1.27.1 - 2025-10-03
[ADDED] Expose the connector's connection options to diagnostics for direct access and simpler Nuxt integration. (PR #726)
v1.25.1 - 2025-10-03
[ADDED] Expose connection options to simplify integrations and allow dynamic access to connection parameters. (PR #726)
[FIXED] Type compatibility to allow using
syncStream()instances inuseQueryhooks. (PR #729)
v1.25.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)
[ADDED] React hooks for sync streams, including
useSyncStream()for managing stream subscriptions and an updateduseQuery()that can subscribe to streams and delay queries until synced at least once. (PR #717)[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.24.3 - 2025-09-17
[FIXED] A potential race condition in
WatchedQuerieswhenupdateSettingsis called frequently. (PR #713)[FIXED] React hooks: A bug where the
useQueryreportederrorstate would not clear after updating the query to a valid query. (PR #713)[FIXED] React hooks: A bug where
useQueryisFetchingstatus would not immediately be reported as true when the query has changed. (PR #713)[FIXED] The
TriggerManagertrackTableDiffAPI example, which showed an incorrect method. (PR #711)
v1.24.2 - 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)[FIXED] An issue where
useQuery()would not correctly trigger a new execution when the query or parameters changed while using StrictMode. (PR #703)
v1.24.1 - 2025-08-28
[FIXED] Regression in the
useQueryhook where updating the supplied query parameters would not update the underlying query. (PR #678)
v1.24.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] Refactored the
useQueryhook to avoid calling internal hooks conditionally. (PR #697)[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.23.2 - 2025-08-08
[FIXED] Rust sync client: Fixed warning when reconnecting during CRUD uploads. (PR #676)
[FIXED] Regression in
useSuspendingQuerywherereleaseHold is not a functioncould be thrown during rendering. (PR #688)[DEPRECATED] Marked the
AbstractPowerSyncDatabase.disposemethod as deprecated. TheAbstractPowerSyncDatabase.closemethod should be used instead. (PR #683)
v1.23.1 - 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. This enables support for Expo Go. (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.23.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.22.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] 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.22.0 - 2025-06-18
[ADDED] An experimental sync client delivering improved sync performance. Learn more about it in the release notes.
[IMPROVED] Handling of
ArrayBufferparameters when forwarding data to the Rust sync client in React Native, resulting in additional performance gains. (PR #636)[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.21.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] An issue where iOS WebSockets could fail to reconnect after a connection issue. (PR #607)
[FIXED] A bug where changes in
SyncStatusdownloadErroranduploadErrormight not be reported. (PR #607)
v1.20.4 - 2025-06-02
[FIXED] Download progress reporting during compacting and defragmenting actions to prevent values from exceeding expected ranges. (PR #616)
v1.20.3 - 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)
v1.20.2 - 2025-05-14
[FXIED] An issue where CRUD uploads could fail with the error
Exception: require(_dependencyMap[11], "rea(...)/BlobManager").createFromOptions is not a function (it is undefined)
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.
v1.19.3 - 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.19.2 - 2025-04-04
[FIXED] A race condition where checkpoints during uploads were not being applied. (PR #558)
v1.19.1 - 2025-04-02
[ADDED] Now exposing download and upload errors in
SyncStatusvia thedownloadErroranduploadErrorproperties. (PR #550)
v1.19.0 - 2025-03-27
[ADDED] Introduced
executeRawto the@powersync/op-sqliteintegration to allow Drizzle ORM to correctly map columns in query results, preventing issues with duplicate column names during joins. (PR #482)
v1.18.2 - 2025-03-20
[FIXED] A race condition in
useQuerythat occurred during the initial query execution, causing incorrect query results. (PR #525)
v1.18.1 - 2025-03-10
[ADDED] Support for sync bucket priorities to sync critical data first. Learn more.
[IMPROVED] Updated demo projects to
react-native-quick-sqlitev2.4.1 and modifiedSyncStatus.tsto avoid dependency ontoSorted(), which isn't natively available in React Native environments.[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.
v1.18.0
[ADDED] Introduced
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.
v1.17.0
[ADDED]
retryDelayMsandcrudUploadThrottleMsoptions to theconnectmethod so that the values can be dynamically changed upon reconnecting.
v1.16.3
[FIXED] Updated
powersync-sqlite-coreto v0.3.8, which fixes a view migration issue (see details).[FIXED] An issue where the read and write locks were executing mutually exclusively. A read conccurent with a write or another read should correctly proceed instead of being blocked until the other lock has released.
[IMPROVED] Increase maximum amount of columns from 63 to 1999.
v1.16.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.16.1
Updated dependencies.
v1.16.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.
v1.15.1
[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.15.0
[ADDED]
refreshSchema()which will cause all connections to be aware of a schema change.
v1.14.4
[IMPROVED]
getCrudBatchto use a default limit of 100 CRUD entries.
v1.14.3
Updated dependencies.
v1.14.2
Updated dependencies.
v1.14.1
[FIXED] A bundling issue with
@journeyapps/react-native-quick-sqlitewhen using@powersync/op-sqlite.
v1.14.0
[IMPROVED] Updated
powersync-sqlite-coreto v0.3.0, which significantly improves the performance of incremental sync (see details).
v1.12.3
[IMPROVED] Deprecated the
rawTableNamesoption inSQLWatchOptions. All tables specified in thetablesoption will now be watched, including PowerSync tables with prefixes.
v1.12.2
[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.12.1
[ADDED] React Native Web support. Learn more here.
v1.12.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.1 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.[IMPROVED] Implemented custom Prefab building to support bundling libs from
react-native-quick-sqlite.
Additionally:
[IMPROVED] Merge
TableandTableV2definitions but keptTableV2to avoid making this a breaking change. Find details in this PR.
[IMPROVED] Updated crypto.js vendor file to include fast-base64-decode dependency instead of bundling it.
[FIXED] Flipper debug tool warning still showing if an HTTP request rejected due to an error. See the PR.
v1.11.0
[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.10.0
[IMPROVED] Added a warning if connector
uploadDatafunctions don't process CRUD items completely [PR].
v1.9.0
[IMPROVED] Polyfills are now pre-bundled into the SDK itself.
v1.8.1
[IMPROVED] Transactions that are reporting on failed rollback exceptions are now silenced when they are safe to ignore.
v1.8.0
[IMPROVED] The constructor behavior of
PowerSyncDatabaseand logic for opening the SQLite database.[DEPRECATED]
RNQSPowerSyncDatabaseOpenFactory.
v1.7.2
[ADDED] Support for client parameters to further filter data via sync rules.
v1.7.1
Updated dependencies.
v1.7.0
[FIXED] Potentially using an incorrect
fetchimplementation by directly depending onreact-native-fetch-api.
v1.6.1
[IMPROVED] Added
@powersync/commonas a dependency again.
v1.6.0
[IMPROVED] The import and usage of the BSON library.
[IMPROVED] Added
@powersync/commonas a peer dependency to prevent version mismatch issues.
v1.5.1
Updated dependencies.
v1.5.0
[ADDED] Support for WebSocket sync stream connections. Learn more here.
[IMPROVED] Removed the
react-native-get-random-valuesdependency.Updated dependencies:
[IMPROVED] Removed the
uuiddependency.
v1.4.6
Updated dependencies:
[FIXED]
hasSyncedto also change when there is no data on app load.
v1.4.5
Updated dependencies:
[IMPROVED] Allow compilable queries to be used as hook arguments so that queries from an ORM can be used.
[IMPROVED] Deprecate
usePowerSyncQueryandusePowerSyncWatchedQueryin favor ofuseQueryanduseStatus.[FIXED]
disconnectAndClear()not clearingps_untypedrecords.[FIXED] Incorrect type of
Schema.tables.
v1.4.4
Updated dependencies:
[FIXED] A race condition where table change notifications would trigger before a commit had completed.
v1.4.3
[IMRPOVED] Renamed the package from
@journeyapps/powersync-to@powersync/. The@journeyapps/powersync-sdk-react-nativepackage is deprecated and the renamed package is published here: https://www.npmjs.com/package/@powersync/react-nativeUpdated dependencies:
[FIXED] Default
onErrorcallback forwatch()andonChange()that used an unbounded member.
v1.4.2
Updated dependencies
v1.4.1
Updated dependencies:
[ADDED]
hasSyncedproperty toSyncStatus. This value is managed inAbstractPowerSyncDatabase, and becomestrueafter the first sync has completed.[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.
v1.4.0
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.
v1.3.3
Updated dependencies:
[IMPROVED] Introduced overloaded versions of the
watchandonChangemethods to support a callback approach to handle results and errors alongside the existingAsyncGeneratormechanism.[IMPROVED] No longer using the
AsyncGeneratorversion of thewatchmethod for theusePowerSyncWatchedQueryhook, using the new callback version instead.
v1.3.2
Updated dependencies:
[FIXED] A regression where watched queries would update for table changes in external (not in query) tables.
v1.3.1
Updated dependencies:
[FIXED] An issue where sync stream exceptions would not close previous streaming connections.
[IMPROVED] Reduced JS bundle size.
v1.3.0
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.
v1.2.2
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.
v1.2.1
[FIXED] An issue where the SDK would fail to reconnect after disconnecting when using
disconnectAndClear.Updated dependencies:
[FIXED] Missing
transactionIdvalue in the response ofgetNextCrudTransaction.
v1.2.0
[ADDED] Global locks for syncing connections. Added a warning when creating multiple PowerSync instances.
[IMPROVED] Bumped
powersync-sqlite-coreto v0.1.6. Dependent projects should:Upgrade to
@journeyapps/react-native-quick-sqlite@1.1.1run
pod repo update && pod updatein theiosfolder for updates to reflect.
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.
v1.1.0
[FIXED] Watched queries from updating before writes have been committed on the write connection.
Updated dependencies:
[IMPROVED] Added the ability to receive batched table updates from DB adapters.
v1.0.1
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).
v1.0.0
Stable release.
v0.1.0
[ADDED] Support for concurrent reads and writes (one write and multiple reads). Concurrent connections help ensure that an app's UI isn't blocked when writes are being processed.
This update is based on this blog post and adapted from the sqlite_async interface on Dart & Flutter.
Important:
Requires @journeyapps/react-native-quick-sqlite@0.1.0 as a peer dependency.
Breaking API updates:
execute,commit,androllbackare now async functions, as synchronous DB operations in transactions were removed.executeAsync, commitAsync,androllbackAsynchave been removed.
Transaction contexts now have
get,getAll,andgetOptionalhelpers.Added a default lock timeout of 2 minutes to aid with potential recursive lock/transaction requests.
[ADDED] Logging functionality to assist with debugging.
Added display for exceptions that occur during streaming operations from the PowerSync Service.
Added a note to the docs for configuring debug log levels.
Added warnings if the required Polyfills are not correctly configured.
[IMPROVED] More frequent updates of sync status connectivity.
[IMPROVED] Updated dependencies.