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.
- CI & Release Automation · 6 pages
- Debugging Extension Contexts in MV3 · 6 pages
- End-to-End Testing Automation for MV3 Extensions · 6 pages
- Error Monitoring & Crash Reporting · 4 pages
- Performance Profiling & Optimization for MV3 Extensions · 6 pages
- Unit & Integration Testing for MV3 Extensions · 6 pages
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.
- Alarms & Scheduling Background Jobs · 6 pages
- Bookmarks, History & Downloads APIs · 5 pages
- Chrome Storage API & Sync · 8 pages
- Cross-Browser API Compatibility · 6 pages
- Declarative Net Request Rules · 6 pages
- Identity & OAuth Authentication · 6 pages
- Message Passing Architecture in MV3 · 8 pages
- Scripting API & Dynamic Injection · 6 pages
- Tabs API & Window Management · 7 pages
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.
- Build Tooling & Bundlers · 5 pages
- Content Scripts & DOM Injection · 6 pages
- Extension Popup Architecture · 6 pages
- Extension Security & CSP Hardening · 6 pages
- Extension Updates & Data Migration · 6 pages
- Offscreen Documents & DOM Access · 6 pages
- Options Page Configuration · 6 pages
- Service Worker Fundamentals · 6 pages
- Store Submission, Permissions & Compliance · 6 pages
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.
- Context Menus & Right-Click Actions · 6 pages
- Internationalization & Accessibility · 6 pages
- Keyboard Shortcuts & Commands · 6 pages
- Notifications, Badges & the Action API · 6 pages
- Omnibox & Address Bar Integration · 4 pages
- Options Page Layouts · 6 pages
- Popup Interface Design · 6 pages
- Side Panel & DevTools Interfaces · 6 pages
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 guideBuilding the interface
Popups, options pages, side panels and context menus — including which surface is right for state the user needs to keep visible.
UI patternsGetting it published
Permission justifications reviewers accept, the audit that catches rejections before upload, and a release pipeline that reaches all three stores.
Submission & complianceShipping 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