DATE:
AUTHOR:
PowerSync Product Team
Notice PowerSync Service

Our Plan for Phasing Out Sync Rules

DATE:
AUTHOR: PowerSync Product Team

We're phasing out Sync Rules over the next 15 months in favor of Sync Streams. Nothing changes for your instance today. Sync Rules keep working and stay supported while you migrate. This post gives the timeline and what you need to do.

Why Sync Streams

Sync Rules only sync data upfront: everything a user has access to, all at once, when the client connects. There is no way to sync data on demand, for example a project's tasks only when the user opens that project. The only workaround is Client Parameters, which means you maintain lists of IDs yourself and merge them across screens and tabs.

Sync Rules are also harder to write than they need to be. Every bucket definition needs separate parameters: and data: queries, and JOINs aren't supported.

Sync Streams do both: sync on demand, or everything upfront as Sync Rules do. Each stream is a SQL query you define on the server. Set auto_subscribe: true and the stream syncs on connect, exactly as Sync Rules do. Or subscribe to the stream from your app when a screen needs it, with a TTL that keeps the data cached afterwards. Stream queries are closer to plain SQL and support more of it, including JOINs, CTEs, and subqueries.

Sync Streams are production-ready:

  • They have been in beta since March 2026 and generally available since May 2026. The APIs are stable, and the syntax has had no breaking changes since the beta.

  • Many of you have run them in production since the beta. Most of the fixes and improvements between the beta and general availability came from your feedback.

  • They are the default for new instances in the PowerSync Dashboard, and our getting-started guides and demo apps use them.

  • New Sync Config features only work with Sync Streams. For example, incremental reprocessing, now in beta for MongoDB source databases, reprocesses only the streams you changed on deploy instead of everything.

Timeline

From now on, new PowerSync Cloud organizations can only use Sync Streams. The timeline below applies to existing organizations and to self-hosted deployments:

  • Now: Sync Rules are deprecated. Existing instances on Sync Rules keep running and stay fully supported. For now, you can still create new instances on Sync Rules. Over the coming months we'll add deprecation warnings for instances that still use Sync Rules.

  • 15 March 2027: New PowerSync Cloud instances can only use Sync Streams, including in existing organizations. Existing instances on Sync Rules remain supported.

  • 15 September 2027: We release a new major version of the PowerSync Service that removes Sync Rules. Instances still on Sync Rules stay on the last major version that supports them. That version may receive security fixes but no new features. Self-hosted instances on the new major version or later won't start with Sync Rules in their config.

  • 15 December 2027: You can no longer deploy Sync Rules. From this point, migrating to Sync Streams is the only way to change your Sync Config. Instances still on Sync Rules keep running, but we no longer release security fixes for them. Support for Sync Rules ends.

If anything blocks your migration before 15 December 2027, get in touch early so we can discuss options.

Who is affected

  • If your Sync Config has bucket_definitions:, you're on Sync Rules and need to migrate.

  • If it only has streams:, you're already on Sync Streams. No action is needed on your end.

How to migrate

Migrating does not change what your app syncs. Sync Streams support everything Sync Rules do, and the migration tool converts your Sync Rules into streams with the same behavior. Every generated stream has auto_subscribe: true, so clients keep syncing everything upfront on connect, exactly as they do today.

If you use Client Parameters, the tool converts them to connection parameters. Your app passes them the same way when it connects. No client-side code changes are needed. In most cases you can migrate to stay compatible first, then adopt other Sync Streams features over time.

You can migrate in two steps:

  1. In the PowerSync Dashboard, click Migrate to Sync Streams, or run powersync migrate sync-rules in the CLI. This converts your current Sync Rules into Sync Streams for you to review. When the tool merges several bucket definitions into one stream, comments mark which definition each group of queries came from.

  2. Review the draft and deploy it.

The deploy behaves like any other Sync Config deploy. We reprocess your data in the background while the current version keeps serving clients, then switch over without downtime. Clients do a one-time full re-sync afterwards.

Check two things in the draft before you deploy:

  • Compatibility edition: The tool sets config: edition: 3. If your Sync Rules had no edition set, this also turns on the fixes from edition 2. Those fixes change how some values look in the client database, for example ISO 8601 timestamp formatting and custom Postgres type handling. The Compatibility page lists all of them. To keep the old behavior for any of them, set that option to false alongside the edition.

  • Queries the tool can't convert: This is rare. When it happens, the tool stops and highlights the line in your Sync Rules. Convert that bucket definition by hand with the syntax mapping in the migration guide, or ask us on Discord and we'll help.

Requirements: Most instances can migrate as is. PowerSync Cloud instances already run a Service version that supports Sync Streams, and current SDK versions support them too. If your instance is locked to an older Service version, or your app uses older SDK versions, check the migration guide for the minimum versions.

Questions

We want this transition to cause as little disruption as possible for instances on Sync Rules today. If you have questions about the timeline, or the migration tool doesn't handle something in your Sync Rules, reach us on Discord. You can also open an issue on GitHub.

Powered by LaunchNotes