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(