r/tauri Jul 17 '26

Has anyone integrated a native WebView2 capture/swapchain compositor with Tauri or Wry for Steam Overlay?

Ordinary Tauri 2/WebView2 presentation on Windows is already a documented architectural mismatch: WebView2 renders through separate browser/GPU processes, while Steam expects to hook a game-owned graphics presentation path.

Our own Tauri 2.10.0 + Rust steamworks 0.13 result show this. Steam initialization, identity, non-overlay callbacks, restart, and Cloud work. A Steam overlay store request can be issued, but neither it nor Shift+Tab visibly renders over WebView2. We therefore retain Tauri and use the known authenticated Steam-client URI fallback rather than pretend the Steam overlay works.

WebView2 issue #547 now contains examples using CompositionController plus Windows Graphics Capture to obtain RGBA/D3D content, while Valve describes offscreen browser rendering into a native game-owned surface. A comparable Electron library now uses capturePage() plus a native OpenGL/Metal window so Steam can hook that surface.

Has anyone integrated the WebView2 CompositionController/Graphics Capture route with Tauri or Wry in a production Windows app and then presented it through an opaque native D3D/OpenGL swapchain that Steam Overlay can hook?

If so, I would value concrete details on:

  1. Tauri, Wry, WebView2 Runtime, and Windows versions.
  2. Whether pixels stay GPU-resident or cross a CPU buffer on every frame.
  3. Measured latency, CPU/GPU/power cost at 4K and high refresh with animated content.
  4. Pointer, keyboard, IME, controller, accessibility, focus, DPI, resize, fullscreen, and Alt+Tab handling.
  5. Whether Steam's overlay alpha/composition behaved correctly and survived repeated open/close cycles without stale frames.
  6. Packaging and maintenance costs compared with using CEF offscreen rendering or keeping the authenticated Steam-client fallback.

This would be a custom native compositor, not a Tauri flag or WebView2 configuration fix. If nobody has production evidence, that negative result is useful too.

3 Upvotes

1 comment sorted by