demo · v131

worker probe: navigator.hid in a dedicated worker

v131 exposes navigator.hid inside dedicated workers. The main thread is freed from blocking I/O on HID reads — useful for high-frequency gaming peripherals, MIDI controllers, hardware key dongles. This page spawns a worker and asks it to enumerate devices on a tight loop.

main-thread view

worker view (postMessage relay)

the api

// main.js
const w = new Worker("hid-worker.js", { type: "module" });
w.postMessage({ cmd: "enumerate" });

// hid-worker.js
self.onmessage = async (e) => {
  if (e.data.cmd === "enumerate") {
    const devices = await navigator.hid.getDevices();
    self.postMessage({ devices: devices.map(d => ({ vendorId: d.vendorId, productId: d.productId, name: d.productName })) });
  }
};

see also