
Building and Publishing Chrome Extensions
Use when you build a new Chrome extension, add a chrome.* API feature to one, choose and justify its permissions.
You can read the contents and the first 2,000 characters.
Pro includes the whole book.
- By Condensed from Google Chrome's chrome-extensions skill (Apache-2.0)
- 14 chapters
- Updated Nov 14, 2026
What you’ll get
- Build Manifest V3 extensions that load and work the first time
- Pick the narrowest permissions and justify each one to reviewers
- Keep state and messaging working across service worker restarts
- Fill every Chrome Web Store dashboard field to its exact limits
- Avoid the common causes of Chrome Web Store rejections
From the first page
Scope: Manifest V3 Chrome extensions, from manifest and service worker to content scripts, UI surfaces, permissions and network rules, and publishing to the Chrome Web Store. Not covered: web pages and web apps (see the companion book Modern Web Platform Practices for Coding Agents), Firefox and Safari extensions, Manifest V2.
Checked against: npm modern-web-guidance v1.0.0, skill chrome-extensions version 20260806-8570fe7c.
Reviewed: 2026-11-14. Next review: 2027-02-14.
Licence: Apache-2.0 (derived from Google Chrome's chrome-extensions skill, Apache-2.0; see the last page for attribution).
This book tells a coding agent how to build Chrome extensions that work on the first load under Manifest V3, and how to get them through Chrome Web Store review. It condenses the chrome-extensions skill that the Google Chrome team ships in the modern-web-guidance npm package. It is an unofficial derivative; see the last page for sources and upkeep.
Preview · 2,000 of 73,982 characters
Contents
- 01Building and Publishing Chrome Extensionsp.1
- When to load this bookp.1
- Three questions this book answers better than model memoryp.1
- How to use itp.1
- Page indexp.1
- 02Decision matrix: task to pagep.2
- 03Build: Manifest V3 baseline, mandatory rules and project structurep.3
- Always Manifest V3p.3
- Project and manifest skeletonp.3
- The twenty mandatory rules (index)p.3
- Async stylep.3
- Delivery checklistp.3
- 04Build: Permissions, external APIs and sign-inp.4
- permissions, host_permissions and activeTabp.4
- Optional permissions at runtimep.4
- Calling external APIsp.4
- Google sign-in with chrome.identityp.4
- 05Build: Service worker, storage and messagingp.5
- Service worker lifetimep.5
- Choosing a storage areap.5
- Message passingp.5
- 06Build: Popup, side panel, context menus, omnibox and iconsp.6
- Popupp.6
- Side panelp.6
- Context menusp.6
- Omniboxp.6
- Icons and image referencesp.6
- 07Build: Content scripts, tabs and code executionp.7
- Injecting content scriptsp.7
- Tabs and windowsp.7
- Extension CSPp.7
- Running arbitrary codep.7
- 08Build: Network rules, DevTools panels and the Prompt APIp.8
- Declarative Net Requestp.8
- DevTools panelsp.8
- Prompt API in extensionsp.8
See all 14 parts
- 09Build: Media capture, offscreen documents and user scriptsp.9
- Offscreen documentsp.9
- Tab and desktop capturep.9
- User scripts: when and setupp.9
- User scripts: persistence, worlds and messagingp.9
- 10Publish: CHROMEWEBSTORE.md and the dashboard fieldsp.10
- When to create and update the filep.10
- Filling it from the projectp.10
- The sectionsp.10
- 11Publish: Permission justifications and privacyp.11
- Permission justificationsp.11
- When a policy is required, and hosting itp.11
- Writing the policyp.11
- Form, policy and code must matchp.11
- 12Publish: Store listing copyp.12
- Function first, no implementation detailsp.12
- Short and detailed descriptionsp.12
- Single purpose statementp.12
- Honesty limitsp.12
- 13Publish: Pre-publish checklist, packaging and rejectionsp.13
- Manifest and packagep.13
- Listing, privacy and code gatesp.13
- Functional test and updatesp.13
- Rejections and review timingp.13
- 14Sources, license and upkeepp.14
- Sourcep.14
- Licensep.14
- Scopep.14
- Upkeepp.14



