EasyPWA allows you to create a PWA easily with only one file.

Usage no npm install needed!

<script type="module">
  import aboutdavidEasypwa from 'https://cdn.skypack.dev/@aboutdavid/easypwa';



EasyPWA allows you to create a PWA easily. Like all you have to do is add:

var pwa = window.PWAinit();
window.easyPWA.inject(pwa, "/sw.js");

and copy the file from easypwa/sw.js to the folder your server is running and you have a PWA. Granted it has the default branding, but you can change those values. For example, to change the name, just modify the "name" and "short_name" attributes:

var pwa = window.easyPWA.init();
pwa.name = "Hello World";
pwa.short_name = "Hello World";
window.easyPWA.inject(pwa, "/sw.js");

To see all of the options you can configure, please see the MDN docs on Web app manifests

Upgrading from v1 to v2:

There is some API/code changes in v2 and higher to make it easier on devs making an application using this and fix some issues on a few browsers. So, the code is a lot more stable on v2+


npm install easypwa

Requiring the module:

<script src="/path/to/easypwa.js"></script>


init(): Returns a JSON object with a sample manifest object. Normally used to initialize the PWA. Usage:



var pwa = window.easyPWA.init();

icon(url, size, ext): Used to generate JSON objects for the "icons" field for the manifest. url is the URL of the icon, size is the size (widthxheigh).


    "png" // or file extention
  ) // {src: "url", sizes: "widthxheight", type: "image/png"}


pwa.icons = [

inject(): This is the function that injects/registers the scripts to make the PWA auctally work. Usage:

window.easyPWA.inject(pwaObject, "/path/to/service-worker.js");


var pwa = window.easyPWA.init();
window.easyPWA.inject(pwa, "/sw.js");


The example is located in index.html