🚀 Electric is now 1.0 and Cloud is in public BETA!
Skip to content
Main Navigation ProductUse casesDocsDemosBlogAbout
Sign-up to Cloud
Sign-up
Sign-up to Cloud
Sign-up to Cloud
Sign-up
Sign-up to Cloud

Realtime sync

for Postgres

Sync is the best way of building modern apps. Electric solves sync so that you don't have to.

Sign-up to Cloud
Sign-up
Quickstart
​
GitHub

Electric

Sync subsets of your Postgres data into local apps and services.

Cloud

Hosted sync that's blazing fast and scales to millions of users.

PGlite

Sync into a lightweight WASM Postgres with real-time, reactive bindings.

Demo apps ​

See the kind of applications you can build with Electric and what they feel like to use.

AI Chat

Resilient, multi-user, multi-agent AI chat app powered by Electric.

  • Open demo
  • Source code

Linearlite

Local-first project management app built with Electric and PGlite.

  • Open demo
  • Source code

Notes

Collaborative note-taking app with sync powered by Electric and Yjs.

  • Open demo
  • Source code

Pixel art

Collaborative pixel art editor with real-time multiplayer editing.

  • Open demo
  • Source code

Solves the hard problems, so you don't have to ​

Electric solves data loading, cache invalidation, scaling and availability.
Making your software simpler, faster and more reliable.

Solves state transfer

Replace APIs, data fetching and network error handling with data sync.

  • Simplifies your code
  • No loading spinners

Solves cache invalidation

Replace ttls and expiry policies with realtime sync and automated invalidation.

  • Simplifies your stack
  • No more stale data

Solves scaling

Take the query workload off your database and the compute workload off your cloud.

  • Simplifies your infra
  • Reduces your cloud bill

Solves availability

Take the network off the interaction path and build software that works offline and is resilient by design.

  • Simplifies your ops
  • No more broken apps

Get started now ​

You can start by adopting Electric incrementally, one data fetch at a time.
Using our HTTP API, client libraries and framework hooks.

tsx
import { useShape } from '@electric-sql/react'

const Component = () => {
  const { data } = useShape({
    url: `${BASE_URL}/v1/shape`,
    params: {
      table: `items`
    }
  })

  return (
    <pre>{ JSON.stringify(data) }<pre>
  )
}
Quickstart
API docs
Demos

And you can level-up all the way to syncing into a local embedded PGlite database. With built-in persistence and live reactivity.

tsx
import { PGlite } from '@electric-sql/pglite'
import { live } from '@electric-sql/pglite/live'
import { electricSync } from '@electric-sql/pglite-sync'
import { useLiveQuery } from '@electric-sql/pglite-react'

// Create a persistent local PGlite database
const pg = await PGlite.create({
  dataDir: 'idb://my-database',
  extensions: {
    electric: electricSync(),
    live
  }
})

// Setup the local database schema
await pg.exec(`
  CREATE TABLE IF NOT EXISTS items (
    id SERIAL PRIMARY KEY,
  );
`)

// Establish a persistent shape subscription
await pg.electric.syncShapeToTable({
  shape: { url: `${BASE_URL}/v1/shape` },
  table: 'items',
  primaryKey: ['id'],
})

// Bind data to your components using live queries
// against the local embedded database
const Component = () => {
  const items = useLiveQuery(
    `SELECT * FROM items;`
  )

  return <pre>{JSON.stringify(items)}</pre>
}
Learn more
Star on GitHub

About Contact Legal Docs Demos Blog Sign upPGliteGitHubBlueskyDiscord

Released under the Apache 2.0 License. © 2025 Electric DB Limited.