- DATE:
- AUTHOR:
- PowerSync Product Team
Capacitor Client SDK: v0.10.0
We are pleased to announce the release of version 0.10.0 of the PowerSync Capacitor client SDK. The Capacitor SDK is in beta.
The Capacitor SDK uses the PowerSync Web SDK as a peer dependency. This changelog includes the Web SDK changes that apply on iOS and Android, under the first Capacitor version that requires them. For changes that only affect the web, see the Web SDK changelog.
See the full changelog below.
Have any questions or feedback? Chat with us and the PowerSync community on Discord.
Changelog
v0.10.0 - 2026-11-02
[ADDED]
connect()now accepts anAuthenticatorand aMutationUploaderseparately, instead of only a singlePowerSyncBackendConnector, including download-only and upload-only overloads. ExistingPowerSyncBackendConnectorimplementations keep working unchanged. (PR #1149)[ADDED] Support for managed tables: pass
{ direct: true }toTableto store it as plain SQLite rows instead of the JSON-based view PowerSync normally manages. This is in alpha. (PR #1158)[ADDED] PowerSync DevTools now works with Capacitor apps on iOS and Android. (PR #1169)
[FIXED] The bundled PowerSync SQLite core extension was updated to v0.5.4. This fixes underreported sync progress after compaction, and priority 0 data not applying while uploads were pending if all buckets had priority 0. (PR #1155)
[FIXED] A checkpoint request or the sync connection could hang forever if the PowerSync Service never responded, blocking uploads, downloads, and later
disconnect()/connect()calls. Both now time out via the newconnectTimeoutMssync option (default 30 seconds), and pending checkpoint requests are cancelled ondisconnect(). (PR #1173)[FIXED] A failed
COMMITissued aROLLBACKto revert the transaction, but that call had no effect and swallowed the error. The SDK now forwards the error and rolls back correctly. (PR #1178)[FIXED] A watched query that returned the same rows in a new order, with no additions or removals, did not re-emit its results. (PR #1157)
[FIXED] After a
connect()call's initialization failed, every laterdisconnect()rejected with that same error, and the nextconnect()failed too because it disconnects first. (PR #1177)[FIXED] A sync iteration that rejected with no error value crashed the retry loop's error handling, silently stopping downloads without logging anything or setting
downloadError. (PR #1168)
v0.9.4 - 2026-10-19
[FIXED] Since v0.8.0, iOS and Android apps received sync data in binary format, which is slow to pass through Capacitor's JSON-based bridge. The SDK requests text format again. (PR #1140)
[FIXED] The
expiresAtandlastSyncedAtproperties of a Sync Stream subscription were alwaysInvalid Date. (PR #1148)
v0.9.3 - 2026-10-01
[FIXED]
onChangeWithCallback,watchWithCallback,compilableQueryWatch,AbstractQueryProcessor, andAttachmentQueue.startSyncleaked listeners when aborted or stopped early. (PR #1122)[FIXED]
fetchCredentialsimplementations compiled withexactOptionalPropertyTypeshit a type error returning{ expiresAt: undefined }.PowerSyncCredentials.expiresAtnow accepts an explicitundefined. (PR #1134)
v0.9.2 - 2026-09-21
[ADDED]
disconnectAndClear({ soft: true })clears your synced tables but keeps the internal sync state. A laterconnect()for the same user then completes without downloading all data again. (PR #1111)[FIXED] [Android] After the webview reloaded while a write transaction was open, for example during live reload, every later write failed with
database is locked (code 5). (PR #1103)[FIXED]
disconnect()sometimes never completed whencheckpointModewas'requests', and laterconnect()calls then stayed pending. (PR #1108)[FIXED] A normal
disconnect()left a staledownloadErrorof "Disconnect has been requested" on the sync status. (PR #1108)
v0.9.1 - 2026-09-10
[FIXED] The bundled PowerSync SQLite core extension was updated to v0.5.3. This fixes a
tx_idmismatch for insert-only tables, and error messages now include the underlying SQL statement. (PR #1090)[FIXED]
AttachmentQueue.expireCache()never resolved when there was nothing archived left to delete. (PR #1092)
v0.9.0 - 2026-09-02
[ADDED]
requestCheckpoint()lets you wait until the local database has caught up with the server, including your pending uploads. Opt in with thecheckpointMode: 'requests'connect option while the feature is in alpha. Requires PowerSync Service v1.24.0 or later. See Sync Catch-Up. (PR #1072)[ADDED] The
AttachmentTransportAdapterinterface lets anAttachmentQueueuse a custom upload, download, and delete implementation in place ofremoteStorage. (PR #1039)[FIXED] A Sync Stream subscription change made while
connect()was still starting was sometimes dropped until the next change or reconnect. (PR #1078)
v0.8.2 - 2026-08-05
[FIXED] Apps with strict
node_moduleslayouts, such as pnpm's default, failed with an unresolved import error. (PR #1061)
v0.8.1 - 2026-08-03
[IMPROVED]
@journeyapps/wa-sqliteis now a regular dependency, so you can remove it from your own dependencies unless you import it directly. (PR #1049)[FIXED] On startup,
connect()briefly overwrote the restored sync status, sohasSyncedwasundefinedand stream subscriptions were missing for a moment. (PR #1051)
v0.8.0 - 2026-07-21
[BREAKING] This version is part of the JavaScript SDKs v2.0 release. Sync options are now set only on
connect(), and several deprecated APIs are removed. The announcement lists every change and how to upgrade. (PR #987)[BREAKING] If you pass a custom open factory such as
CapacitorSQLiteOpenFactory, use thefactorykey instead ofdatabase. (PR #987)[ADDED] The SDK exports the
AttachmentQueueOptionsinterface and theAttachmentTableRecordtype, so you can type and extend the attachment queue. (PR #992, PR #1006)[IMPROVED]
AttachmentQueueno longer blockssaveFile()anddeleteFile()while uploads or downloads are in progress, andstopSync()can interrupt a batch. (PR #974)[FIXED] With the HTTP connection method, a token that expired while the client was disconnected caused an endless auth-error retry loop. (PR #1034)
[FIXED] Sync status errors lost
Error.causewhen serialized, souploadErroranddownloadErrordid not include the full cause chain. (PR #1000)[FIXED] Breaking out of a
watch()oronChange()async iterator early left the underlying change listener attached. (PR #996)[FIXED] Queries inside the
onChangecallback ofcreateDiffTriggerfailed when they relied onthisbinding. (PR #1028)[FIXED] The exported
LogLeveltypes caused a TypeScript error. (PR #1032)
v0.7.0 - 2026-06-10
[ADDED] The Capacitor SDK is now in beta. (PR #980)
[ADDED]
AttachmentQueue.withAttachmentContext()gives custom attachment logic, such as a customsaveFile, access to read and change attachment records. (PR #985)[ADDED] Watched attachment items accept an optional
mediaType, so attachments download with the correct media type. (PR #975)