May 1995 · Netscape Communications · Mountain View

The Lineage of JavaScript

Mocha → LiveScript → JavaScript, 1995

Thirty years of languages, engines, runtimes, libraries and tools — each told in the visual language of its era, from a ten-day prototype to a toolchain written in Rust and Go.

81 milestones · 9 eras · 10 chapters · every claim sourced

Scroll

Era 01 · 1995–1999

Birth & Standardization

A ten-day prototype becomes the web's scripting language. Microsoft clones it, and a standards body steps in before it can splinter.

Visual language Netscape-era windows: grey bevels, Times, blue links.

May 1995 · Netscape Communications

JavaScript

10 days

for Brendan Eich to build the first working prototype, codenamed Mocha.

Netscape wanted a language “for the rest of us”: designers and beginners gluing behavior into HTML, while Java handled the serious components. Eich borrowed Java's syntax, Scheme's first-class functions and Self's prototypes.

Three names in seven months

  1. Mocha
  2. LiveScript
  3. JavaScript
typeof null; // "object"
0 == ""; // true
Haste left scars: a bug from the first implementation, and loose equality. Fixing them now would break the web, so === was added instead.

1996 – 2009 · Standardization

ECMA-262

One language, two browsers.

August 1996: Microsoft ships its own reverse-engineered implementation, JScript, in Internet Explorer 3.

To stop the language splintering, Netscape submits it to Ecma International. Technical Committee 39 is formed, and the standard is named ECMAScript — “JavaScript” is a trademark, now owned by Oracle.

The editions

  1. ES1
  2. ES2
  3. ES3
  4. ES4 abandoned
  5. ES5

10 years

between ES3 and ES5. The web ran on a frozen language while browsers fought.

XMLHttpRequest

· web platform

Built so Outlook Web Access could fetch mail without reloading, XMLHTTP ships with IE5. Six years later it becomes the engine of Ajax.

Era 02 · 2000–2004

The Long Winter

Internet Explorer wins the browser war and the web stalls. Underground, the pieces of the future appear: JSON, linters, a forked engine, a new browser — and Gmail.

Visual language Luna title bars and Tahoma, circa Windows XP.

Gmail

· web platform

Webmail that feels like desktop software — no page reloads, all XMLHttpRequest. Ajax before it had a name.

Era 03 · 2005–2008

Ajax & the Library Era

Pages stop reloading. A new word names the pattern, libraries paper over browser chaos, the ES4 effort collapses — and Google starts a speed race.

Visual language Web 2.0 gloss, reflections and beta badges.

Prototype.js

Extracted from Ruby on Rails: $(), class helpers and Ajax wrappers — a library that set out to fix the language. Source: Wikipedia — Wikipedia ↗

2005 – 2006 · The page stops reloading

jQuery

The page stops reloading.

An ActiveX control built for Outlook Web Access in 1999 quietly becomes XMLHttpRequest.

Gmail (2004) and Google Maps (2005) show what a browser can do. On February 18, 2005 Jesse James Garrett names the pattern: Ajax. Then everyone hits the same wall — every browser behaves differently.

$("a.more").click(function () {
  $(this).next().slideToggle();
});
January 2006: John Resig announces jQuery at BarCamp NYC. “Write less, do more.”

One function, $, hides a decade of browser differences. Much of what jQuery made easy later became standard: querySelectorAll, fetch, classList. jQuery 4.0 ships in January 2026.

The Good Parts

· community

A slim O'Reilly book argues that a beautiful language is hiding inside a messy one. A generation learns JavaScript from it.

September 2, 2008 · Google Chrome

V8

Chrome ships a new engine.

V8, built by Lars Bak's team in Aarhus, Denmark, compiles JavaScript straight to machine code.

The speed race

  1. TraceMonkey · Firefox
  2. V8 · Chrome
  3. Node.js · on V8
  4. Chakra · IE9

