- DATE:
- AUTHOR:
- PowerSync Product Team
Rust Client SDK Reaches Beta
The PowerSync Rust client SDK is now in beta with v0.1.0 of the powersync crate. Beta means that the SDK is production-ready for tested use cases. Its APIs are stable, and we communicate breaking changes clearly.
Since the alpha release in March 2026, we have seen steady adoption of the SDK, both directly in Rust apps and through our Tauri SDK. For the beta we focused on closer feature parity with our other SDKs, and closed the main gaps with checkpoint requests and disconnect_and_clear().
What's new
Checkpoint requests: Call
request_checkpoint()from the client and wait until the local database has caught up with the server, for example before a critical job. Opt in withSyncOptions::with_checkpoint_mode(CheckpointMode::Requests(..)). (docs, announcement)Disconnect and clear: Call
disconnect_and_clear()to disconnect and delete the synced data, for example when a user signs out.Generated setup code: The Connect drawer in the PowerSync Dashboard now generates Rust setup code, so you write less of it by hand. You can generate a client schema that matches your Sync Streams, and a backend connector with
fetch_credentials()and a completeupload_data().Fixes: This release also fixes a number of bugs. Two of the fixes came from community contributors. Thanks @julianallchin and @birdmanmandbir! See the full changelog here.
Upgrade from v0.0.x
v0.1.0 changes how you set up the async runtime. connect() now spawns the sync tasks, and disconnect() waits for them to finish. If you're on v0.0.x:
In
PowerSyncEnvironment::custom, replacetokio_timer()withtokio(), orasync_io_timer()withasync_io(executor). Theexecutoris anArc<async_executor::Executor<'static>>.Remove the
db.async_tasks().spawn_with(...)orspawn_with_tokio()call that you made beforeconnect().
Before (v0.0.x):
let env = PowerSyncEnvironment::custom(
reqwest::Client::new(),
pool,
PowerSyncEnvironment::tokio_timer(),
);
let db = PowerSyncDatabase::new(env, schema::app_schema());
db.async_tasks().spawn_with_tokio();
db.connect(SyncOptions::new(connector)).await;
After (v0.1.0):
let env = PowerSyncEnvironment::custom(
reqwest::Client::new(),
pool,
PowerSyncEnvironment::tokio(), // smol: PowerSyncEnvironment::async_io(executor)
);
let db = PowerSyncDatabase::new(env, schema::app_schema());
// connect() now spawns the sync tasks, so there is no spawn_with call.
db.connect(SyncOptions::new(connector)).await;Get started
The Rust SDK reference covers setup, and the egui todo list example shows a complete working app that you can reference.
Thank you to everyone who tried the experimental and alpha releases. Please share your feedback on Discord, or open an issue on GitHub.