Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Service workers occur on their own threads. This means service workers' tasks won't compete for attention with other tasks on the main thread.

Debugging service worker

...

Workbox

Why do we use workbox?

There's lots of complex interactions that are hard to get right [in service workers APi and logic]. Workbox is a set of modules that simplify common service worker routing and caching. Each module available addresses a specific aspect of service worker development. Workbox aims to make using service workers as easy as possible, while allowing the flexibility to accommodate complex application requirements where needed. https://developer.chrome.com/docs/workbox/what-is-workbox/

How service worker is composed in MageSuite

Registration

Before the body end register service worker template is added:

...

Code Block
<?php
/** @var $block \MageSuite\Pwa\Block\Data */
$url = $block->getBaseUrl() . 'service-worker.js';
?>
<script>
if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('<?= /* @noEscape */ $url ?>');
}
</script>

service-worker.js file

pwa_serviceworker_index.xml layout composes service worker script ( service-worker.js ) with smaller templates.

templates/service-worker.phtml - parent template

Service worker file chunks

Import workbox script

service-worker/workbox.phtml - import workbox script and set optional debug mode (can be configured in the admin panel)

...

Example of composer service-worker script: https://demo.magesuite.io/service-worker.js

Debugging workbox

...

Manifest

pwa_manifest_index.xml layout adds a link to manifest.json, which is generated based on admin configuration

...