Usage and billing FAQs and troubleshooting strategies.
Where can I review my PowerSync Service usage?
You can track usage in two ways:
What are sync operations?
A sync operation occurs when a single row is synced from the PowerSync Service to a user device.
The PowerSync Service maintains a history of operations for each row to ensure efficient streaming and data integrity. This means:
As a result, sync operation counts may significantly exceed the number of actual data mutations, especially for frequently updated rows. This is normal behavior, but you can manage it through:
See the Usage Troubleshooting section for more details on managing operations history.
What are concurrent connections?
A concurrent connection represents one client actively connected to the PowerSync Service. When a user device runs an app using PowerSync and calls .connect()
, it establishes one long-lived connection for streaming real-time updates.
Some key points about concurrent connections:
What comprises data processing?
Data processing is calculated as the total uncompressed size of:
These values are available in your Usage metrics as “Data replicated per day/hour” and “Data synced per day/hour”.
What is the difference between data/operations replicated vs synced?
Data/operations replicated refers to activity from your backend database (Postgres/MongoDB or MySQL database) to the PowerSync Service, whereas data/operations synced refer to activity from the PowerSync Service to client devices.
Where can I see details about my current billing cycle?
Head over to the Subscriptions tab of the Admin Portal. Here you can view your total usage (aggregated across all projects in your organization) and upcoming invoice total for your current billing cycle. Data in this view updates once a day.
Where can I update my billing details, e.g. the email that receives billing receipts?
You can update your billing details in the Billing tab of the Admin Portal.
Can I view my historic invoices?
We are planning to surface these in the Admin Portal, but this is not yet available. In the meantime, you can review your historic invoices directly in the Stripe Customer Portal, by signing in with your billing email here.
If you’re seeing unexpected spikes in your usage metrics, here’s how to diagnose and fix common issues:
The most common cause of seeing excessive concurrent connections is opening multiple copies of PowerSyncDatabase
, and calling .connect()
on each. Debug your connection handling by reviewing your code and Instance logs. Make sure you’re only opening one connection per user/session.
While sync operations typically correspond to data mutations on synced rows (those in your Sync Rules), there are several scenarios that can affect your operation count:
New App Installations: When a new user installs your app, PowerSync needs to sync the complete operations history. We help manage this by:
Existing Users: While compacting and defragmenting reduces the operations history, they trigger additional sync operations for existing users.
Sync Rule Deployments: When you deploy changes to Sync Rules, PowerSync recreates the sync buckets from scratch. This has two effects:
We are planning incremental sync rule reprocessing, which will allow PowerSync to only reprocess buckets whose definitions have changed, rather than all buckets.
Unsynced Columns: Any row update triggers a new operation in the logical replication stream, regardless of which columns changed. In other words, PowerSync tracks changes at the row level, not the column level. This means:
UPDATE mytable SET id = id
generates a new operation for each affected row.While selectively syncing columns helps with data access control and reducing data transfer size, it doesn’t reduce the number of sync operations.
The PowerSync Service hosts:
Because of this structure, your hosted data size may be larger than your source database size.
Identify Timing
Review Logs
Example of 'Sync stream complete' logs
Compare Metrics Use the Diagnostics app to compare total rows vs. operations synced to the user device. If you are seeing a much higher number of operations, you might benefit from defragmentation.
Detailed Sync Operations
fetch-operations
command with the --raw
flag:
Accidentally ran up a high bill? No problem — we’ve got your back. Reach out to us at support@powersync.com and we’ll work with you to resolve the issue and prevent it from happening again.
Usage and billing FAQs and troubleshooting strategies.
Where can I review my PowerSync Service usage?
You can track usage in two ways:
What are sync operations?
A sync operation occurs when a single row is synced from the PowerSync Service to a user device.
The PowerSync Service maintains a history of operations for each row to ensure efficient streaming and data integrity. This means:
As a result, sync operation counts may significantly exceed the number of actual data mutations, especially for frequently updated rows. This is normal behavior, but you can manage it through:
See the Usage Troubleshooting section for more details on managing operations history.
What are concurrent connections?
A concurrent connection represents one client actively connected to the PowerSync Service. When a user device runs an app using PowerSync and calls .connect()
, it establishes one long-lived connection for streaming real-time updates.
Some key points about concurrent connections:
What comprises data processing?
Data processing is calculated as the total uncompressed size of:
These values are available in your Usage metrics as “Data replicated per day/hour” and “Data synced per day/hour”.
What is the difference between data/operations replicated vs synced?
Data/operations replicated refers to activity from your backend database (Postgres/MongoDB or MySQL database) to the PowerSync Service, whereas data/operations synced refer to activity from the PowerSync Service to client devices.
Where can I see details about my current billing cycle?
Head over to the Subscriptions tab of the Admin Portal. Here you can view your total usage (aggregated across all projects in your organization) and upcoming invoice total for your current billing cycle. Data in this view updates once a day.
Where can I update my billing details, e.g. the email that receives billing receipts?
You can update your billing details in the Billing tab of the Admin Portal.
Can I view my historic invoices?
We are planning to surface these in the Admin Portal, but this is not yet available. In the meantime, you can review your historic invoices directly in the Stripe Customer Portal, by signing in with your billing email here.
If you’re seeing unexpected spikes in your usage metrics, here’s how to diagnose and fix common issues:
The most common cause of seeing excessive concurrent connections is opening multiple copies of PowerSyncDatabase
, and calling .connect()
on each. Debug your connection handling by reviewing your code and Instance logs. Make sure you’re only opening one connection per user/session.
While sync operations typically correspond to data mutations on synced rows (those in your Sync Rules), there are several scenarios that can affect your operation count:
New App Installations: When a new user installs your app, PowerSync needs to sync the complete operations history. We help manage this by:
Existing Users: While compacting and defragmenting reduces the operations history, they trigger additional sync operations for existing users.
Sync Rule Deployments: When you deploy changes to Sync Rules, PowerSync recreates the sync buckets from scratch. This has two effects:
We are planning incremental sync rule reprocessing, which will allow PowerSync to only reprocess buckets whose definitions have changed, rather than all buckets.
Unsynced Columns: Any row update triggers a new operation in the logical replication stream, regardless of which columns changed. In other words, PowerSync tracks changes at the row level, not the column level. This means:
UPDATE mytable SET id = id
generates a new operation for each affected row.While selectively syncing columns helps with data access control and reducing data transfer size, it doesn’t reduce the number of sync operations.
The PowerSync Service hosts:
Because of this structure, your hosted data size may be larger than your source database size.
Identify Timing
Review Logs
Example of 'Sync stream complete' logs
Compare Metrics Use the Diagnostics app to compare total rows vs. operations synced to the user device. If you are seeing a much higher number of operations, you might benefit from defragmentation.
Detailed Sync Operations
fetch-operations
command with the --raw
flag:
Accidentally ran up a high bill? No problem — we’ve got your back. Reach out to us at support@powersync.com and we’ll work with you to resolve the issue and prevent it from happening again.