Skip to content

feat: PWA support — make Reframe installable as an offline-capable progressive web app #663

@magic-peach

Description

@magic-peach

Reframe runs entirely in the browser with no server calls during video processing. This makes it a perfect candidate for a Progressive Web App that users can install to their home screen and use offline.

What to build

  1. Add a public/manifest.json (or app/manifest.ts for Next.js App Router):

    • name, short_name, description
    • start_url: "/"
    • display: "standalone"
    • icons at 192x192 and 512x512 (create simple reframe logo icons)
  2. Add a <link rel="manifest"> to src/app/layout.tsx

  3. Register a service worker that caches the app shell for offline use (the FFmpeg.wasm assets can be cached after first load):

    • Use Next.js next-pwa or write a lightweight custom service worker
    • Cache strategy: network-first for HTML, cache-first for wasm/js assets
  4. Add an "Install app" button that appears when the browser fires beforeinstallprompt

Important constraint

This project uses output: "export" (static export). Middleware, API routes, and server-side features are not available. The service worker must be a static file in public/.

Acceptance criteria

  • App passes PWA audit in Chrome DevTools Lighthouse (≥ 90 PWA score)
  • App can be installed to home screen on Chrome/Edge (desktop and Android)
  • App shell loads offline after first visit
  • No regressions to existing export functionality
  • bun run build succeeds without errors

Screen Recording Required

Your PR for this issue must include a screen recording showing the feature working on your local machine (bun run devhttp://localhost:3000). PRs without a recording will not be merged.

See CONTRIBUTING.md for how to record.

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions