PWA / Offline / Service Workers
Make your web app installable, offline-capable, and push-enabled.
In 2026 PWAs are first-class on Android (Play Store via TWA), Chromebooks, Windows (Microsoft Store via PWA Builder), and progressively better on iOS (Add-to-Home-Screen has gotten meaningfully better in iOS 18+, but you still don't get Web Push without explicit user install).
Service worker / PWA frameworks
- ★ Serwist — modern Workbox successor; first-class Next.js / Vite support; the default for new projects.
- Workbox (Google) — the foundation; still maintained and excellent for vanilla setups.
- Vite PWA plugin (
vite-plugin-pwa) — Workbox-powered Vite integration; the default in Vite-based stacks (SvelteKit, Astro, Solid). - next-pwa — older Workbox wrapper for Next.js; many projects have migrated to Serwist.
@remix-pwa/sw— service-worker tooling for React Router 7.
Manifests / install prompts
web-app-manifestspec — author by hand, or use:- PWA Asset Generator — generates icons / splash screens / favicons from a single SVG.
- realfavicongenerator.net — favicon + manifest packs.
@vite-pwa/assets-generator— Vite-friendly icon pipeline.- PWA Builder — Microsoft-run free service that audits your manifest and packages for Play Store / App Store / Microsoft Store.
Local storage / offline data
- ★ Dexie.js — IndexedDB wrapper; the default. Has a sync addon (Dexie Cloud).
- idb — minimal IndexedDB wrapper from Jake Archibald; no opinions, just types.
- localForage — older; key-value over IndexedDB / WebSQL.
- RxDB — reactive offline-first DB; pluggable storage; sync adapters for many backends.
- Watermelon DB — RN-first but works on web.
- PGlite — Postgres compiled to WASM; runs in the browser. Pair with ElectricSQL or PowerSync for sync.
- SQLite WASM (
@sqlite.org/sqlite-wasm,wa-sqlite) — full SQLite in the browser via OPFS.
Sync engines (offline-first)
- Replicache, Zero (Rocicorp) — sync engines.
- PowerSync, ElectricSQL — Postgres ↔ SQLite sync.
- Triplit, InstantDB — full DB + sync layer.
- Yjs / Automerge — CRDTs (great if multi-device is also multi-user).
Push
- Web Push API — standard; use
web-pushnpm or your hosting platform's wrapper. - OneSignal — cross-platform push (web + iOS via wrapper + Android), generous free tier.
- Firebase Cloud Messaging — works for web push too.
When PWA isn't enough
If you need iOS push, Bluetooth, NFC, biometrics, or background location, you'll need a native shell — see Mobile Packaging.
Pick this if…
- Default new project that should be installable: Serwist (Next.js) or Vite PWA (Vite-based).
- Just need offline reads + writes that sync later: Dexie + a small sync layer.
- Need real offline-first multi-device: PowerSync, ElectricSQL, Replicache, or Zero.
- Need Postgres queries offline: PGlite + ElectricSQL.
- Push notifications, cross-platform: OneSignal.