Conversation
Node.js removed the experimental_fetch option in nodejs/node#62759 since fetch is now unconditionally enabled. We had been patching the field back in so that node_main.cc could read it and node_bindings.cc could pass --no-experimental-fetch to renderer/worker processes. Neither is necessary: - In ELECTRON_RUN_AS_NODE mode, fetch is always available, so WASM streaming (which depends on Response) should always be set up. - In renderer/worker processes, kNoBrowserGlobals already causes Node's PrincipalRealm::BootstrapRealm to skip internal/bootstrap/web/exposed-window-or-worker.js, which is where fetch/Request/Response/Headers/FormData are defined. Node's fetch globals were never being installed; Blink's win by default. Drop the patch and the two call sites that depended on it. Closes #51912 Co-authored-by: Felix Rieseberg <[email protected]>
SetIsolateUpForNode now unconditionally registers Node's WASM streaming callback (nodejs/node#62759 dropped the experimental_fetch gate). With kNoBrowserGlobals the JS half of that callback is never installed, so WebAssembly.compileStreaming/instantiateStreaming would crash on CHECK(\!impl.IsEmpty()) in node_wasm_web_api.cc. Re-register Blink's handler via WasmResponseExtensions::Initialize after CreateEnvironment in renderer and worker so Blink's implementation wins. Also drop the now-redundant blink* global stash/restore: with kNoBrowserGlobals Node neither installs nor deletes fetch/Response/etc, so Blink's bindings are never disturbed and the round-trip through blinkfetch was a no-op. Add a spec asserting fetch/Headers/Request/Response/FormData stringify to [native code] in a nodeIntegration renderer. Co-authored-by: Felix Rieseberg <[email protected]>
- Resolve modify/delete on the fetch patch (delete wins; the experimental_fetch gate it added to environment.cc is no longer needed since WasmResponseExtensions::Initialize handles the callback restoration in Electron's renderer code). - Revert the environment.cc index hash in api_delete_deprecated_fields_on_v8_isolate.patch now that the preceding patch is gone (verified with `e patches node`). - Preserve Blink's EventSource around LoadEnvironment in renderer and worker: Node's setupEventsource() in pre_execution.js deletes globalThis.EventSource whenever --experimental-eventsource is not set, and unlike setupNavigator/setupWebStorage it does not check noBrowserGlobals first. The previous blink* stash covered this as a side effect; restore just EventSource explicitly in C++. - Extend the [native code] spec assertion to cover EventSource. Co-authored-by: Felix Rieseberg <[email protected]>
The C++ save/restore around LoadEnvironment was too late: preload scripts run inside LoadEnvironment, after Node's setupEventsource() has deleted globalThis.EventSource but before the C++ restore. This broke 'preload has synchronous access to all eventual window APIs'. Pass --experimental-eventsource for renderer/worker so Node's setupEventsource() becomes a no-op and Blink's binding is never deleted. Under kNoBrowserGlobals Node never installs its own undici EventSource, so the flag's only effect is suppressing the delete. Co-authored-by: Felix Rieseberg <[email protected]>
5 tasks
Member
|
/trop update-branch |
…ions-experimental_fetch-dependency-1781642684707
Contributor
Author
|
This branch has been updated with the latest changes from |
This comment has been minimized.
This comment has been minimized.
jkleinsc
approved these changes
Jun 18, 2026
jkleinsc
deleted the
trop/43-x-y-bp-chore-remove-environmentoptions-experimental_fetch-dependency-1781642684707
branch
June 18, 2026 19:12
|
No Release Notes |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Backport of #51923
See that PR for details.
Notes: none