Skip to content

[bug] Shared Worker stops responding after F5 reload with WebView2 #15896

Description

@Waquo

Describe the bug

While setting up Jazz Tools v2 in Tauri on Windows, I ran into an issue where my app failed to load after reloading with F5.

The issue appears to be that the shared worker used by Jazz to handle persistence no longer responds after reload.
This was confirmed by the minimal repro project here https://github.com/Waquo/tauri-shared-worker-test

When running that project, it creates a shared worker and pings it, then displays whether it received a pong. On Windows with WebView2 this works on initial load and times out after F5 reload.

There is a CEF branch of the repro that shows the shared worker responding just fine after reload, pointing to this being an issue with Wry or WebView2. I wasn't sure where to report this, so I'm coming here first.

Reproduction

Then:

  • Wait for the application window to display Pong received.
  • Reload the page in the Tauri window.
  • Observe that the status remains Waiting for pong… and eventually changes to No pong received.
  • Reloading again produces the same result. Restarting the application allows the first ping to succeed again.

Expected behavior

The reloaded page connects to the shared worker and receives "pong", just as it does on the initial load.

Full tauri info output

pnpm tauri info

> tauri-shared-worker-test@0.1.0 tauri C:\Users\FOLDER\tauri-shared-worker-test
> tauri "info"


[✔] Environment
    - OS: Windows 10.0.26200 x86_64 (X64)
    ✔ WebView2: 151.0.4129.93
    ✔ MSVC: Visual Studio Build Tools 2022
    ✔ rustc: 1.97.1 (8bab26f4f 2026-07-14)
    ✔ cargo: 1.97.1 (c980f4866 2026-06-30)
    ✔ rustup: 1.29.0 (28d1352db 2026-03-05)
    ✔ Rust toolchain: stable-x86_64-pc-windows-msvc (default)
    - node: 24.17.0
    - pnpm: 10.33.4
    - npm: 11.13.0

[-] Packages
    - tauri 🦀: 2.11.5
    - tauri-build 🦀: 2.6.3
    - wry 🦀: 0.55.1, (outdated, latest: 0.56.1)
    - tao 🦀: 0.35.3, (outdated, latest: 0.36.0)
    - @tauri-apps/api  ⱼₛ: 2.11.1
    - @tauri-apps/cli  ⱼₛ: 2.11.4

[-] Plugins
    - tauri-plugin-opener 🦀: 2.5.4
    - @tauri-apps/plugin-opener  ⱼₛ: 2.5.4

[-] App
    - build-type: bundle
    - CSP: unset
    - frontendDist: ../dist
    - devUrl: http://localhost:1420/
    - bundler: Vite

Stack trace


Additional context

I think wry 0.55.1 is what tauri 2.11.5 depends on, I'm not sure why tauri info points that out as outdated.

The gist of the repro code in src/main.ts:

function pingSharedWorker() {
...
    worker = new SharedWorker(new URL("./shared-worker.ts", import.meta.url), {
      type: "module",
      name: "reload-test",
    });
...
  const timeout = window.setTimeout(() => {
    setStatus("error", "No pong received", "The shared worker did not respond within 10 seconds.");
    pingButton?.removeAttribute("disabled");
  }, 10_000);

  worker.port.onmessage = (event: MessageEvent<unknown>) => {
    window.clearTimeout(timeout);
    console.log("worker response", event.data);
    setStatus("success", "Pong received", `Worker replied: ${String(event.data)}`);
    pingButton?.removeAttribute("disabled");
  };

...
  worker.port.start();
  worker.port.postMessage("ping");
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    platform: Windowsstatus: upstreamThis issue is blocked by upstream dependencies and we need to wait or contribute upstream fixestype: bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions