From eb05b1bad2ae26b09f12b103430e39effe5ede26 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Tue, 21 Apr 2026 08:39:21 +0000 Subject: [PATCH 1/3] Update docs for Kotlin SDK legacy sync client removal Generated-By: mintlify-agent --- client-sdks/orms/kotlin/room.mdx | 10 +++------- sync/streams/migration.mdx | 3 ++- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/client-sdks/orms/kotlin/room.mdx b/client-sdks/orms/kotlin/room.mdx index f9b30860..8ef4d138 100644 --- a/client-sdks/orms/kotlin/room.mdx +++ b/client-sdks/orms/kotlin/room.mdx @@ -146,15 +146,11 @@ The returned `PowerSyncDatabase` behaves just like a regular PowerSync database, `connect` to establish a sync connection: ```Kotlin -powersync.connect( - YourBackendConnector(), - options = SyncOptions( - // Raw tables require the new client implementation. - newClientImplementation = true - ) -) +powersync.connect(YourBackendConnector()) ``` +Raw tables require the Rust-based sync client, which is the default since Kotlin SDK v1.9.0 and the only implementation since v1.12.0. If you're on a version before v1.9.0, pass `options = SyncOptions(newClientImplementation = true)` to `connect()`. + ## Usage To run queries, you can keep defining Room DAOs in the usual way: diff --git a/sync/streams/migration.mdx b/sync/streams/migration.mdx index 8df67f40..be99f13d 100644 --- a/sync/streams/migration.mdx +++ b/sync/streams/migration.mdx @@ -54,7 +54,7 @@ If you want "sync everything upfront" behavior (like Sync Rules), set [`auto_sub | Capacitor | v0.0.1 | v0.3.0 | | Tauri | v0.0.1 | Always (Rust client only) | | Dart/Flutter | v1.16.0 | v1.17.0 | -| Kotlin | v1.7.0 | v1.9.0 | +| Kotlin | v1.7.0 | v1.9.0 (legacy client removed in v1.12.0) | | Swift | v1.11.0 | v1.8.0 | | .NET | v0.0.8-alpha.1 | v0.0.5-alpha.1 | @@ -85,6 +85,7 @@ database.connect(MyConnector(), options = SyncOptions( newClientImplementation = true, )) ``` +As of Kotlin SDK v1.12.0, the legacy sync client has been removed and the Rust client is the only implementation. The `newClientImplementation` parameter is no longer needed. **Swift:** ```swift From fc72ea082a5f2b6c91c1ae5e5238a15724a6cb04 Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Thu, 23 Apr 2026 14:01:37 +0200 Subject: [PATCH 2/3] Update Room raw table instructions --- client-sdks/orms/kotlin/room.mdx | 24 ++---------------------- sync/streams/migration.mdx | 4 ++-- 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/client-sdks/orms/kotlin/room.mdx b/client-sdks/orms/kotlin/room.mdx index 8ef4d138..e31aa3fd 100644 --- a/client-sdks/orms/kotlin/room.mdx +++ b/client-sdks/orms/kotlin/room.mdx @@ -99,32 +99,14 @@ To inform PowerSync about that table, include it as a `RawTable` in the schema: ```Kotlin val schema = Schema( + // For more information on raw tables, see https://docs.powersync.com/client-sdks/advanced/raw-tables RawTable( name = "todos", - put = - PendingStatement( - "INSERT OR REPLACE INTO todos (id, description, created_by) VALUES (?, ?, ?)", - listOf( - PendingStatementParameter.Id, - PendingStatementParameter.Column("description"), - PendingStatementParameter.Column("created_by"), - ), - ), - delete = - PendingStatement( - "DELETE FROM todos WHERE id = ?", - listOf(PendingStatementParameter.Id), - ), + schema = RawTableSchema(), ), ) ``` -Here: - -- The SQL statements must match the schema created by Room. -- The `RawTable.name` and `PendingStatementParameter.Column` values must match the table and column names of the synced - table from the PowerSync Service, derived from your Sync Rules. - For more details, see [raw tables](/client-sdks/advanced/raw-tables). After these steps, you can open your Room database like you normally would. Then, you can use the @@ -149,8 +131,6 @@ The returned `PowerSyncDatabase` behaves just like a regular PowerSync database, powersync.connect(YourBackendConnector()) ``` -Raw tables require the Rust-based sync client, which is the default since Kotlin SDK v1.9.0 and the only implementation since v1.12.0. If you're on a version before v1.9.0, pass `options = SyncOptions(newClientImplementation = true)` to `connect()`. - ## Usage To run queries, you can keep defining Room DAOs in the usual way: diff --git a/sync/streams/migration.mdx b/sync/streams/migration.mdx index be99f13d..149e94da 100644 --- a/sync/streams/migration.mdx +++ b/sync/streams/migration.mdx @@ -53,7 +53,7 @@ If you want "sync everything upfront" behavior (like Sync Rules), set [`auto_sub | Node.js | v0.11.0 | v0.16.0 | | Capacitor | v0.0.1 | v0.3.0 | | Tauri | v0.0.1 | Always (Rust client only) | -| Dart/Flutter | v1.16.0 | v1.17.0 | +| Dart/Flutter | v1.16.0 | v1.17.0 (legacy client removed in v2.0.0) | | Kotlin | v1.7.0 | v1.9.0 (legacy client removed in v1.12.0) | | Swift | v1.11.0 | v1.8.0 | | .NET | v0.0.8-alpha.1 | v0.0.5-alpha.1 | @@ -89,7 +89,7 @@ database.connect(MyConnector(), options = SyncOptions( **Swift:** ```swift -@_spi(PowerSyncExperimental) import PowerSync +import PowerSync try await db.connect(connector: connector, options: ConnectOptions( newClientImplementation: true, From dcecdcfeebb5770dcf857a53a1195438cca17508 Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Thu, 23 Apr 2026 14:02:52 +0200 Subject: [PATCH 3/3] Also add note for Dart --- sync/streams/migration.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sync/streams/migration.mdx b/sync/streams/migration.mdx index 149e94da..a13ea99a 100644 --- a/sync/streams/migration.mdx +++ b/sync/streams/migration.mdx @@ -79,6 +79,8 @@ database.connect( ); ``` +As of Dart SDK v2.0.0, the legacy sync client has been removed and the Rust client is the only implementation. The `syncImplementation` parameter is no longer needed. + **Kotlin:** ```kotlin database.connect(MyConnector(), options = SyncOptions(