pglite

v2026.09.24

PGlite embeds PostgreSQL 17.4 in the browser and Node.js via WASM, under 3MB gzipped. Covers storage backends, queries, transactions, extensions (pgvector, pg_trgm, full-text search), live queries, React integration, multi-tab worker architecture, and Electric sync. Use when setting up PGlite, choosing storage backends, writing queries or transactions, configuring extensions, implementing live queries, integrating with React, managing multi-tab workers, or syncing with Electric.

GitHub
Install command
npx skhub add oakoss/pglite
Markdown
SKILL.md

PGlite

Overview

PGlite is a lightweight WASM build of PostgreSQL 17.4 that runs directly in the browser, Node.js, and Bun with no external dependencies. It provides a full Postgres query engine with extensions, transactions, COPY support, and listen/notify in under 3MB gzipped.

When to use: Local-first apps needing a real SQL engine, browser-based analytics, offline-capable PWAs, embedded Postgres for testing, prototyping without a server.

When NOT to use: High-concurrency server workloads (use native Postgres), apps requiring full Postgres replication, Safari OPFS storage (not supported), write-heavy multi-tab scenarios without leader election.

Quick Reference

PatternAPIKey Points
Create instancePGlite.create(dataDir?, options?)Awaits ready internally
In-memory DBPGlite.create()Default, ephemeral storage
IndexedDB storagePGlite.create('idb://dbname')Persists in browser
OPFS storagePGlite.create('opfs-ahp://dbname')Worker only, no Safari
Parameterized querydb.query<T>(sql, params)Returns QueryResult<T>
Tagged templatedb.sql\SELECT ...``Auto-parameterized
Multi-statement execdb.exec(sqlString)No params, returns void
Transactiondb.transaction(async (tx) => {})Full ACID, use tx.query
Load extensionextensions: { vector } in createLoaded at construction
Live querydb.live.query(sql, params, cb)Re-runs on data change
Incremental querydb.live.incrementalQuery(sql, params, key, cb)Diffs large result sets
Live changesdb.live.changes(sql, params, key, cb)Raw insert/update/delete ops
React hookuseLiveQuery(sql, params)Returns { rows } reactively
Multi-tab workerPGliteWorker + leader electionSingle writer, multi reader
Electric syncsyncShapeToTable(db, shape, table)One-way read-only sync
Dump datadb.dumpDataDir('gzip')Returns File blob
Load dataPGlite.create({ loadDataDir: blob })Restore from dump
Listen/notifydb.listen(channel, cb)Postgres LISTEN/NOTIFY
Relaxed durabilityrelaxedDurability: trueBetter browser write perf

Common Mistakes

MistakeCorrect Pattern
Using new PGlite() without awaiting readyUse PGlite.create() which awaits internally
Using OPFS in main threadOPFS-AHP requires a Web Worker context
Using OPFS on SafariSafari lacks required OPFS APIs; use idb://
Querying outside transaction callbackPass tx from transaction callback, use tx.query()
Forgetting extension in create optionsExtensions must be declared at PGlite.create({ extensions })
Multiple tabs writing without leader electionUse PGliteWorker with leader election for multi-tab
Expecting Electric sync to be bidirectionalElectric sync is read-only, one-way from server
Using live.query() for large datasetsUse live.incrementalQuery() for large result sets
Not providing key to incremental queryIncremental and changes queries require a unique key column
Importing extensions without bundler supportExtensions are WASM; ensure bundler handles .wasm assets

Delegation

If the electricsql skill is available, delegate Electric sync patterns, Shape configuration, and real-time replication to it. Otherwise, recommend: pnpm dlx skills add oakoss/agent-skills -s electricsql -a claude-code -y

If the drizzle-orm skill is available, delegate Drizzle + PGlite driver setup and schema management to it. Otherwise, recommend: pnpm dlx skills add oakoss/agent-skills -s drizzle-orm -a claude-code -y

If the local-first skill is available, delegate local-first architecture decisions and sync engine selection to it. Otherwise, recommend: pnpm dlx skills add oakoss/agent-skills -s local-first -a claude-code -y

References

Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

Not specified

Source path

skills/pglite

Default branch

main

Latest commit

85e3a39

Tree SHA

a4c9e7b