MicrosoftEdge / MicrosoftEdge/WebView2Feedback

[Problem/Bug]: AddScriptToExecuteOnDocumentCreatedAsync registered during NewWindowRequested does not run on the new window's about:blank document (Canary regression, works on stable)

Open
#5,616 3 comments 0 reactions 1 assignee View on GitHub

@ambikakunnath is already working on this.

Since Jun 3, 2026.

bug regression
Dominant language
PowerShell
Stars
526
Forks
67
PR merge metrics
No merged PRs in 30d

Description

WV2PreloadRepro.zip

What happened?

A script registered with AddScriptToExecuteOnDocumentCreatedAsync on a new window (during NewWindowRequested, before args.NewWindow is set) does not run on that window's about:blank document on the Canary runtime. It runs fine on the stable runtime, so this is a regression.

In my app, when a page calls window.open(), I inject an init script into the new window this way and the script postMessages back when it's ready. On Canary the script never runs, the message never arrives, and my app hangs waiting for it.

Importance

Blocking. My app's basic functions are not working due to this issue.

Runtime Channel

Prerelease (Edge Canary/Dev/Beta)

Runtime Version

150.0.4072.0

SDK Version

1.0.3485.44

Framework

Winforms

Operating System

Windows 11

OS Version

26200.8457

Repro steps

A minimal, self-contained repro is attached (WV2PreloadRepro).
It:

  1. Opens a page that calls window.open('about:blank').
  2. Handles NewWindowRequested: takes a deferral, creates the new window's CoreWebView2 via CreateCoreWebView2ControllerAsync (so it doesn't navigate on its own), registers a document-created script on it, then sets args.NewWindow and completes the deferral.
  3. WebView2 navigates the new window to about:blank, which should fire the registered document-created script.
  4. The script sets window.__initRan = true and postMessages back to the host.

To run:

dotnet run # stable runtime
dotnet run -- canary # Canary runtime (must be installed)

The repro selects the channel via CoreWebView2ChannelSearchKind.LeastStable (Canary) vs MostStable (stable). Each run logs the resolved runtime version, whether WebMessageReceived fired, the new window's window.__initRan value, and a PASS/FAIL result.

Expected behavior

The registered document-created script runs on the new window's about:blank document on both runtimes, WebMessageReceived fires and window.__initRan === true — as it does on stable.

Actual behavior

  • Stable: WebMessageReceived fires, window.__initRan === true → RESULT: PASS
  • Canary: WebMessageReceived never fires, window.__initRan is not true → RESULT: FAIL

Additional context

  • The new window's CoreWebView2 is created with CreateCoreWebView2ControllerAsync so it does not navigate before the script is registered; the only document creation after registration is the about:blank navigation WebView2 performs when args.NewWindow is set.
  • ExecuteScriptAsync (a separate channel) still works against the new window under Canary, that's how window.__initRan is read back even when the document-created script never ran. So the window and its document exist; only the registered document-created script fails to run.
Repros in Edge Browser

No, issue does not reproduce in the corresponding Edge version

Regression

Regression in newer Runtime

Last working version (if regression)

Runtime 148.0.3967.96

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.