Drop-in sync layer for your existing Postgres and backend

Enables an offline-first architecture for real-time reactive apps.
PowerSync architecture summary diagram.PowerSync architecture summary
Tyler Shukert
Supabase
“PowerSync is really bulletproof — every single kind of interaction that you might have with the data, it's got covered.”
Tyler Shukert
Supabase
Sebastian Röhl
HabitKit
“Integrated @powersync_ into an experimental branch of @HabitKit. Setup was pretty easy and fast. Really love the developer experience and I'm amazed how good it works 🤩”
Sebastian Röhl
HabitKit
Praful Mathur
Sarama / 5 Gyres volunteer
“It was incredible to work with PowerSync. Probably the easiest thing that we had to do in terms of development.”
Praful Mathur
Sarama / 5 Gyres volunteer
How it works

Plugs into your existing database,
backend and app

PowerSync architecture overview
Visit this website on your desktop to see a demo
PowerSync architecture overview
INSTANT OFFLINE-FIRST

Build fast, always-available apps

Local reads and writes with a performance-optimized SQLite database make your apps responsive and always available.

No client-side migrations are ever necessary.

// Local queries
db.get(‘SELECT * FROM lists WHERE id = ?‘, [id])

// Local writes
db.execute(‘DELETE FROM lists WHERE id = ?‘, [id])

// Indexing
Index(‘list‘, [IndexedColumn(‘list_id‘)])

// Transactions
db.execute(‘BEGIN TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE account_no = ?‘; UPDATE accounts SET balance = balance + 100 WHERE account_no = ?‘; COMMIT TRANSACTION‘, [account_1, account_2])

Automatically stream data update events from your backend Postgres to users.

Live queries on the local database listen to changes and update your UI in real-time,

// Flutter syntax
db.watch(‘SELECT count() AS count FROM data‘).listen((results) {
  // update UI
}
why powersync

Dynamic partial replication proven at scale

PowerSync was spun off from a product that's been in production for over 10 years.
Our sync rules approach to dynamic partial replication is battle-tested at scale.

bucket_definitions:
  user_lists_and_todos:
    parameters: SELECT token_parameters.user_id as user_id
    data:
       - SELECT * FROM lists WHERE owner_id = bucket.user_id
       - SELECT * FROM todos WHERE created_by = bucket.user_id

Robust consistency using
server reconciliation

We use a proven server reconciliation architecture with a default of last write wins. Developers
can customize conflict resolution if required, and are in full control of the write process.

How TO Try

Get started with PowerSync

Future support

Existing support

Future support

MySQL
PostgreSQL
React Native
& Expo
Kotlin/Native
Oracle
Flutter
Swift
SQL Server
Supabase
Web
(JavaScript & React)
Kotlin Multiplatform
Appwrite
FlutterFlow
Electron
COMMUNITY

Join the community

"How PowerSync approach the community and support us is really outstanding.
I've simply never experienced such support."
Ben M.
Join Discord