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");
}
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:
Expected behavior
The reloaded page connects to the shared worker and receives "pong", just as it does on the initial load.
Full
tauri infooutputStack trace
Additional context
I think wry 0.55.1 is what tauri 2.11.5 depends on, I'm not sure why
tauri infopoints that out as outdated.The gist of the repro code in
src/main.ts: