pglite

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.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "pglite" with this command: pnpm dlx skills add oakoss/agent-skills

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

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

playwright

No summary provided by upstream source.

Repository SourceNeeds Review
100-oakoss
Automation

ui-ux-polish

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

tanstack-form

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

find-skills

No summary provided by upstream source.

Repository SourceNeeds Review