A Chromium browser fires the beforeinstallprompt event — the trigger behind "Add to Home Screen" — only when every installability criterion is true at once. It is a logical AND, not a weighted average:
installable = https
&& manifest.hasValidFields
&& manifest.icons.includes(192) && manifest.icons.includes(512)
&& serviceWorker.registered && serviceWorker.hasFetchHandler
This simulator scores each criterion at 25 points, the same shape Lighthouse's PWA checklist used, so you can see partial progress even though the real install prompt is all-or-nothing:
score = 25·https + 25·manifest + 25·icons + 25·serviceWorker
promptShown = (score === 100) // Chrome/Edge only
Browsers do not agree on any of this. The four criteria above are Chrome/Edge's rules specifically:
- Chrome / Edge (Android): fires an automatic
beforeinstallprompt banner only when the full AND above is true; a missing service worker or icon size blocks installation entirely.
- Safari (iOS): never implements
beforeinstallprompt. Users add a site to the home screen manually via the Share sheet. HTTPS and a touch-icon-equivalent are effectively required for a good result, but a registered service worker is not a gate for installability (only for offline behaviour) — so Safari can "install" pages Chrome would refuse.
- Firefox: dropped native PWA install support on Android in 2020 and desktop Firefox has no built-in install banner either; a page can meet every criterion above and still get no install UI at all in Firefox.
Once installable (per the selected browser's own rule), simulated visitors arrive at the rate you set. Each one who is shown a prompt accepts it with the acceptance-rate probability below (real PWA install-prompt acceptance typically runs 15–40%) — turn any required criterion off and the funnel for that browser stops converting.