Skip to content

Conversation

@stevensJourney
Copy link
Contributor

Overview

We currently have two options for connecting to the PowerSync service:

  • The Rust client (called the newClientImplementation in Swift)
  • The original Kotlin syncing implementation

Previously, the Rust client has been an experimental opt-in feature.

The Rust client has been stable for a while now and is the primary target for new features. The underlaying Kotlin SDK now uses the Rust client as the default from v1.9.0.

This updates the default implementation to be the Rust client (newClientImplementation = true). The option to disable the Rust client, and fall back to the legacy client is now deprecated.

Improvements

The old client uses HTTP streams to connect to the PowerSync service. The underlaying networking library currently has an issue which can cause high memory usage when streaming large volumes of data.

The newClientImplementation uses a WebSocket communication layer which has an additional backpressure layer. This results in stable memory usage when streaming large amounts of data.

Potentially Breaking Changes

The WebSocket layer does not currently support reporting networking logs via SyncRequestLoggerConfiguration. Code relying on SyncRequestLoggerConfiguration will no longer report any logs.

@stevensJourney stevensJourney marked this pull request as ready for review December 15, 2025 08:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants