JavaScript
· language
Brendan Eich writes the first prototype — codenamed Mocha — in ten days. It ships as LiveScript in a Navigator beta and is renamed JavaScript on Dec 4, 1995.
May 1995 · Netscape Communications · Mountain View
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.
Era 01 · 1995–1999
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.
· language
Brendan Eich writes the first prototype — codenamed Mocha — in ten days. It ships as LiveScript in a Navigator beta and is renamed JavaScript on Dec 4, 1995.
May 1995 · Netscape Communications
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
typeof null; // "object"
0 == ""; // true
=== was added instead.
The final release ships in early 1996 with JavaScript 1.0, running on the engine that grows into SpiderMonkey. Source: Wikipedia — Wikipedia ↗
· engine
Microsoft reverse-engineers the language as JScript and ships it in Internet Explorer 3. Two implementations — and the browser wars — begin.
· standard
Netscape hands the language to Ecma in November 1996. Its new committee, TC39, publishes the first ECMAScript standard in June 1997.
1996 – 2009 · Standardization
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
10 years
between ES3 and ES5. The web ran on a frozen language while browsers fought.
· 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.
ES3
Regular expressions, try/catch, better strings — the baseline the web lives on for the next decade. Source: Wikipedia — Wikipedia ↗
Era 02 · 2000–2004
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.
· language
Crockford “discovers” JSON: JavaScript's own object literals as a data format. json.org goes up in 2002, and XML never recovers.
Douglas Crockford
Influenced by JavaScript
JSLint
The first popular JavaScript linter — ancestor of JSHint, ESLint and every red squiggle since. Source: Wikipedia — Wikipedia ↗
· engine
Apple forked KDE's KJS in 2001; the Safari beta brings its engine, JavaScriptCore, to users. Twenty years later, Bun runs on it.
Apple
A root of the lineage.
· web platform
Webmail that feels like desktop software — no page reloads, all XMLHttpRequest. Ajax before it had a name.
· browser
Grown from Netscape's open-sourced code, Firefox reopens the browser war — and with it, the pressure to move the web forward.
Era 03 · 2005–2008
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 ↗
Google Maps
A draggable, endlessly loading map in a browser tab. Developers view source to learn how. Source: Wikipedia — Wikipedia ↗
· community
An essay names the pattern behind Gmail and Maps: Asynchronous JavaScript and XML. Naming it turns it into a movement.
Jesse James Garrett
Influenced by XMLHttpRequest, Gmail and Google Maps
Dojo Toolkit
Widgets, modules and a package loader — an ambitious toolkit years ahead of its time. Source: Wikipedia — Wikipedia ↗
· library
“Write less, do more.” Announced at BarCamp NYC, jQuery tames cross-browser DOM and Ajax pain behind one function: $.
John Resig
Influenced by Prototype.js and “Ajax”
2005 – 2006 · The page stops reloading
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();
});
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.
YUI
Yahoo's User Interface Library: documented, tested components for very large sites. Source: Wikipedia — Wikipedia ↗
MooTools
Class-based objects layered over prototypes — a road the language itself takes in 2015. Source: Wikipedia — Wikipedia ↗
· community
A slim O'Reilly book argues that a beautiful language is hiding inside a messy one. A generation learns JavaScript from it.
· standard
After years of conflict, TC39 abandons the ambitious ES4. The compromise, “Harmony”, charts the path to ES5 and, eventually, ES2015.
· engine
Chrome launches with V8, which compiles JavaScript straight to machine code. Every engine answers within months.
Google (Lars Bak's team, Aarhus)
A root of the lineage.
September 2, 2008 · Google Chrome
Chrome ships a new engine.
V8, built by Lars Bak's team in Aarhus, Denmark, compiles JavaScript straight to machine code.
The speed race
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
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.
CommonJS
“What server side JavaScript needs”: require() and module.exports for JavaScript outside the browser.
Source: Kevin Dangoor — Kevin Dangoor ↗
· runtime
V8, an event loop and non-blocking I/O: JavaScript on the server. Dahl presents it at JSConf EU that November.
Ryan Dahl
2009 · JSConf EU, Berlin
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);
A server-side ecosystem in a year
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.
· standard
Strict mode, native JSON, forEach, map and filter: the language moves again after ten years.
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 ↗
· packages
package.json, a registry and one command. JavaScript gets a supply chain — which grows into the largest software registry in the world.
· framework
Models, views and events in a few hundred lines: the first widely used structure for single-page apps.
· framework
Two-way data binding and dependency injection — HTML, extended. Enterprises standardize on it.
Chakra
Internet Explorer 9 ships Microsoft's JIT engine. Until now, IE had run JScript. Source: IEBlog (Microsoft) — IEBlog (Microsoft) ↗
Ember.js
Grown from SproutCore 2.0: convention over configuration for ambitious web apps. Source: Yehuda Katz — Yehuda Katz ↗
Grunt
Task runners arrive: minify, concatenate and lint, automated in JavaScript on Node. Source: Ben Alman — Ben Alman ↗
· tooling
Everything is a module — scripts, styles, images. It becomes the dominant bundler of the 2010s.
· language
A typed superset of JavaScript that compiles to plain JavaScript. Purists grumble; large teams adopt it anyway.
Microsoft (Anders Hejlsberg)
Influenced by JavaScript
October 1, 2012 · Microsoft
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'?
From add-on to default
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
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.
· library
Components, a virtual DOM and JSX, open-sourced at JSConf US to a skeptical room. Then it wins the decade.
Facebook (Jordan Walke)
Influenced by JavaScript
May 29, 2013 · JSConf US
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>;
}
});
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
· framework
An approachable, progressive framework: AngularJS-style templates with React-style components.
· tooling
Born as 6to5: write tomorrow's JavaScript, ship today's. Renamed Babel in February 2015.
Sebastian McKenzie
Influenced by ES5
Electron
Atom Shell, renamed: Chromium plus Node.js for desktop apps such as VS Code and Slack. Source: Electron blog — Electron blog ↗
· standard
Modules, classes, let/const, arrow functions, promises, destructuring — the biggest upgrade in the language's history.
June 17, 2015 · Ecma General Assembly, Montreux
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));
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
**
?.
left-pad
An 11-line package is unpublished and builds break worldwide. npm changes its unpublish rules. Source: Wikipedia — Wikipedia ↗
· framework
A ground-up, TypeScript-first rewrite — so different from AngularJS that the name drops the “JS”.
Influenced by AngularJS and TypeScript
Yarn
Lockfiles and parallel installs — and npm gets faster in response. Source: Yarn blog — Yarn blog ↗
· meta-framework
Server-rendered React with file-based routing — the template for the meta-framework era.
Nuxt
Vue's answer to Next.js, released the very next day. Source: Wikipedia — Wikipedia ↗
· framework
“Frameworks without the framework”: a compiler that turns components into small, direct DOM updates.
Era 06 · 2017–2019
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
Since ES2015 the language ships every June. Every new feature walks the same road through the committee's stages — here is Temporal's.
An idea, not yet presented or filtered. Anyone can start one.
The committee agrees the problem is worth solving. A champion writes up the problem and a rough solution.
Spec text in ECMA-262 language. It can still change a lot, but the committee expects it to land eventually.
Design complete and approved in principle; waiting on tests and experimental implementations. Added in 2024.
Engines implement it and the community tests it. Only problems found in practice change it now.
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.)
Prettier
An opinionated formatter ends a decade of style debates. Source: James Long — James Long ↗
· web platform
A compact binary format that runs beside JavaScript at near-native speed. Firefox and Chrome ship it the same week.
· standard
async/await turns callback pyramids into straight-line code. The yearly release train is now routine.
TC39 (ES2017)
Influenced by ES2015
pnpm
A content-addressable store: every package version installed once per disk. Source: pnpm — pnpm ↗
Cloudflare Workers
JavaScript in V8 isolates at the network edge — no Node, no containers. Source: Cloudflare blog — Cloudflare blog ↗
Parcel
A zero-configuration bundler: point it at an HTML file and go. Source: GitHub — GitHub ↗
· runtime
“10 Things I Regret About Node.js” — and a second runtime: secure by default, TypeScript-first, its name an anagram of Node.
June 2018 · JSConf EU, Berlin
“10 Things I Regret About Node.js”
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
· library
Function components with state and effects. The whole React ecosystem rewrites itself.
OpenJS Foundation
The Node.js and JS Foundations merge: one neutral home for Node.js, jQuery, webpack and dozens more. Source: Linux Foundation — Linux Foundation ↗
Era 07 · 2020–2023
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.
· tooling
A bundler written in Go, 10–100× faster than its peers. Tools for JavaScript stop being written in JavaScript.
Evan Wallace
Influenced by webpack
· tooling
Native ES modules in development and no bundling until build: a dev server that starts instantly.
April 2020 · Native speed
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
The tools that build JavaScript are increasingly written in Go and Rust. Everything they produce is still JavaScript.
Optional chaining
?. and ?? — two operators the community had wanted for years.
Source: TC39 — TC39 ↗
· framework
Fine-grained reactivity with signals and no virtual DOM. Signals later spread to Angular, Svelte and a TC39 proposal.
Ryan Carniato
Remix
Web fundamentals — forms, HTTP caching, nested routes — as a React framework. Source: Remix blog — Remix blog ↗
WinterCG
A W3C community group so server-side runtimes implement the same web APIs. Source: Cloudflare blog — Cloudflare blog ↗
· runtime
Runtime, bundler, test runner and package manager in one binary — built on JavaScriptCore, not V8. 1.0 lands in September 2023.
Jarred Sumner
Influenced by Safari & JavaScriptCore, Node.js and Deno
Astro
Islands architecture: ship HTML, hydrate only the interactive parts. Source: Astro blog — Astro blog ↗
Turbopack
webpack's creator starts over, in Rust. Source: Vercel blog — Vercel blog ↗
Rspack
A webpack-compatible bundler, written in Rust. Source: Rspack blog — Rspack blog ↗
Biome
Formatter and linter in one Rust binary. Source: Biome blog — Biome blog ↗
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
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.
JSR
A TypeScript-first, ESM-only registry that works across runtimes. Source: Deno blog — Deno blog ↗
· governance
An open letter asks Oracle to release the “JavaScript” trademark. In November Deno petitions the USPTO to cancel it; the case is still open.
Brendan Eich, Ryan Dahl and 10,000+ signatories
A root of the lineage.
WinterTC
WinterTC (formerly WinterCG) becomes Ecma committee TC55, able to publish real standards for server runtimes. Source: W3C WinterCG — W3C WinterCG ↗
· runtime
Node 23.6 runs .ts files by default by stripping the types — no build step for simple scripts.
· tooling
The TypeScript team announces a native port of its compiler, written in Go and about 10× faster.
ES2025
Iterator helpers, new Set methods, JSON modules, RegExp.escape and Promise.try.
Source: Ecma International — Ecma International ↗
· packages
A phished maintainer, then a self-replicating worm, “Shai-Hulud”, poison hundreds of packages. npm tightens publishing with 2FA and trusted publishing.
React Foundation
React and React Native move to an independent foundation, launched in February 2026. Source: React blog — React blog ↗
Bun joins Anthropic
Bun stays MIT-licensed. In August 2026, Bun 1.4 ships — ported from Zig to Rust. Source: Bun blog — Bun blog ↗
Era 09 · 2026–
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.
jQuery 4.0
Twenty years after BarCamp NYC, the first major release since 2016. Source: jQuery blog — jQuery blog ↗
· standard
Nine years after Stage 1, the replacement for Date reaches Stage 4 — scheduled for ES2027.
TC39 (Bloomberg, Igalia and others)
Influenced by ES2025
· tooling
Vite switches to Rolldown, a Rust bundler, replacing both esbuild and Rollup. Rolldown 1.0 follows in May.
VoidZero
VoidZero joins Cloudflare
The company behind Vite, Vitest, Rolldown and Oxc is acquired; the projects stay open source. Source: Cloudflare blog — Cloudflare blog ↗
ES2026
Math.sumPrecise, Array.fromAsync, Error.isError, Map.prototype.getOrInsert and base64 for Uint8Array.
Source: Ecma International — Ecma International ↗
· language
The Go-native compiler ships. The types still vanish at build time — and what is left is JavaScript.
Microsoft
Influenced by TypeScript, in Go and TypeScript
114 marks · thirty years · one language