#31830·open-webui

issue: choosing Kokoro.js (Browser) on an iPhone reloads the page once the model finishes loading

Author: silentoplayzCreated Oct 1, 2026Updated Oct 1, 2026
Labelsbugconfirmed issue

Before Submitting

  • I searched open and closed issues and discussions for an existing report.
  • I reproduced this bug on the latest release AND on the current dev branch, right before submitting this report. I did not just check an old version or rely on a check from days ago.
  • I understand that maintainers want a well-written issue before any code pull request.
  • This is not a security vulnerability.

Installation Method

Git Clone

Open WebUI Version

dev at 015dbc8

Operating System

iOS 26.4 (iPhone 13 Pro)

Browser

Safari

Ollama Version

Not involved.

Summary

On an iPhone, choosing Kokoro.js (Browser) as the text-to-speech engine downloads the model to 100%, then the page freezes for a few seconds and reloads on its own. It happens with every dtype I tried. With Safari's WebGPU feature flag turned off, the same model loads and works. Open WebUI runs Kokoro on WebGPU whenever the browser offers it, and Safari has WebGPU on by default from iOS 26, so on an iPhone with default settings Kokoro.js cannot be used.

Expected Behavior

The model finishes loading and the voice list appears, as it does with Safari's WebGPU flag off, or on a desktop browser with WebGPU.

Actual Behavior

The page freezes for a few seconds after the download reaches 100% and then reloads. Kokoro.js never becomes usable.

Steps to Reproduce

  1. On an iPhone with iOS 26 or later and Safari's default settings, open Open WebUI.
  2. Open Settings > Audio (the personal one) and set Text-to-Speech Engine to Kokoro.js (Browser).
  3. Choose a dtype. I tried q4 and fp32.
  4. Wait for the model to load. At 100%, the page freezes for a few seconds and then reloads.

To compare:

  • In the iPhone's Settings > Apps > Safari > Advanced > Feature Flags, turn off WebGPU and repeat with q4. The model loads and the page stays.
  • On a desktop, Firefox on Linux with WebGPU working loads Kokoro.js on WebGPU and speaks normally.
Device WebGPU Result
iPhone 13 Pro, iOS 26.4, q4 On Page reloads after 100%
iPhone 13 Pro, iOS 26.4, fp32 On Page reloads after 100%
iPhone 13 Pro, iOS 26.4, q4 Off Loads
PC, Firefox on Linux On Loads and speaks

Logs, Screenshots, and Config

No console output is available on the iPhone, since the page reloads. No errors in the server log.

Additional Information

The settings page and the Kokoro worker both choose the device with !!navigator?.gpu ? 'webgpu' : 'wasm' (src/lib/components/chat/Settings/Audio.svelte, src/lib/workers/kokoro.worker.ts), so there is no way to use the WASM backend while Safari offers WebGPU. The kokoro-js README notes: "If using "webgpu", we recommend using dtype="fp32"", but fp32 reloads the page on the iPhone too.

#21816 handled browsers where navigator.gpu exists but no adapter is available. Here, Safari's WebGPU provides an adapter, and the page reloads after loading. Possibly related: #16618, Kokoro.js stuck loading in Safari on macOS 26 with WebGPU.