QuickBEAM is a JavaScript runtime embedded inside the Erlang/OTP VM.
If you’re building a full-stack app, JavaScript tends to leak in anyway — frontend, SSR, or third-party code.
QuickBEAM runs that JavaScript inside OTP supervision trees.
Each runtime is a process with a `Beam` global that can:
- call Elixir code
- send/receive messages
- spawn and monitor processes
- inspect runtime/system state
It also provides browser-style APIs backed by OTP/native primitives (fetch, WebSocket, Worker, BroadcastChannel, localStorage, native DOM, etc.).
This makes it usable for:
- SSR
- sandboxed user code
- per-connection state
- backend JS with direct OTP interop
Notable bits:
- JS runtimes are supervised and restartable
- sandboxing with memory/reduction limits and API control
- native DOM that Erlang can read directly (no string rendering step)
- no JSON boundary between JS and Erlang
- built-in TypeScript, npm support, and native addons
QuickBEAM is part of Elixir Volt — a full-stack frontend toolchain built on Erlang/OTP with no Node.js.
Still early, feedback welcome.
If you’re building a full-stack app, JavaScript tends to leak in anyway — frontend, SSR, or third-party code.
QuickBEAM runs that JavaScript inside OTP supervision trees.
Each runtime is a process with a `Beam` global that can: - call Elixir code - send/receive messages - spawn and monitor processes - inspect runtime/system state
It also provides browser-style APIs backed by OTP/native primitives (fetch, WebSocket, Worker, BroadcastChannel, localStorage, native DOM, etc.).
This makes it usable for: - SSR - sandboxed user code - per-connection state - backend JS with direct OTP interop
Notable bits:
- JS runtimes are supervised and restartable - sandboxing with memory/reduction limits and API control - native DOM that Erlang can read directly (no string rendering step) - no JSON boundary between JS and Erlang - built-in TypeScript, npm support, and native addons
QuickBEAM is part of Elixir Volt — a full-stack frontend toolchain built on Erlang/OTP with no Node.js.
Still early, feedback welcome.