Real execution against browser platform APIs — spawn a real Web Worker and message it, exercise Cache Storage strategies (Cache First, Network First, Stale-While-Revalidate) with the real CacheStorage API, run a local WebRTC loopback with live ICE candidates, connect to a Server-Sent Events endpoint, explore a WebAssembly module's exports, and try BroadcastChannel cross-tab messaging plus the Web Locks API.
For the Fibonacci example, send a small integer (e.g. 30) and watch it compute without freezing the pulsing dot above.
Your code actually runs in a real Worker spawned from a Blob URL (same trust model as the JS REPL tool — client-side only, your own input). Use postMessage(...) inside the worker to send data back to the main thread — console.log inside a worker won't appear here. Message log is capped at 200 entries.
Real execution against browser platform APIs — spawn a real Web Worker and message it, exercise Cache Storage strategies (Cache First, Network First, Stale-While-Revalidate) with the real CacheStorage API, run a local WebRTC loopback with live ICE candidates, connect to a Server-Sent Events endpoint, explore a WebAssembly module's exports, and try BroadcastChannel cross-tab messaging plus the Web Locks API.
Partially — see the note on each tab. WebRTC contacts a public STUN server for its loopback demo; Cache Storage and SSE let you point at any URL you choose. The Web Worker, WebAssembly, and Broadcast Channel/Locks tabs are fully local.
Open the Server-Sent Events tab and connect to an SSE endpoint, for example from a local dev server, to watch events arrive. The endpoint must allow cross-origin access.
Mostly real: actual Web Workers, the real CacheStorage API, real RTCPeerConnections and EventSource. The Service Worker lifecycle tab is a guided walkthrough and the Push API tab sends a simulated push, since there is no real push server.
The Cache Storage tab exercises Cache First, Network First and Stale-While-Revalidate against a real fetch.
Yes, the Broadcast & Locks tab uses BroadcastChannel for cross-tab messaging and also lets you try the Web Locks API.
The WebAssembly tab lets you explore a module's exports and call them.