DEV Community

Cover image for How to remove old service worker?
Bharathvaj
Bharathvaj

Posted on • Originally published at bharathvaj.me

4

How to remove old service worker?

Recently, I revamped my blogging site from Gatsby to NextJS.

My new personal site was built from scratch where I focused more on the design and migrating the contents from the old to new one.

All set, so hosted the site on Vercel and modified the DNS settings to map the domain bharathvaj.me.

To my surprise, I was still seeing the old one. After scratching my head a bit then figured out I completely forgot to handle the service worker. The service worker cached my old site and served it as it should be but unfortunately not for my case.

If you are someone like me, here is the solution for you that worked for me.

Step 1

Replace everything about your previous ServiceWorker with the following code

/public/sw.js

/**
 * Self-Destroy service worker
 */

self.addEventListener('install', function(e) {
  self.skipWaiting();
});

self.addEventListener('activate', function(e) {
  self.registration.unregister()
    .then(function() {
      return self.clients.matchAll();
    })
    .then(function(clients) {
      clients.forEach(client => client.navigate(client.url))
    });
});
Enter fullscreen mode Exit fullscreen mode

Step 2

Just, Deploy your project! 🎉

How it works?

This code will listen for two major events,

  • Install Event which is fired when ServiceWorkerRegistration acquires a new worker. When fired, we are forcing the current waiting service worker to become an active service worker.

  • Activate Event which is fired when the service worker becomes the active worker for a page. When the activate event is fired, the service worker will unregister itself using the self.registration.unregister() method.

Caveat New service worker will get enabled only for the newly opened tabs and not the existing ones. If there are any existing open tabs, then they will still reflect old content.

Happy hacking!

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more