Skip to content

Fix PWA install reliability and startup performance - #5

Merged
cursor[bot] merged 6 commits into
mainfrom
cursor/fix-pwa-performance-df55
Sep 4, 2026
Merged

cursor[bot] merged 6 commits into
mainfrom
cursor/fix-pwa-performance-df55

Conversation

@rawshn97

@rawshn97 rawshn97 commented Sep 4, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • register and refresh the service worker immediately so install eligibility is not delayed by page assets
  • preserve native Chromium installation while adding honest manual-install and already-installed guidance
  • detect existing Android PWA installs and make the launcher name easier to find
  • cut the icon font from 3.7 MB to 6 KB, remove third-party font requests, and eliminate a duplicate logo download
  • serve cached navigations immediately for fast installed-app launches
  • force precache requests past Chrome's HTTP cache so new worker versions cannot reinstall stale JavaScript
  • eliminate delayed install and disconnected-state reflows that were harming LCP/CLS
  • fix programmatic color restoration incorrectly forcing Dynamic mode 32 into Static mode 1
  • strengthen PWA regression checks and make icon verification portable on the Ubuntu CI runner
  • update the shipped PWA spec and changelog

Root cause

The PWA itself was installable; Chrome reported zero manifest/installability errors. Installation was delayed because service-worker registration waited for a 3.7 MB font and the fallback appeared before the worker/native prompt. More importantly, new service-worker cache versions could be repopulated from Chrome's four-hour HTTP cache, preserving old broken JavaScript across repeated fixes. Chrome also suppresses its prompt when the app is already installed, while Android may put the app only in the app drawer.

Verification

  • static PWA contract, 65 required IDs, all JavaScript syntax, manifest JSON, and icon dimensions pass
  • clean Android Chrome profile: zero manifest/installability errors, active service worker, native Install action visible
  • simulated prompt-unavailable Android: immediate honest Install help path passes
  • simulated installed PWA: Find app and Android app-drawer guidance pass
  • v62 migration replaces a reproduced stale cached module with fresh code and restores first-run Dynamic mode 32
  • offline launch: 36 ms navigation; cached launch remains 34 ms under simulated 3-second network latency
  • Material Symbols payload: 3,852,536 bytes → 6,120 bytes (99.84% reduction)
  • Lighthouse: performance 99, best practices 100, FCP 1.4s, LCP 1.8s, TBT 10ms, CLS 0.06, 125 KiB total
  • GitHub CI and Vercel checks pass
Open in Web Open in Cursor 

Co-authored-by: Roshan Raj Mishra <mishra.roshanraj@gmail.com>
@vercel

vercel Bot commented Sep 4, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
ble_controller Ready Ready Preview Sep 4, 2026 9:52pm UTC

Co-authored-by: Roshan Raj Mishra <mishra.roshanraj@gmail.com>
Co-authored-by: Roshan Raj Mishra <mishra.roshanraj@gmail.com>
Co-authored-by: Roshan Raj Mishra <mishra.roshanraj@gmail.com>
Co-authored-by: Roshan Raj Mishra <mishra.roshanraj@gmail.com>
Co-authored-by: Roshan Raj Mishra <mishra.roshanraj@gmail.com>
@rawshn97
rawshn97 marked this pull request as ready for review September 4, 2026 21:54
@cursor
cursor Bot merged commit 65d9c69 into main Sep 4, 2026
3 checks passed
@cursor
cursor Bot deleted the cursor/fix-pwa-performance-df55 branch September 4, 2026 21:55

This branch was successfully deployed

1 active deployment
Preview — a485e3ef Deployed Sep 4, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants