Webview2 - Evergreen

WebView2 is a control that allows developers to embed Chromium-based Microsoft Edge into desktop applications. Unlike its predecessor, the WebBrowser control (which used Internet Explorer), WebView2 complies with modern web standards, supports features like WebRTC, Service Workers, WebGL, and receives security updates via Edge's lifecycle.

Enter . Since its general availability in 2020, WebView2 has revolutionized how developers integrate web technologies (HTML, CSS, JavaScript) into native Windows applications (WinForms, WPF, WinUI 3, and even console apps). evergreen webview2

// Download the bootstrapper from: // https://go.microsoft.com/fwlink/p/?LinkId=2124703 var bootstrapperPath = DownloadBootstrapper(); Process.Start(bootstrapperPath, "/silent /install"); // Wait for installation, then retry await Task.Delay(30000); await webView.EnsureCoreWebView2Async(); WebView2 is a control that allows developers to

Pro tip: In production, embed the bootstrapper as a resource or pre-download it on your server. Even though the runtime updates automatically, you aren’t completely hands-off. Updating Your SDK When Microsoft releases a new WebView2 SDK (e.g., new APIs or performance fixes), you should update your NuGet package and recompile. The new SDK might rely on features or performance guarantees from newer runtimes. Your app will still run on older Evergreen runtimes (down to the minimum version you set), but to use new APIs, you need a newer runtime. Minimum Version Strategy Set CoreWebView2EnvironmentOptions.TargetCompatibleBrowserVersion if you require a specific baseline. Since its general availability in 2020, WebView2 has

Console.WriteLine($"Runtime updated to: e.NewVersion"); // Optionally reinitialize the WebView2 to get new features ; Pitfall 1: Assuming the Runtime is Always Present Many beginners assume Windows comes with WebView2. It does not (as of Windows 11 22H2, it's preinstalled, but on Windows 10 and older builds, it's missing). Always implement bootstrapper fallback. Pitfall 2: Mixing x86 and x64 The Evergreen runtime has both 32-bit and 64-bit versions. If your app is compiled for AnyCPU, you must ensure you initialize WebView2 using the correct architecture. Use CoreWebView2Environment.GetAvailableBrowserVersionString() to detect. Pitfall 3: Corporate Proxy and Firewalls Enterprise environments often block msedgewebview2 update endpoints. The runtime will fail to update silently. As a developer, either recommend that IT allow *.dl.delivery.mp.microsoft.com or consider switching to Fixed Version and deploying via SCCM. Pitfall 4: User Permissions The Evergreen runtime installs to %LocalAppData% for the current user or Program Files for machine-wide. If a user has strict applocker policies, the installation may fail. Test on locked-down environments. Part 9: The Future – WebView2 and Windows As of 2025, Microsoft is deepening its investment in WebView2. Windows 11 uses it extensively for Widgets, the Start Menu, and even parts of the Settings app. The Evergreen runtime is now automatically installed on all new Windows 11 devices.

// This uses the Evergreen runtime automatically. // It will look for an existing runtime; if none exists, you can optionally trigger download. await webView.EnsureCoreWebView2Async(null); // Navigate to your local or remote content webView.CoreWebView2.Navigate("https://myapp.local/dashboard.html"); If the runtime is missing, EnsureCoreWebView2Async throws an exception. Handle it by downloading the bootstrapper:

catch (Exception ex) when (ex.Message.Contains("Runtime missing"))

evergreen webview2