In some of those cases, the user may want to register and start syncing data with other devices or users at a later point, while other users may keep on using the app without ever registering or going online.” PowerSync supports these scenarios. By default, all local changes will be stored in the upload queue, and will be uploaded to the backend server if the user registers at a later point. A caveat is that if the user never registers, this queue will keep on growing in size indefinitely. For many applications this should be small enough to not be significant, but some data-intensive applications may want to avoid the indefinite queue growth. There are two general approaches we recommend for this:Documentation Index
Fetch the complete documentation index at: https://docs.powersync.com/llms.txt
Use this file to discover all available pages before exploring further.
1. Local-only tables
- Flutter
- JavaScript
- Kotlin
- Swift
- .NET
- Rust
Flutter + Drift users: If you’re using local-only tables with
viewName overrides, Drift’s watch streams may not update correctly. See the troubleshooting guide for the solution.| Client framework | Link |
|---|---|
| Flutter To-Do List App (with Supabase) | supabase-todolist-optional-sync |
| React To-Do List App (with Supabase) | react-supabase-todolist-optional-sync |
2. Clearing the upload queue
The upload queue can be cleared periodically (for example on every app start-up), avoiding the growth in database size over time. This can be done using:ps_oplog table. We do not recommend deleting this data, as it can cause or hide consistency issues when later uploading the data. If the overhead in ps_oplog is too much, rather use the local-only tables approach.