Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to do skipwaiting with register-service-worker in vue app?

I have the following registerServiceWorker.ts in my application

/* eslint-disable no-console */

import { register } from 'register-service-worker'

if (process.env.NODE_ENV === 'production') {
    register(`${process.env.BASE_URL}service-worker.js`, {
        ready() {
            console.log(
                'App is being served from cache by a service worker' 

            )
        },
        registered() {
            console.log('Service worker has been registered.')
        },
        cached() {
            console.log('Content has been cached for offline use.')
        },
        updatefound() {
            console.log('New content is downloading.')
        },
        updated() {
            console.log('New content is available; please refresh.')
            //@ts-ignore
            self.skipWaiting();
        },
        offline() {
            console.log('No internet connection found. App is running in offline mode.')
        },
        error(error) {
            console.error('Error during service worker registration:', error)
        }
    })
}

How would I trigger the skipwaiting from code in the updated event?

like image 333
Poul K. Sørensen Avatar asked Jan 01 '26 03:01

Poul K. Sørensen


1 Answers

I figured out how to configure the service worker to automatic skip waiting in my vue application, using vue.config.js.

const webpack = require('webpack');

module.exports = {
    lintOnSave: false,
    chainWebpack: (config) => {
        ...
    },
    configureWebpack: {
        ...
    },
    pwa: {
        ...
        workboxPluginMode: 'GenerateSW',
        workboxOptions: {
            skipWaiting: true
        }
    },
    pluginOptions: {
      ...
    },
    css: {
        // Enable CSS source maps.
        sourceMap: process.env.NODE_ENV !== 'production'
    },
    devServer: {
       ...
    }
};
like image 92
Poul K. Sørensen Avatar answered Jan 06 '26 08:01

Poul K. Sørensen



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!