Fasty allow you now to create PWA easily. I invite you to read the Google documentation about it.
Requirements are :
Create a new page and call it Manifest and set the slug to manifest.json
{
"short_name": "Fasty's Blog",
"name": "Fasty's Blog",
"icons": [
{
"src": "https://resize.ovh/r/62ca5490-c029-11e9-b8b8-7dffa8888a54/192",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "https://resize.ovh/r/62ca5490-c029-11e9-b8b8-7dffa8888a54/512",
"type": "image/png",
"sizes": "512x512"
}
],
"start_url": "/",
"background_color": "#3367D6",
"display": "standalone",
"scope": "/",
"theme_color": "#3367D6"
}
On your home page, add this javascript code
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('{{ dataset | title=service-worker.js | js | only_url#js }}', { scope: '/' })
.then((reg) => {
});
});
}
</script>
{{ dataset | title=service-worker.js | js | only_url#js }} is a new shortcut for getting an URL from a dataset content. This one mean : Get dataset with title == service-worker.js and prepare the URL for the js field and set the extension to js.
It will return an URL like: /:lang/ds/:key/:field/:rev./:ext (e.g. /en/ds/34941052/js/_aDb5i8y--_.js
We are going to use a datatype to manage our javascript scipts
Once done, you'll be able to manage your scripts within datasets menu. Create a new one with service-worker.js as title and this code as content :
const CACHE_NAME = "fasty-0-4"; // use anything different
const urlsToCache = [
'/', '/en', '/en/home' // Define the cache you want
];
self.addEventListener('install', function(event) {
event.waitUntil(
caches.open(CACHE_NAME)
.then(function(cache) {
return cache.addAll(urlsToCache);
})
);
});
// Serve cache
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request)
.then(function(response) {
if (response) {
return response;
}
return fetch(event.request);
}
)
);
});
Now you just need to add in your layout JS the code for displaying the app installation bar.
let deferredPrompt;
window.addEventListener('beforeinstallprompt', (e) => {
deferredPrompt = e;
showInstallPromotion();
});
It's time to check if your PWA is ready (or not). For that, simply open the developer console in Google Chrome and go to the Audit tab. Generate the report and check result.
This is what I have for https://pwa.fasty.ovh