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.