docs/superpowers/plans/2026-05-15-manifest-only-pwa.md
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Remove Reactive Resume's service-worker and Workbox PWA behavior while keeping install metadata.
Architecture: Keep the manifest link and install meta tags in the web root route. Keep manifest data in
apps/web/public/manifest.webmanifest, keep head meta tags in apps/web/src/libs/pwa.ts, and remove the
service-worker registration export plus the vite-plugin-pwa build plugin.
Tech Stack: TanStack Start, Vite, TypeScript, pnpm, Vitest, Workbox removal.
Files:
Modify: apps/web/index.html
Modify: apps/web/vite.config.ts
Modify: apps/web/src/libs/pwa.ts
Modify: apps/web/src/routes/__root.tsx
Delete: apps/web/src/libs/pwa.test.ts
Step 1: Remove vite-plugin-pwa imports and plugin usage
In apps/web/vite.config.ts, remove:
import { VitePWA } from "vite-plugin-pwa";
import { pwaManifest } from "./src/libs/pwa";
Delete the local pwa() helper and remove pwa() from the plugins array.
In apps/web/index.html, add the manifest link, icon links, theme color, and Apple/mobile install meta tags inside
<head> so install metadata is present without plugin HTML injection.
In apps/web/src/libs/pwa.ts, remove the pwaManifest and pwaServiceWorkerRegistrationScript exports so the
module only owns head meta tags.
In apps/web/src/routes/__root.tsx, change the PWA import to:
import { pwaHeadMetaTags } from "@/libs/pwa";
Remove the scripts entry that injects pwaServiceWorkerRegistrationScript in production.
Delete apps/web/src/libs/pwa.test.ts, because the remaining PWA surface is static manifest/head metadata.
Files:
Modify: apps/web/package.json
Modify: pnpm-lock.yaml
Step 1: Remove direct web dependency
Remove this dependency from apps/web/package.json:
"vite-plugin-pwa": "^1.3.0"
Run:
pnpm install --lockfile-only --offline --ignore-scripts
Expected: the lockfile no longer contains vite-plugin-pwa or unused Workbox packages required only by that
plugin. If the offline lockfile refresh is unavailable, edit the lockfile narrowly and verify with git diff.
Files:
Inspect: apps/web/.output or apps/web/dist
Step 1: Run focused checks
Run:
pnpm --filter web typecheck
pnpm --filter web build
Expected: both commands complete successfully.
Run:
find apps/web/.output apps/web/dist -name 'sw.js' -o -name 'workbox-*' -o -name 'registerSW.js'
Expected: no service-worker or Workbox files are printed. If one output directory does not exist, the command may print a find warning for that path; inspect the directory that exists.
Run:
rg -n "serviceWorker|register\\(\"/sw\\.js\"|VitePWA|vite-plugin-pwa|workbox" apps/web/src apps/web/vite.config.ts apps/web/package.json
Expected: no matches for the removed PWA service-worker path.