This matrix tracks behavior implemented by the Verklet browser runtime.
It is a product contract for tests and demos, not a claim of full
Node.js compatibility.
Status values:
- supported — covered by automated tests and expected to keep working.
- partial — useful behavior exists, but important Node/browser edge cases are still missing.
- experimental — implemented for smoke tests or demos; the API shape can change.
- missing — planned, not implemented.
- unsupported — intentionally outside the current browser runtime scope.
Host runtime
| Capability | Status |
|---|
Runtime.boot() | supported |
| Host capability detection | supported |
| Service Worker preview routing | supported |
| Coordinator worker RPC | supported |
| Runtime limits (processes · memory · storage · network · CPU) | supported |
runtime.on('diagnostic') events | supported |
runtime.on('error') event | partial |
| Multiple runtime instances | supported |
runtime.teardown() | supported |
Virtual filesystem
| Capability | Status |
|---|
| Mount / read / write / rm / rename | supported |
| Path traversal rejection | supported |
| Watch events | supported |
| Symlinks · hard links | supported |
| Binary snapshots | supported |
| Tar / gzip / zip import / export | supported |
| OPFS project persistence (content-addressed, dedup'd) | supported |
| OPFS cross-tab handoff (BroadcastChannel + Web Locks) | supported |
| Persistent package cache | partial |
Process, shell, terminal
| Capability | Status |
|---|
| Process records · stdio streams | supported |
| Node process workers | supported |
jsh interactive shell | supported |
| Shell built-ins (echo, ls, cat, mkdir, rm, …) | supported |
Shell operators (&&, ` | |
| Terminal resize | supported |
Signals (SIGINT, kill) | partial |
Node compatibility
| Module | Status |
|---|
| CommonJS loader | supported |
| ESM loader | partial |
fs · fs/promises | partial |
http · https | partial |
process | partial |
Buffer | partial |
path · url · querystring | supported |
events · stream · string_decoder | partial |
zlib · crypto | partial |
dns · net · tls | experimental |
worker_threads · vm · perf_hooks · v8 | experimental |
async_hooks · node:console · node:util/types | experimental |
child_process | unsupported |
Native .node addons | unsupported |
Package managers
The supported default path is fast lockfile hydration.
| Workflow | Status |
|---|
Default install mode (hydrate-lockfile) | supported |
| npm lockfile hydration | partial |
| pnpm lockfile hydration | partial |
| Yarn classic lockfile hydration | partial |
Registry-proxy .wcpkg bundles | partial |
| Lifecycle scripts | partial |
| Arbitrary npm/pnpm/yarn edge cases | missing |
Frameworks and CLIs
| Workflow | Status |
|---|
| Simple Node HTTP server | supported |
| Vite-style dev server | partial |
| React fixtures | partial |
| Next.js minimal app | partial |
| Vue · Svelte · SvelteKit | partial |
| Nuxt · Astro · Remix · React Router | partial |
| Vite-style HMR (EventSource + WebSocket) | partial |
Browsers
| Browser / mode | Status |
|---|
| Chromium desktop | supported |
| Firefox (with CORP headers on every sub-resource) | supported |
| Safari / WebKit (boot + spawn) | supported |
| Safari / WebKit OPFS persistence | partial |
| Non-isolated degraded mode | experimental |
See browser support for the cross-origin isolation
headers your hosting page needs to serve.