PHPackages                             lekoala/silverstripe-pwa - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. lekoala/silverstripe-pwa

ActiveSilverstripe-vendormodule

lekoala/silverstripe-pwa
========================

Create your progressive web app (PWA) with SilverStripe

313PHP

Since Jan 22Pushed 3mo ago2 watchersCompare

[ Source](https://github.com/lekoala/silverstripe-pwa)[ Packagist](https://packagist.org/packages/lekoala/silverstripe-pwa)[ RSS](/packages/lekoala-silverstripe-pwa/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

SilverStripe Pwa module
=======================

[](#silverstripe-pwa-module)

[![Build Status](https://github.com/lekoala/silverstripe-pwa/actions/workflows/ci.yml/badge.svg)](https://github.com/lekoala/silverstripe-pwa/actions/workflows/ci.yml/badge.svg)[![scrutinizer](https://camo.githubusercontent.com/1f7f0e6b346b1a8cebde91c8d92cbf1235e07b527ea813f58e2dfd6f0a5c5858/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f6c656b6f616c612f73696c7665727374726970652d7077612f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/lekoala/silverstripe-pwa/)[![Code coverage](https://camo.githubusercontent.com/db0227743db69ad4936183d7630d853c75bf6b382bf41ce37defa29ab730c87c/68747470733a2f2f636f6465636f762e696f2f67682f6c656b6f616c612f73696c7665727374726970652d7077612f6272616e63682f6d61737465722f67726170682f62616467652e737667)](https://codecov.io/gh/lekoala/silverstripe-pwa)

Features
--------

[](#features)

- Support push notifications
- Generate a valid manifest
- Provides a default configurable service worker that can cache assets

Generate icons
--------------

[](#generate-icons)

Use the cli `npm run generate-assets(-root)` (if you have a `app/images/logo.svg` file) or upload a zip file with the required icons

Note: pay attention to [maskable icons](https://web.dev/maskable-icon/). You can test their size in the developer console. You can test them in [maskable.app](https://maskable.app/)

Subscribe to push notifications
-------------------------------

[](#subscribe-to-push-notifications)

client.js provides some base code for this. You need to put somewhere a checkbox that can be used to toggle push notifications on/off.

```
 Enable notifications
```

This is dealt with by client.js. You can replace client code by your custom code or disable it entirely

```
LeKoala\SsPwa\ServiceWorkerController:
  enable_client_js: false
  custom_client_path: "/my/custom/path"
```

Service worker
--------------

[](#service-worker)

This module provides a default service worker. You can use your own if needed

```
LeKoala\SsPwa\ServiceWorkerController:
  custom_sw_path: "/my/custom/path"
```

Exclude from cache
------------------

[](#exclude-from-cache)

If you want to exclude specific patterns (eg: pdf files) from cache, you can use:

```
LeKoala\SsPwa\ServiceWorkerController:
  exclude_from_cache:
    - '/\.pdf$/i'
```

Use vapid keys
--------------

[](#use-vapid-keys)

You can generate the vapid keys with this [online tool](https://tools.reactpwa.com/vapid) or with the cli `npm run gen-push-keys`

You need to save them either in your .env file or as YML config.

```
PUSH_PUBLIC_KEY='BK1Zt63e94HgYNm-s9aquI85AUdDRz3uKMxue7woQVZv0_3txywXPgyYd2WPJetayKYq3E_AObBGD9rHWOL_...'
PUSH_PRIVATE_KEY='1nKKQnzGRMNit-TuvklqoTY_ENO8eAybp1MsZWx0...'

```

Sending push notifications
--------------------------

[](#sending-push-notifications)

You can use the following piece of code

```
PushSubscription::sendPushNotifications($where, $data);
```

Credits
-------

[](#credits)

Thanks to  for some inspiration :-)

Compatibility
-------------

[](#compatibility)

Tested with ^5

Maintainer
----------

[](#maintainer)

LeKoala -

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance53

Moderate activity, may be stable

Popularity9

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/701d0bd1837aa291814dafee750a02471e7e0d20749626350231ffd3bfec0ec1?d=identicon)[lekoala](/maintainers/lekoala)

---

Top Contributors

[![lekoala](https://avatars.githubusercontent.com/u/250762?v=4)](https://github.com/lekoala "lekoala (26 commits)")

---

Tags

modulepushpush-notificationspwasilverstripe

### Embed Badge

![Health badge](/badges/lekoala-silverstripe-pwa/health.svg)

```
[![Health](https://phpackages.com/badges/lekoala-silverstripe-pwa/health.svg)](https://phpackages.com/packages/lekoala-silverstripe-pwa)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
