Maxim Salnikov
@webmaxru
Progressive Web Apps — what are the advantages
Developer Audience Lead at Microsoft
A useful design pattern, not a formalized standard.
* but not everything**
** use progressive enhancement strategy
My App
App
Service-worker
Browser/OS
Event-driven worker
Cache
fetch
push
sync
self.addEventListener('install', event => {
    // Use Cache API to cache html/js/css
})
self.addEventListener('activate', event => {
    // Clean the cache from the obsolete versions
})
self.addEventListener('fetch', event => {
    // Serve assets from cache or network
})// Setting up an application shell
precacheAndRoute(self.__WB_MANIFEST);
// Runtime caching API calls
registerRoute(
  ({ url }) => url.hostname.includes("/api/"),
  new StaleWhileRevalidate()
);
// Your own listeners
self.addEventListener("push", (event) => {});Service Worker with "fetch"
Web App Manifest
{
{
  "name": "My PWA",
  "start_url": "/",
  "icons": [{
    "src": "icons/512x512.png",
    "sizes": "512x512",
    "type": "image/png"
  }]
}"shortcuts": [{
  "name": "Upload Audio File",
  "url": "/upload-mp3",
  "icons": [{
    "src": "/icon-mp3.png",
    "sizes": "192x192"
  }]
}]{
  "display":
    "fullscreen" |
    "standalone" |
    "minimal-ui" |
    "browser"
}titlebar-area-x
titlebar-area-y
titlebar-area-width
titlebar-area-height{
  "display_override": "window-controls-overlay"
}{
  "display_override": "tabbed"
}Maxim Salnikov
@webmaxru