npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@easy-pwa/beforeinstallprompt-polyfill

v1.0.0-BETA1

Published

Polyfill for enabling the BeforeInstallPrompt event (in PWA context) on browsers which do not support it.

Readme

BeforeInstallPrompt Polyfill

npm version license

Bring the BeforeInstallPromptEvent to browsers that don't support it natively.

Chrome and Edge fire this event automatically, allowing you to invite users to install your PWA. This polyfill does the same for other browsers, so you can offer a consistent install experience across all devices, using the exact same API.

How it works

  1. The polyfill detects the user's browser and dispatches a synthetic BeforeInstallPromptEvent on window
  2. Your code listens for the event and calls event.prompt() when appropriate
  3. A Chrome-like install dialog appears, followed by step-by-step install instructions tailored to the user's browser

Installation

Using jsDelivr is recommended so your users always get install instructions up to date with the latest browser changes. Lock to a major version to avoid breaking changes.

<head>
    ...
    <script type="module" src="https://cdn.jsdelivr.net/npm/@easy-pwa/beforeinstallprompt-polyfill@1"></script>
</head>

Usage

Store the event when it fires, then call event.prompt() on your own trigger — a button, a banner, a custom UI element.

let installPrompt = null;

window.addEventListener('beforeinstallprompt', (event) => {
    installPrompt = event;
    document.getElementById('install-button').hidden = false;
});

document.getElementById('install-button').addEventListener('click', async () => {
    if (!installPrompt) return;

    const result = await installPrompt.prompt();

    if (result.outcome === 'accepted') {
        console.log('User accepted the install prompt');
    }

    installPrompt = null;
    document.getElementById('install-button').hidden = true;
});

Demo

https://easy-pwa.github.io/beforeinstallprompt-polyfill/

Languages

The install instructions are currently available in English and French. The polyfill will not trigger if the user's browser language is not supported.

Contributions for additional languages are welcome — open a PR adding a translation file in resource/translations/.