Background Service Workers
Learn how background service workers manage events, persistent logic, and lifecycle within your extension.
Background Service Workers is a free Browser Extensions Development (Chrome & Edge) lesson on CoddyKit — lesson 2 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Browser Extensions Development (Chrome & Edge) learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Extension's Brain: Service Workers
Welcome to the core of your Manifest V3 extension: Background Service Workers! Think of them as the silent brain of your extension.
They're responsible for listening to browser events, managing persistent logic, and ensuring your extension runs efficiently without constantly consuming resources.
MV3: Why Service Workers?
In Manifest V2, extensions often used 'persistent background pages' that ran constantly. Manifest V3 introduced service workers as a more modern, energy-efficient alternative.
- Event-Driven: They only wake up when an event occurs.
- Temporary: They go idle and terminate when not needed.
- Energy-Saving: This 'sleep-wake' cycle saves battery and memory.
Declaring Your Service Worker
To use a service worker, you must declare it in your manifest.json file. This tells the browser which JavaScript file acts as your background script.
It's specified under the 'background' key, pointing to your service worker script.
{
"manifest_version": 3,
"name": "My Service Worker Extension",
"version": "1.0",
"background": {
"service_worker": "service-worker.js"
},
"action": {
"default_popup": "popup.html"
}
}Service Worker Lifecycle
Unlike a traditional always-on program, a service worker has a dynamic lifecycle:
- It activates when an event it's listening for occurs.
- It runs its associated tasks.
- After a period of inactivity (usually a few seconds), it goes idle and eventually terminates.
It will reactivate the next time an event triggers it.
Listening for Events
Service workers primarily function by listening for browser events using the chrome API. When an event fires, your worker code springs into action!
Common events include:
chrome.runtime.onInstalled: When the extension is installed or updated.chrome.action.onClicked: When the extension's toolbar icon is clicked.
Event: On Extension Installed
Let's write a simple service worker that logs a message when your extension is first installed or updated. This is a great place for one-time setup tasks.
Create a file named service-worker.js:
// service-worker.js
chrome.runtime.onInstalled.addListener(() => {
console.log('CoddyKit Extension installed or updated!');
// You could set default preferences here
chrome.storage.sync.set({ 'theme': 'light' });
});Event: On Extension Icon Click
Another common event is when the user clicks your extension's icon in the browser toolbar. You can make your service worker respond to this interaction, for example, by opening a new tab.
// service-worker.js
chrome.action.onClicked.addListener((tab) => {
console.log('Extension icon clicked! Current tab ID:', tab.id);
// Open a new tab to a specific URL
chrome.tabs.create({ url: 'https://www.google.com/search?q=CoddyKit' });
});Debugging Your Service Worker
To see your console.log messages and debug your service worker, you'll use the browser's Developer Tools.
In Chrome/Edge, go to chrome://extensions, enable 'Developer mode', find your extension, and click the 'service worker' link to open its dedicated DevTools window.
Quick Check: Service Worker Role
What is a key characteristic of Manifest V3 background service workers compared to Manifest V2 background pages?
Recap: Background Service Workers
Great job! You've learned about the fundamental role of Background Service Workers in Manifest V3 extensions:
- They are the event-driven 'brains' of your extension.
- They are declared in
manifest.json. - They have a temporary lifecycle, waking for events and then terminating.
- You use event listeners (e.g.,
chrome.runtime.onInstalled,chrome.action.onClicked) to make them react to browser events.
Next, we'll dive into how permissions control what your extension can do!
Frequently asked questions
Is the “Background Service Workers” lesson free?
Yes — the full text of “Background Service Workers” is free to read here on the web, and the Browser Extensions Development (Chrome & Edge) course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Browser Extensions Development (Chrome & Edge) course, upgrade to CoddyKit PRO.
What will I learn in “Background Service Workers”?
Learn how background service workers manage events, persistent logic, and lifecycle within your extension. You practise Browser Extensions Development (Chrome & Edge) with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start Browser Extensions Development (Chrome & Edge)?
No prior experience is required. Browser Extensions Development (Chrome & Edge) on CoddyKit is structured for beginners through advanced learners; this is — lesson 2 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Background Service Workers” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this Browser Extensions Development (Chrome & Edge) lesson?
Yes. Every Browser Extensions Development (Chrome & Edge) lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- Understanding Manifest V3 Structure
- Background Service Workers
- Permissions and Host Matching
- Action, Icons & the Toolbar Button