Table of contents
Mainfest
Every extension has a JSON-formatted manifest file, named manifest.json, that provides important information.
Below are the keys and types of values that manifest support. We can discuss these ad-hoc as and when we use them.
{
// Required
"manifest_version": 3,
"name": "My Extension",
"version": "versionString",
// Recommended
"action": {...},
"default_locale": "en",
"description": "A plain text description",
"icons": {...},
// Optional
"author": ...,
"automation": ...,
"background": {
// Required
"service_worker": "background.js",
// Optional
"type": ...
},
"chrome_settings_overrides": {...},
"chrome_url_overrides": {...},
"commands": {...},
"content_capabilities": ...,
"content_scripts": [{...}],
"content_security_policy": {...},
"converted_from_user_script": ...,
"cross_origin_embedder_policy": {"value": "require-corp"},
"cross_origin_opener_policy": {"value": "same-origin"},
"current_locale": ...,
"declarative_net_request": ...,
"devtools_page": "devtools.html",
"differential_fingerprint": ...,
"event_rules": [{...}],
"externally_connectable": {
"matches": ["*://*.example.com/*"]
},
"file_browser_handlers": [...],
"file_system_provider_capabilities": {
"configurable": true,
"multiple_mounts": true,
"source": "network"
},
"homepage_url": "https://path/to/homepage",
"host_permissions": [...],
"import": [{"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}],
"incognito": "spanning, split, or not_allowed",
"input_components": ...,
"key": "publicKey",
"minimum_chrome_version": "versionString",
"nacl_modules": [...],
"natively_connectable": ...,
"oauth2": ...,
"offline_enabled": true,
"omnibox": {
"keyword": "aString"
},
"optional_host_permissions": ["..."],
"optional_permissions": ["tabs"],
"options_page": "options.html",
"options_ui": {
"page": "options.html"
},
"permissions": ["tabs"],
"platforms": ...,
"replacement_web_app": ...,
"requirements": {...},
"sandbox": [...],
"short_name": "Short Name",
"storage": {
"managed_schema": "schema.json"
},
"system_indicator": ...,
"tts_engine": {...},
"update_url": "https://path/to/updateInfo.xml",
"version_name": "aString",
"web_accessible_resources": [...]
}