Build, test and ship Manifest V3 extensions

A practical cross-browser resource for building, testing, and publishing modern browser extensions. Every page leads with the constraint that bites first — service worker eviction, permission review, the API the other engine does not have, or the auto-update that landed while the user had twenty tabs open.

4 tracks · 32 topic guides · 191 in-depth pages · Chrome, Firefox and Safari differences on every page

Four tracks through MV3

Pick the track that matches what you are building right now — each one ends where the next begins.

Browse every topic

32 guides, each with runnable code, an execution-context note under every snippet, and the Chrome, Firefox and Safari divergences spelled out.

Testing, Debugging & Performance Optimization

Unit test, end-to-end automate, debug every MV3 execution context, and profile service worker performance — a practical engineering discipline for Chrome, Firefox, and Safari extensions.

Core APIs & Cross-Browser Data Management

Master MV3 storage, messaging, declarativeNetRequest, tabs, and scripting APIs — with cross-browser compatibility patterns for Chrome, Firefox, and Safari extensions.

MV3 Architecture & Extension Lifecycle

Master Manifest V3 service workers, content scripts, popup & options UI, and store compliance — with cross-browser patterns for Chrome, Firefox, and Safari.

UI/UX Patterns & Interactive Components

Build production-ready extension UIs in MV3: popup design, options pages, keyboard shortcuts, context menus, and side panels — with accessibility, theming, and CSP patterns.

Recently added

The newest guides: four new topics — the user's own browser data, build tooling, the address bar, and error reporting from users' machines — plus deeper coverage of every existing topic, from cold-start races in the service worker to shipping releases to three stores from CI.

Bookmarks, History & Downloads APIs

Read and write the user's bookmarks, browsing history and downloads from a Manifest V3 extension — permissions, event models, quotas and the review scrutiny these APIs attract.

Build Tooling & Bundlers

Build a Manifest V3 extension with a modern toolchain — bundling multiple entry points, TypeScript, per-browser manifests, development reload, and the output constraints stores enforce.

Omnibox & Address Bar Integration

Add a keyword to the browser's address bar with chrome.omnibox — suggestions as the user types, handling Enter and Alt-Enter, safe navigation, and what Firefox and Safari offer instead.

Error Monitoring & Crash Reporting

Find out when a Manifest V3 extension fails on users' machines — capturing errors in every context, reporting within a privacy policy, symbolicating stacks, and turning reports into fixes.

Registering Listeners at the Top Level

Why every MV3 service worker event listener must be added synchronously on the first pass of the script — what goes wrong otherwise, and patterns that keep registration early as code grows.

Messages Sent While the Worker Is Starting

Diagnose and fix the MV3 cold-start race where a popup or content script message arrives before the service worker has registered its listeners — queueing, readiness and retry.

Loading Popup Data Without a Flash of Empty UI

Render an MV3 popup with real data on the first frame — synchronous-feeling storage reads, skeletons that do not flash, and never waiting on a cold service worker.

Driving Service Worker State from a Test

Control an MV3 service worker from Playwright — evaluating in the worker, seeding storage, firing alarms on demand, forcing eviction and cold starts, and asserting on state the UI never shows.

Automating Chrome Web Store Uploads with the API

Publish to the Chrome Web Store from CI — OAuth credentials for the API, uploading a package, submitting for review with a staged rollout percentage, and reading the resulting status.

Start here

Coming from MV2

Your background page is now an evictable service worker, and that single change explains most of the bugs you are about to meet.

Migration guide

Building the interface

Popups, options pages, side panels and context menus — including which surface is right for state the user needs to keep visible.

UI patterns

Getting it published

Permission justifications reviewers accept, the audit that catches rejections before upload, and a release pipeline that reaches all three stores.

Submission & compliance

Shipping version two

An auto-update lands on a running browser: storage migrations that survive eviction, and the open tabs still running last week's content script.

Updates & migration