Home
>
Manifest V3 Cheatsheet — Quick Reference for Chrome Extension Developers
Manifest V3 Cheatsheet — Quick Reference for Chrome Extension Developers
5 min read
Manifest V3 Cheatsheet
Quick reference for Chrome Extension developers working with Manifest V3. This cheatsheet covers all essential manifest fields, permissions, and configurations.
Required Fields
Field
Type
Description
Example
manifest_version
integer
Must be 3 for MV3
"manifest_version": 3
name
string
Extension display name (max 45 chars)
"My Extension"
version
string
Version string (max 4 dot-separated numbers)
"1.0.0"
description
string
Extension description (max 132 chars)
"A brief description"
Extension Components
Component
Key
Required
Description
Service Worker
background.service_worker
Yes (for most)
Background script that handles events
Popup
action.default_popup
No
HTML popup when clicking extension icon
Options Page
options_page or options_ui
No
Settings page configuration
Content Scripts
content_scripts[]
No
Scripts injected into web pages
Side Panel
side_panel
No
Chrome 114+ side panel (requires sidePanel permission)
Common Permissions
Permission
Use Case
Required Field
storage
Store data locally or sync across devices
"storage"
tabs
Access tab URL, title, favicon
"tabs"
activeTab
Access active tab only when user clicks
"activeTab"
scripting
Inject scripts into pages
"scripting"
alarms
Schedule tasks
"alarms"
notifications
Show system notifications
"notifications"
contextMenus
Add right-click menu items
"contextMenus"
sidePanel
Use side panel API
"sidePanel"
declarativeNetRequest
Block/redirect network requests
"declarativeNetRequest"
cookies
Read/write cookies
"cookies"
history
Access browsing history
"history"
bookmarks
Manage bookmarks
"bookmarks"
identity
OAuth authentication
"identity"
webRequest
Observe network requests
"webRequest"
debugger
Attach debugger to tabs
"debugger"
Host Permissions
Pattern Type
Example
Matches
All URLs
<all_urls>
Every website
Specific domain
https://example.com/*
All paths on example.com
Subdomains
https://*.google.com/*
All Google subdomains
Single page
https://example.com/page.html
Exact URL only
Protocol
file:///*
Local files
Action API (Toolbar Button)
Property
Type
Description
default_popup
string
Path to popup HTML
default_icon
object
Icon sizes { "16": "icon16.png" }
default_title
string
Tooltip text
default_badge
string
Badge text (shows on icon)
Content Scripts Configuration
Property
Type
Description
matches
array
URL patterns to inject into
js
array
JavaScript files to inject
css
array
CSS files to inject
run_at
string
"document_start", "document_end", "document_idle"
match_about_blank
boolean
Inject into about:blank frames
frame_id
number
Specific frame ID to target
Web Accessible Resources
Property
Type
Description
resources
array
Paths accessible from web pages
matches
array
Which pages can access resources
{
"web_accessible_resources" : [
{
"resources" : [ "images/*.png" , "styles/*.css" ],
"matches" : [ "https://example.com/*" ]
}
]
}
File Restrictions (Security)
Rule
Description
No remote code
Cannot load external JS from URLs
No inline scripts
<script> tags in HTML must be removed
Local files OK
Can load local resources in extension
CSP header
Content Security Policy is enforced
Manifest V2 to V3 Key Differences
MV2
MV3
Notes
"background": { "scripts": [] }
"background": { "service_worker": "sw.js" }
No more background pages
chrome.extension.sendRequest()
chrome.runtime.sendMessage()
Message passing API changed
chrome.browserAction
chrome.action
Toolbar button renamed
Remote code allowed
Remote code prohibited
All code must be bundled
webRequest blocking
declarativeNetRequest
Blocking requests now declarative
Background pages
Service Workers
Event-driven, no persistent state
Chrome Version Support
Feature
Minimum Chrome Version
Manifest V3
Chrome 88+ (Jan 2021)
Service Workers
Chrome 88+
Side Panel API
Chrome 114+ (June 2023)
Offscreen Documents
Chrome 109+
Tab Groups API
Chrome 88+
Testing Tips
Action
How To
Load unpacked
Developer mode > Load unpacked
Reload
Click refresh icon or chrome.runtime.reload()
View logs
Inspect service worker in chrome://extensions
Clear storage
Application tab > Clear storage
Debug popup
Right-click icon > Inspect Popup
Test permissions
Check extension details in chrome://extensions
Quick Reference Snippets
Minimum Manifest V3
{
"manifest_version" : 3 ,
"name" : "My Extension" ,
"version" : "1.0" ,
"permissions" : [ "storage" ],
"background" : {
"service_worker" : "background.js"
},
"action" : {
"default_popup" : "popup.html"
}
}
With Content Scripts
{
"content_scripts" : [
{
"matches" : [ "https://*.example.com/*" ],
"js" : [ "content.js" ],
"run_at" : "document_idle"
}
]
}
No previous article
No next article