Availability
Incremental reprocessing is Beta in PowerSync Service v1.26.0. It requires a MongoDB source database, MongoDB bucket storage, Sync Streams, and storage version 4. During the Beta, deployments must opt in by selecting storage version 4 in the Sync Config. Version 4 has a stable storage format, but v1.26.0 continues to use version 2 by default.default_storage_version: 4 in the storage section of service.yaml to apply it to all newly deployed Sync Configs. There is no separate incremental reprocessing setting. After the first version 4 deployment finishes, later eligible Sync Config deployments use incremental reprocessing automatically.
Postgres is not supported. A Postgres source database cannot use incremental reprocessing, even on PowerSync Cloud. Self-hosted deployments also cannot use it with Postgres bucket storage. These configurations continue to reprocess all data selected by a new Sync Config.
What Happens During a Deployment
PowerSync keeps the current Sync Config active while it prepares your changes:- It compares the new config with the current one.
- It keeps the existing sync data for unchanged streams.
- It reads the source rows needed for new or changed streams.
- It switches to the new config after that data is ready.
- It deletes sync data that the old config no longer needs.
What Gets Reprocessed
Only the streams that changed:- Adding a stream reads only the source data that the new stream selects.
- Removing a stream deletes its sync data without reading anything from the source database.
- Renaming a stream is treated as removing the old stream and adding a new one, so its data is rebuilt.
- Changing a stream’s queries reprocesses the data for that stream. Other streams are unaffected.
owner_id instead of user_id, changes how rows are grouped for sync, so PowerSync rebuilds that stream’s data.
Two exceptions to keep in mind:
- Queries in the same stream can share prepared data. Adding or changing one query can rebuild data for other queries in that stream.
- PowerSync favors correctness. When it cannot confirm that a change keeps the stored sync data identical, it rebuilds the affected data. A deployment that reprocesses more than you expect is not an error. Check the logs to see what was reused.
Checking What a Deployment Rebuilt
After a deployment, the replication logs summarize the comparison:Reused definitionslists data that PowerSync kept. It does not read that data from the source again.New definitionslists data that PowerSync must read and prepare.Definitions to drop after switchinglists old data that PowerSync removes after the new config becomes active.
What Clients Download
Clients keep their data for unchanged streams and continue from their existing sync position. After the new config becomes active, they download data only for new or rebuilt streams that they subscribe to. PowerSync keeps both the old and new versions of changed data while it prepares the deployment, so bucket storage can grow temporarily. The old data is removed after the switch.When PowerSync Rebuilds Everything
PowerSync reads all data selected by the Sync Config again when it cannot safely reuse the existing copy. This happens when:- Your setup does not meet the requirements above. For example, your source database or bucket storage database is not MongoDB, or you use legacy Sync Rules.
- You move an existing Sync Config to storage version 4 for the first time.
- MongoDB has already deleted source changes that PowerSync still needs to read.
- You explicitly restart replication or use the PowerSync Dashboard’s Defragment action. Both rebuild all sync data instead of reusing it.
Custom Checkpoint Events
Theevent_definitions used by Custom Write Checkpoints follow the same rules as stream queries. An unchanged event keeps its existing checkpoint data, while a new or changed event reads its source table again. Clients continue using checkpoints from the current config until the new config is ready.