Choose Web Or PWA

Web is the default when the product can live inside browser constraints. PWA is the next rung when installability, offline behavior, or device integration matters but full native is not justified.

Decision Table

NeedPickWhy
Docs, reports, generated snapshotsStatic outputBuild once, host cheaply, minimal ops
Content-heavy site with a few interactive islandsAstroStatic-first with focused hydration
Private lab previewCaddy tailnetFast, private, no public exposure
Shareable protected static surfaceStatic hosting plus Access-like protectionReachable without tailnet while preserving auth boundary
Installable/offline workflowPWAManifest, service worker, cache/IndexedDB, offline fallback
Auth, sessions, actions, server-only dataSSR/API runtimeRuntime exists for concrete server features
Heavy local serviceLocal service behind protected routeDo not convert everything to serverless if the workload is local/heavy

PWA Minimum

A credible PWA needs:

  • HTTPS in production.
  • Web app manifest.
  • Service worker.
  • Offline fallback.
  • Cache/update strategy.
  • Install testing on target browsers.
  • Device/browser compatibility checks for required APIs.

Avoid PWA When

  • The killer feature depends on restricted mobile permissions.
  • The app needs reliable background execution beyond web support.
  • Store-native trust is a requirement.
  • Browser differences create the core support burden.

Gotcha: A PWA is not a way to skip product testing. You still need Android Chrome, iOS Safari, install, offline, cache invalidation, and update-path checks.