Periodical / Volume 02
The Modern Era
From React's arrival to the complexity backlash. View each spread as an open magazine.
Cover / 08 spreads
A library, not an MVC framework
React enters a crowded field by declining to be a complete application architecture. Pete Hunt’s launch-era explanation frames it as a library for composable interfaces: reusable pieces that can present data as it changes.
React is a library for building composable user interfaces.— Pete Hunt, June 5, 2013
The important shift is not a new template syntax but a new unit of thought. The UI becomes a tree of components, rendered from state and reconciled when that state changes. A front-end library has begun to look like a language for describing the screen.
The page becomes an application
The single-page application turns the browser from a document viewer into a long-lived client. Backbone’s 1.0 description captures the emerging arrangement: models, collections, views, events, and a RESTful JSON interface held together in the browser.
Backbone supplies structure to JavaScript-heavy applications— Jeremy Ashkenas and the Backbone project, March 20, 2013
React’s own 2013 post points to Instagram as a single-page app using React and Backbone.Router. Navigation, data fetching, and rendering start to feel like one continuous surface — powerful, responsive, and increasingly unlike the page that came before it.
The app becomes a bundle
Once an application is made from components and modules, the browser needs a new delivery model. webpack’s first stable release describes a bundler that resolves dependencies while compiling, splits code into on-demand chunks, and preprocesses more than JavaScript.
webpack is a bundler for modules.— Tobias Koppers, February 19, 2014
The build is no longer a final compression step after development; it is the machine that assembles the application. A dependency graph, loaders, plugins, and code splitting become part of the product’s architecture — and part of every developer’s daily vocabulary.
Types at application scale
TypeScript moves type checking from an academic promise into a team-sized JavaScript workflow. Microsoft’s 1.0 announcement looks back to the 0.8 release in October 2012, then points to a growing community, shared declaration files, and codebases already exceeding half a million lines.
TypeScript 1.0 is a language designed with large-scale JavaScript application development in mind.— Jonathan Turner, April 2, 2014
The pitch is deliberately practical: preserve JavaScript’s reach while giving large applications a language service, navigation, early errors, and a contract that can survive a growing team.
The browser gets a component API
The component idea leaves the framework boundary. Chrome 54’s Custom Elements v1 announcement describes a browser-native way to define custom HTML tags and give them their own API and behavior.
The result, a browser-native way to build reusable, interoperable components.— Pete LePage, October 18, 2016
The promise is interoperability: a component can be authored as a reusable element that the platform understands, rather than as a convention owned by one JavaScript library. The component web now has two competing centres of gravity — framework trees and browser primitives — each claiming to make complexity portable.
Frameworks absorb the stack
The framework era begins when the toolchain stops looking like a kit of separate decisions. Next.js launches as a small layer over React, webpack, and Babel, then folds in filesystem routing, server rendering, code splitting, data fetching, and deployment conventions.
We're very proud to open-source Next.js, a small framework for server-rendered universal JavaScript webapps— Naoyuki Kanezawa, Guillermo Rauch, and Tony Kovanen, October 25, 2016
The appeal is not simply more features. It is fewer decisions at the start of a project. A framework becomes the answer to the question that component libraries and bundlers left open: how should the whole application be assembled and shipped?
Less code becomes a design goal
The backlash does not reject components; it questions the machinery required to make them reactive. Rich Harris argues that code volume is a neglected product metric and presents Svelte as a compiler-led alternative.
Reducing the amount of code you have to write is an explicit goal of Svelte.— Rich Harris, April 20, 2019
The runtime gives way to generated JavaScript, while the authoring model tries to keep state, markup, and behavior close together. Svelte turns a quiet complaint — too much ceremony for too little interface — into a design principle: the best abstraction may be the one that disappears before the browser sees it.
The SPA meets its limit
By 2020, the single-page application is no longer a novelty; it is a default that has spread from major products to blogs and marketing sites. Carson Gross’s htmx essay names the counter-movement: keep HTML as the primary medium, add targeted interaction, and spend the complexity budget where the application is distinctive.
SPA frameworks tend to be complex, and you don’t get a lot of benefit for all that complexity in many cases.— Carson Gross, October 29, 2020
The argument is not that JavaScript disappears. It is that the web’s older strengths — documents, links, forms, and server responses — can become an alternative to making every page behave like a miniature operating system.
Use the controls, arrow keys, or outer page edges to turn one page at a time.