Open-Source Wikis

/

Gecko

/

Features

/

WebExtensions

mozilla/gecko-dev

WebExtensions

WebExtensions is the cross-browser extension API (originally Chrome's; now W3C-tracked). Firefox's runtime lives in toolkit/components/extensions/, with browser-specific glue in browser/components/extensions/ and mobile/android/ for Android.

Components

toolkit/components/extensions/
├── Extension.sys.mjs
├── ExtensionAPIs.jsm / *.sys.mjs
├── parent/         # Parent-process API implementations
├── child/          # Content-process API implementations
├── schemas/        # JSON-schema describing every API
├── webrequest/     # WebRequest API
├── storage/        # Extension storage (sync + local)
├── test/
└── ...

Architecture

graph LR
    XPI[.xpi extension package] --> Extension[Extension.sys.mjs]
    Extension --> Sandbox[Background page<br/>(extension content process)]
    Sandbox --> ExtAPI["browser.* APIs"]
    ExtAPI -->|RPC| ParentAPI[Parent-side implementation]
    ParentAPI --> Browser[browser.tabs / .windows / .storage / ...]
    Sandbox --> ContentScript[Content script<br/>per-page injection]

Extensions run in a special extension process (separate from web content processes) for isolation.

Schemas

Every API has a JSON schema under toolkit/components/extensions/schemas/ (e.g., tabs.json, webRequest.json). The runtime auto-generates browser.* namespaces from the schemas, type-checks calls, and dispatches to parent-side handlers.

Built-in extensions

The browser ships several built-in WebExtensions:

Manifest V2 vs V3

Firefox supports both Manifest V2 and V3 with feature parity gradually closing. See toolkit/components/extensions/Schemas.jsm and the manifest docs.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

WebExtensions – Gecko wiki | Factory