Answer
What are the requirements for the Chrome install prompt?
Chrome fires beforeinstallprompt when the site is served over HTTPS, links a valid manifest with name, start_url and 192px + 512px icons, registers a service worker with a fetch handler, and passes a user-engagement heuristic (typically one interaction and ~30 seconds of use). Any failing criterion silently blocks the prompt.
The technical checklist
HTTPS. Manifest with name (or short_name), start_url, display "standalone" or "fullscreen", icons at 192px and 512px, background_color and theme_color. A registered service worker whose fetch handler responds to at least the start_url.
The engagement heuristic
Chrome requires a click or tap on the page and, historically, ~30 seconds of active use. This is why beforeinstallprompt often fires late — not on page load.
The suppression rules
If the user dismisses twice, Chrome backs off for 90 days. Testing tip: use a fresh incognito window per attempt.