Skip to main content
Neon Realtime lets your app subscribe to a SQL query on Neon Postgres and get updates as the data changes. Neon launched it in public beta in October 2026. It was built by the team behind Electric, who joined Neon in August 2026. PowerSync syncs data from your backend database into a SQLite database inside your app. The app reads and writes that local database directly, so it responds instantly and keeps working without a network connection. PowerSync syncs changes in both directions when the app is connected. PowerSync also supports Neon as a source database, so you can use it with an existing Neon project.
This comparison reflects both products as of October 2026. Neon Realtime is in beta and is changing quickly. Check the Neon Realtime docs for its current status.

At a Glance

How Data Is Stored on the Client

PowerSync maintains a SQLite database on the client. Sync Streams define which rows each client receives, and the PowerSync client SDK writes them into SQLite tables. Your app queries those tables with normal SQLite queries, including joins, aggregates, and sorting. The data persists on the client across app restarts, and after a reconnect, PowerSync normally downloads only the deltas since the last sync. Neon Realtime works differently: there is no client-side database. It keeps the result of each live query in memory. Your app subscribes to a query, receives the full result, and then receives updates as transactions commit. If the connection drops, the app keeps showing the last result. When the connection returns, the subscription loads the query result again. They also differ in what you can query on the source database:
  • Neon live queries can use almost any read-only Postgres query, including joins, aggregates, GROUP BY, ORDER BY, LIMIT, and window functions. Queries can’t call non-deterministic functions such as now().
  • PowerSync Sync Streams select the rows to sync, with support for filters, subqueries, and some joins. They don’t support aggregation, sorting, or LIMIT on the server. Instead, you include those in your queries against the local SQLite database after the rows are synced.

How Writes Work

Neither PowerSync nor Neon Realtime writes directly to the source database from the client. With both, your backend receives a mutation, validates it, and commits it. Your backend also decides how to handle conflicts. Where they differ is what happens to a mutation before your backend accepts it:

Offline Support

PowerSync is built for offline use. Users can read synced data and make changes without a connection. The mutations wait in the upload queue, which survives app restarts, and upload when the client reconnects. See Client Architecture for details. With Neon Realtime, live query results stay available while the app is open, even if the connection drops. For offline persistence, Neon’s documentation points to TanStack DB, which has its own persistence and offline write packages.

TanStack DB

Both products work with TanStack DB, and neither requires it.
  • PowerSync: Collections read from the local SQLite database. They can load data eagerly or on demand. The integration is in alpha. See docs.
  • Neon Realtime: Each collection is backed by one live query. TanStack DB manages optimistic state for writes while your backend commits them.

Auth and Permissions

PowerSync clients connect with a JWT, either from your auth provider or issued by your backend. Sync Streams use claims from the token, such as the user ID, to decide which rows each client receives. Your backend authorizes writes when it receives them from the upload queue. See Authentication. Neon Realtime puts read authorization in your backend instead. When the app needs data, your backend authenticates the user, builds the SQL query with the user’s parameters, and seals it into a short-lived token. The client uses that token to subscribe and cannot read or change the query inside it. Your backend can use any authentication method. Neon Realtime does not support Postgres row-level security (RLS) yet. Neon says it aims to add RLS before general availability.

Source Databases

Maturity labels for PowerSync as documented in Feature Status.

Client SDKs and Platforms

PowerSync maturity labels as documented in Feature Status. See Supported Platforms for minimum versions and platform details. On the backend, Neon Realtime also provides adapters for defining queries with Drizzle and Kysely. PowerSync supports Drizzle and Kysely on the client, along with other ORMs.

Hosting and Open Source

You can’t self-host Neon Realtime. If you need to run sync on your own infrastructure, for example for data residency or compliance, PowerSync supports that with the Open Edition or the Enterprise Self-Hosted Edition.
You enable Neon Realtime per Neon branch, and it works with Neon branching and scale-to-zero. The Realtime service is free during the beta, but Neon still bills for database compute and data transfer.

Learn More