A brisk, layer-by-layer history explains how front-end development mutated from simple server-rendered HTML into today's sprawling ecosystem. It traces the first itch - avoiding full-page reloads - through AJAX and jQuery, then shows how component frameworks (React, Vue, Angular, Svelte, Solid) solved manual DOM sync with declarative, reactive UIs, JSX and the virtual DOM, and later signals. The narrative follows a single button to show how state, props and a framework runtime turned tiny markup into framework-dependent code, provoking the need for a build step to transpile and bundle modern syntax (Babel, webpack) and producing the notorious node_modules bloat.
The story continues with the tooling arms race that rewrote slow JS tooling in Go/Rust (esbuild, SWC, Vite, Rolldown, pnpm, Bun) to regain developer productivity, then pivots back to the server as SSR/SSG/ISR returned instant HTML but introduced the hydration tax - server-rendered pages that still require client JS to become interactive. Meta-frameworks (Next.js, Astro, SvelteKit, Nuxt, Remix) and patterns like islands, resumability (Qwik) and React Server Components aim to hydrate less or not at all. The throughline: each layer grew from a real pain, and many solutions are converging toward sending less JavaScript to the browser, making the 2026 frontier feel closer to the original, server-first model.
Summary generated by AI from the linked article. hn.today is not affiliated with Hacker News or Y Combinator.