| I built this because I needed to see what the JavaScript engine was physically doing how the call stack fills, how the heap mutates, what actually happens when await suspends a function. Existing tools showed me the logical flow but not the physical state. How it works technically: - Acorn parses code into an AST client-side - A custom interpreter runs in a Web Worker off the main thread, with a sync fallback for environments without Worker support - The worker produces a flat immutable array of step snapshots - Svelte 5 $state.raw: scrubbing the timeline is a constant-time array index swap - GSAP animates only what changed between snapshots Result: 60fps stepping through call stack, heap mutations and async/await simultaneously. 12 modules plus free-form mode. MIT licensed. Code runs entirely client-side your source never leaves the browser. GitHub: https://github.com/HenryOnilude/vivix (MIT, 490 tests) Known limitations: 500-step cap to prevent infinite loops, flat scope model for let/const inside blocks. |