Skip to content

Instantly share code, notes, and snippets.

@dep
Created July 5, 2026 10:29
Show Gist options
  • Select an option

  • Save dep/ec59df61562cfb3af21031a660e733b4 to your computer and use it in GitHub Desktop.

Select an option

Save dep/ec59df61562cfb3af21031a660e733b4 to your computer and use it in GitHub Desktop.
Electron 43: chrome.webRequest unusable in MV3 service workers (missing bindings resources)
// MV3 background service worker. In Chrome, chrome.webRequest is defined here
// (observational listeners work with the "webRequest" permission).
console.log('[repro] worker started');
console.log('[repro] typeof chrome.webRequest =', typeof chrome.webRequest);
console.log('[repro] typeof chrome.declarativeNetRequest =', typeof chrome.declarativeNetRequest);
chrome.webRequest.onBeforeRequest.addListener(
(details) => {
console.log('[repro] onBeforeRequest', details.url);
},
{ urls: ['<all_urls>'] }
);
{
"manifest_version": 3,
"name": "webrequest-mv3-repro",
"version": "1.0.0",
"permissions": ["webRequest"],
"host_permissions": ["<all_urls>"],
"background": {
"service_worker": "bg.js"
}
}
const { app, session } = require('electron');
const path = require('path');
app.whenReady().then(async () => {
console.log('[repro] electron', process.versions.electron);
try {
const ext = await session.defaultSession.extensions.loadExtension(
path.join(__dirname, 'ext'),
{ allowFileAccess: true }
);
console.log('[repro] loaded extension', ext.id, ext.manifest.manifest_version);
} catch (err) {
console.error('[repro] loadExtension failed:', err);
}
// give the service worker time to start and crash
setTimeout(() => app.quit(), 4000);
});
$ ELECTRON_ENABLE_LOGGING=1 electron main.js # Electron 43.0.0, macOS arm64
[repro] electron 43.0.0
[repro] loaded extension kdngfbncpbgohjncjnnbcjboidooebdb 3
[39248:0705/062431.415189:INFO:CONSOLE:3] "[repro] worker started", source: chrome-extension://kdngfbncpbgohjncjnnbcjboidooebdb/bg.js (3)
[39279:0705/062431.418736:ERROR:extensions/renderer/resource_bundle_source_map.cc:72] NOTREACHED hit. Module resource registered as "webRequest" not found
[39279:0705/062431.425737:ERROR:extensions/renderer/resource_bundle_source_map.cc:72] NOTREACHED hit. Module resource registered as "webRequestEvent" not found
[39248:0705/062431.429316:INFO:CONSOLE:0] "(BLESSED_EXTENSION context for kdngfbncpbgohjncjnnbcjboidooebdb) No source for require(webRequest)", source: (0)
[39248:0705/062431.429699:ERROR:extensions/browser/extensions_browser_client.cc:92] Extension Error:
Message: (BLESSED_EXTENSION context for kdngfbncpbgohjncjnnbcjboidooebdb) No source for require(webRequest)
Type: RuntimeError
[39248:0705/062431.429728:INFO:CONSOLE:4] "[repro] typeof chrome.webRequest = object", source: chrome-extension://kdngfbncpbgohjncjnnbcjboidooebdb/bg.js (4)
[39248:0705/062431.429740:INFO:CONSOLE:5] "[repro] typeof chrome.declarativeNetRequest = undefined", source: chrome-extension://kdngfbncpbgohjncjnnbcjboidooebdb/bg.js (5)
[39248:0705/062431.429750:INFO:CONSOLE:0] "(BLESSED_EXTENSION context for kdngfbncpbgohjncjnnbcjboidooebdb) No source for require(webRequestEvent)", source: (0)
[39248:0705/062431.441794:INFO:CONSOLE:7] "Uncaught TypeError: Cannot read properties of undefined (reading 'addListener')", source: chrome-extension://kdngfbncpbgohjncjnnbcjboidooebdb/bg.js (7)
[39248:0705/062431.441822:ERROR:extensions/browser/extensions_browser_client.cc:92] Extension Error:
Message: Uncaught TypeError: Cannot read properties of undefined (reading 'addListener')
Source: chrome-extension://kdngfbncpbgohjncjnnbcjboidooebdb/bg.js (line 7)
Type: RuntimeError
[39248:0705/062431.449137:ERROR:extensions/browser/extensions_browser_client.cc:92] Extension Error:
Message: Service worker registration failed. Status code: 15
Source: manifest.json
Type: ManifestError

Repro: chrome.webRequest unusable in MV3 service workers (Electron 43.0.0)

Layout:

main.js            # electron main process
ext/manifest.json  # minimal MV3 extension
ext/bg.js          # background service worker

Run:

npm i electron@43.0.0
ELECTRON_ENABLE_LOGGING=1 npx electron main.js

Expected (Chrome behavior): the worker registers chrome.webRequest.onBeforeRequest (observational, no blocking) and stays alive.

Actual: the webRequest / webRequestEvent bindings module resources are missing from the resource bundle (NOTREACHED in extensions/renderer/resource_bundle_source_map.cc), so chrome.webRequest is an empty object, the worker throws at top level, and MV3 service worker registration fails with status code 15. See output-excerpt.log.

The same worker script runs fine in Chrome (chrome://extensions → Load unpacked).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment