94 cards across 6 sections
manifest.json
action
chrome.storage
chrome.declarativeNetRequest
chrome.*
chrome.storage.sync
declarativeNetRequest
chrome.alarms
manifest_version: 3
name
version
icons
browser_action
page_action
default_locale
_locales/<lang>/messages.json
description
chrome.i18n.getMessage
minimum_chrome_version
web_accessible_resources
matches
key
background.service_worker
chrome.runtime.onMessage
chrome.alarms.onAlarm
chrome.alarms.create
setTimeout
chrome.storage.session
chrome.storage.local
chrome.runtime.onInstalled
reason: 'install' | 'update' | 'chrome_update'
window
content_scripts
js
css
run_at
run_at: document_start | document_end | document_idle
world: 'MAIN'
chrome.scripting.registerContentScripts
all_frames: true
window.postMessage
permissions
storage
tabs
host_permissions
activeTab
optional_permissions
chrome.permissions.request
eval
.js
https://api.example.com/*
<all_urls>
unlimitedStorage
chrome.storage.onChanged
chrome.runtime.sendMessage
chrome.tabs.sendMessage
chrome.runtime.connect
Port
chrome.offscreen
DOMParser
action.default_popup
chrome.sidePanel
chrome.action.setBadgeText
setIcon
options_page
chrome://extensions
options_ui.open_in_tab: false
chrome.contextMenus.create
contexts
omnibox
chrome.notifications.create
notifications
updateDynamicRules
chrome.scripting.executeScript
chrome.tabs.executeScript
chrome.scripting.insertCSS
removeCSS
background.page
webRequest
chrome.storage.session.set({ lastRun: Date.now()});
chrome.alarms.create('sync', { periodInMinutes: 1});chrome.alarms.onAlarm.addListener(a => { if (a.name === 'sync') doSync();});
"host_permissions": [ "https://api.example.com/*"]
onMessage
true
sendResponse
chrome.runtime.onMessage.addListener( (msg, s, respond) => { fetchData().then(respond); return true; });
chrome://extensions-> Developer mode-> Load unpacked
"permissions": ["activeTab"]
import { syncNow } from './sync.js';chrome.alarms.onAlarm .addListener(syncNow);
chrome://extensions-> Details-> Inspect service worker
chrome.declarativeNetRequest .updateDynamicRules({ removeRuleIds: [1, 2], addRules: [{ id: 1, ...rule }] });
window.myLib
{ "js": ["inject.js"], "world": "MAIN" }
chrome.permissions.request({ permissions: ['downloads']}, granted => { /* ... */ });
chrome.storage.sync.set({ theme: 'dark'});
chrome.runtime.setUninstallURL
chrome.runtime.setUninstallURL( 'https://ex.com/bye');
"content_security_policy": { "extension_pages": "script-src 'self'"}
.git
zip -r dist.zip . \ -x "*.map" "tests/*" ".git/*"
alarms
return true
postMessage
storage.sync
<script src>