In 2008 Internet Explorer still ran JScript; Microsoft's own JIT, Chakra, only arrives with IE9 in 2011. Meanwhile, fast JavaScript changes what the language is for: whole applications in a tab — and, a year later, on the server.

Era 04 · 2009–2012

JavaScript Leaves the Browser

Node.js puts JavaScript on the server and npm gives it a supply chain. ES5 restores progress, MV* frameworks structure single-page apps, and TypeScript arrives.

Visual language Bootstrap-era wells on a terminal-dark desk.

2009 · JSConf EU, Berlin

Node.js

JavaScript leaves the browser.

Ryan Dahl takes V8 and wraps it in an event loop with non-blocking I/O.

var http = require('http');
 
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(8124);
One thread, an event loop, thousands of open connections.

A server-side ecosystem in a year

  1. CommonJS
  2. Node.js
  3. Express 0.0.1
  4. npm

From here on, the tools that build front-end code — linters, bundlers, compilers — are written in JavaScript and run on Node. A decade later, its creator would come back with regrets.

CoffeeScript

“It's just JavaScript”: a terser syntax that compiles to JS. Its arrows and classes later land in the language. Source: Wikipedia — Wikipedia ↗

Express

A minimalist web framework for Node — 0.0.1 in January, 1.0 in November — and soon the default way to build a server. Source: GitHub — GitHub ↗

npm

· packages

package.json, a registry and one command. JavaScript gets a supply chain — which grows into the largest software registry in the world.

Backbone.js

· framework

Models, views and events in a few hundred lines: the first widely used structure for single-page apps.

AngularJS

· framework

Two-way data binding and dependency injection — HTML, extended. Enterprises standardize on it.

webpack

· tooling

Everything is a module — scripts, styles, images. It becomes the dominant bundler of the 2010s.

October 1, 2012 · Microsoft

TypeScript

JavaScript that scales.

TypeScript 0.8, led by Anders Hejlsberg — the designer of Turbo Pascal and C#.

function greet(user: { name: string }) {
  return "Hello, " + user.name;
}
 
greet({ nme: "Ada" });
//      ~~~ Did you mean to write 'name'?
A typed superset: every JavaScript program is a TypeScript program, and the types are erased at build time.

From add-on to default

  1. TS 0.8
  2. Node runs .ts
  3. Native port announced
  4. TypeScript 7, in Go

Some purists say it hides part of the language's charm. Large teams and codebases adopted it anyway — and the compiler that checks JavaScript is itself no longer written in JavaScript.

Era 05 · 2013–2016

The Component Revolution

React's components and one-way data flow win the decade. ES2015 modernizes the language, Babel lets everyone use it early, and JavaScript reaches desktop and mobile.

Visual language Flat design: solid blocks, hard shadows.

May 29, 2013 · JSConf US

React

UI as a function of state.

Tom Occhino and Jordan Walke open-source React. JSX — markup inside JavaScript — gets a skeptical reception.

var Hello = React.createClass({
  render: function () {
    return <h1>Hello, {this.props.name}</h1>;
  }
});
Components, a virtual DOM and one-way data flow.

It wins the decade. Vue (2014), Angular 2 (2016) and Svelte (2016) answer in their own ways; React Native (2015) carries the model to phones.

Reinventing itself

  1. Hooks
  2. Server Components RFC
  3. React 19
  4. React Foundation

Vue.js

· framework

An approachable, progressive framework: AngularJS-style templates with React-style components.

June 17, 2015 · Ecma General Assembly, Montreux

ES2015

The language we know today.

ECMAScript 2015 — still widely called ES6 — is the biggest upgrade in JavaScript's history.

import { api } from "./api.js";
 
class User {
  constructor({ name, langs = [] }) {
    this.name = name;
    this.langs = langs;
  }
}
 
const load = (id) => api(`/users/${id}`).then((d) => new User(d));
Modules, classes, destructuring, default values, arrow functions, template literals, promises.

Babel — born as 6to5 in 2014 — lets developers write it before browsers support it. TC39 then switches to a yearly train: whatever reaches Stage 4 ships the next June.

