Wanna see something cool? Check out Angular Spotify 🎧

Notes from Evan You talk at CityJS Singapore 2026: Towards a Unified Toolchain for the Web

I spoke at CityJS Singapore in 2023 and 2024, and both times Evan You was also there. I never got a chance to talk to him. 2026 was no different, I am too shy to open a chat. But at least I managed to grab a photo after his talk, Towards a Unified Toolchain for the Web. Some quick notes while I still remember 🤣

Trung Vo with Evan You after his talk at CityJS Singapore 2026

Why JS tooling exists at all

JavaScript had no tooling, then problems showed up as apps got bigger, and each problem got a tool.

  • Files too large, everything in global scope, so we got modules
  • Sharing reusable code, so we got a package registry and package managers
  • Too many requests, so we got bundling
  • New or custom syntax, so we got transforms
  • Files still too large, so we got minification
  • Making sure it works, so we got test runners, linters and type checkers
  • Style consistency, so we got formatters
  • Builds getting complex, so we got task runners and caching

Slide: Problems emerge as things scale up

Two generations of tools

The OGs, tools written for JS in JS: babel, acorn, esprima, browserify, webpack, rollup, mocha, jest, uglifyjs, terser, eslint, prettier, tsc, gulp, grunt, npm, yarn. He asked who has used them, most hands went up.

Slide: The OGs, tools written for JS in JS

The next gen, tools written for JS in native languages, roughly the last 5 years: swc, oxc, biome, esbuild, rspack, turbopack, rolldown, tsgo, turborepo, nx, jsr, vlt, bun.

Slide: The next gen, tools written for JS in native languages

Native vs JS

The numbers he put up:

Tool Speed up
swc vs babel 20 to 70x
oxlint vs eslint 50 to 100x
rolldown vs rollup 14 to 28x
tsgo vs tsc 10x
bun vs npm 15x

Slide: Native vs JS speed comparison

Rust and Go do the heavy lifting here. Like if you can do 10x improvement, it is not small :)

VoidZero toolchain

VoidZero is a stack, each layer sits on the one below. This was the part I liked most.

Evan also introduced Vite Plus that manages your runtime, package manager, and frontend stack with one tool. I was too excited and forgot to take a photo.

Slide: VoidZero toolchain, Oxc, Rolldown, Vite, Vitest and ecosystem partners

Agents change the reason for speed

Developer experience was always about the feedback loop. Type check, lint, build, see the result, repeat. Now an agent often sits in that loop instead of you.

When the model replies in seconds, a 30 second type check or a slow build is the bottleneck again. The agent waits just like what we did before, only it runs that loop many more times per hour.

The same speedup helps both, and that gives VoidZero a second reason to keep pushing on performance.

My takeaways

  • We still write apps in JS, but the parsers, bundlers and linters under them are moving to Rust and Go.
  • Oxlint replacing eslint is probably the lowest effort win to try today.
  • Toolchain speed used to be a nice to have. With agents in the loop it is a MUST.

Good talk. Maybe next year I will manage an actual conversation.

Published 7 Feb 2026

Read more

 — Google TypeScript Style Guide
 — Typescript types vs interface
 — Upgrade to Angular 20 from Angular 13 - Part 2: Angular 15
 — Upgrade to Angular 20 from Angular 13 - Part 1: Angular 14
 — Typescript this and implement debounce