Every June since

  1. ES2016 **
  2. ES2017 async/await
  3. ES2020 ?.
  4. ES2025 iterator helpers

Next.js

· meta-framework

Server-rendered React with file-based routing — the template for the meta-framework era.

Era 06 · 2017–2019

Tooling Explosion & Annual Specs

The spec ships every June. Formatters, package managers and bundlers multiply; WebAssembly and edge workers widen where code runs; Hooks rewire React.

Visual language Editor chrome: dark tabs and file names.

Interlude · How JavaScript changes now

The TC39 process

Since ES2015 the language ships every June. Every new feature walks the same road through the committee's stages — here is Temporal's.

  1. 0 Strawman the idea

    An idea, not yet presented or filtered. Anyone can start one.

  2. 1 Proposal

    The committee agrees the problem is worth solving. A champion writes up the problem and a rough solution.

  3. 2 Draft

    Spec text in ECMA-262 language. It can still change a lot, but the committee expects it to land eventually.

  4. 2.7 Approved —

    Design complete and approved in principle; waiting on tests and experimental implementations. Added in 2024.

  5. 3 Candidate

    Engines implement it and the community tests it. Only problems found in practice change it now.

  6. 4 Finished

    Two compatible implementations and Test262 tests. It ships in the next June edition.

Temporal reached Stage 4 on March 11, 2026 — nine years after Stage 1 — and is scheduled for ES2027. (It predates Stage 2.7, so it went straight from 2 to 3.)

WebAssembly

· web platform

A compact binary format that runs beside JavaScript at near-native speed. Firefox and Chrome ship it the same week.

June 2018 · JSConf EU, Berlin

Deno

“10 Things I Regret About Node.js”

— Ryan Dahl, JSConf EU 2018

Dahl's answer is Deno, an anagram of Node: secure by default, TypeScript out of the box, web-standard APIs. Deno 1.0 ships in May 2020; Deno 2 embraces npm in 2024.

Bun takes another path: JavaScriptCore instead of V8, and a bundler, test runner and package manager in one binary. First released in July 2022, 1.0 in September 2023 — and part of Anthropic since December 2025.

Many runtimes, one API

  1. Cloudflare Workers
  2. Deno 1.0
  3. WinterCG
  4. WinterTC · Ecma TC55

Era 07 · 2020–2023

Meta-frameworks & the Edge

esbuild proves native-speed tools win. Frameworks become full-stack, runtimes multiply — Deno, Bun, workers — and agree on a common API.

Visual language Near-black with quiet brand glows.

Vite

· tooling

Chapter

Native ES modules in development and no bundling until build: a dev server that starts instantly.

April 2020 · Native speed

Vite

Tools stop being written in JavaScript.

January 2020: Evan Wallace's esbuild, written in Go, bundles 10–100× faster than its peers.

Evan You's Vite serves native ES modules during development and bundles only for production. The dev server starts in milliseconds; esbuild does the heavy lifting.

The toolchain goes native

  1. Turbopack
  2. Rspack
  3. Biome
  4. Vite 8 on Rolldown

The tools that build JavaScript are increasingly written in Go and Rust. Everything they produce is still JavaScript.

Stage 2.7

A new stage between 2 and 3: design approved in principle, waiting on tests and implementations. Source: TC39 — TC39 ↗

Era 08 · 2024–2025

Native Toolchains & Consolidation

Rust and Go rewrite the toolchain, Node runs TypeScript directly, and governance becomes the plot: a trademark fight, new standards bodies, supply-chain worms.

Visual language Hairline bento grids, monospace everything.

Era 09 · 2026–

The Native & Agentic Era

TypeScript compiles itself in Go, Vite builds with Rust, Temporal fixes dates — and the companies behind the tools are absorbed by platform and AI companies.

Visual language Warm paper, prompt-and-response cards.

It all compiles back to JavaScript.

114 marks · thirty years · one language