Skip to content

The browser museum

The Grid Before Grid

1994, 1997
  • 1994EXTINCT

    The 216 web-safe colours

    A palette designed so images would not dither on 8-bit displays. #CC33FF was a design decision, not an accident.

    Outlived by exactly one of its members: #FFFFFF.

    The first widely adopted design-token system on the web, born from a hardware constraint that vanished within a decade.

  • 1996EXTINCT

    Table-based layout

    Before CSS could position anything reliably, the only cross-browser layout primitive was a data table with invisible borders, nested four deep, held together with 1×1 transparent GIFs.

    Died of semantics. Survived by <div>, which learned nothing.

    Established that layout needs a two-dimensional model. CSS Grid is, in a real sense, the feature people were asking for in 1996, arriving twenty years later with the semantics fixed.

  • 1997EXTINCT

    spacer.gif

    A 43-byte transparent GIF, stretched with width and height attributes to force whitespace. Every commercial website of the era shipped hundreds of them.

    The original layout hack. Replaced by a property called margin.

    A permanent reminder that when a platform lacks a primitive, developers will invent one out of whatever is available, and it will be worse.

Structural Experiments

1996, 1999
  • 1996EXTINCT

    <frameset>

    Multiple independent documents in one window, each with its own scroll position and its own URL, none of which the address bar acknowledged.

    Broke bookmarking, printing, search and the back button. Removed in HTML5.

    Every problem framesets caused, deep linking, history, focus management, scroll restoration, is a problem single-page applications had to solve again from scratch.

  • 1999ARCHIVED

    Quirks mode

    A whole second rendering mode, entered by omitting a doctype, that reproduced Netscape 4 and IE 5 bugs on purpose so older pages would keep working.

    Still implemented in every browser you use. It has simply been very quiet for twenty years.

    The canonical example of the web's core commitment: do not break existing content. The whole platform's design is constrained by it.

The Plugin Age

1996, 2001
  • 1996EXTINCT

    Adobe Flash

    A vector animation runtime with its own language, timeline, audio stack and rendering engine, running inside a plugin the browser knew nothing about. For a decade it was the only way to do animation, video or games on the web.

    End of life 31 December 2020. It taught the web what it was missing, then was replaced by it.

    Canvas, WebGL, the Web Animations API, WebAudio, the video element and WebAssembly are all, in part, the open platform catching up to what Flash demonstrated was possible.

  • 2001EXTINCT

    Internet Explorer 6

    Shipped in 2001 with roughly 90% market share, then received no meaningful update for five years. Its broken box model, hasLayout quirk and PNG alpha handling defined a generation of CSS hacks.

    Support finally ended in 2022. Several developers held parties.

    Produced graceful degradation, feature detection, polyfills, and an industry-wide conviction that evergreen browsers are worth almost any cost.

The Library Era

1999, 2006
  • 1999MUTATED

    XMLHttpRequest / AJAX

    Shipped in Internet Explorer 5 as an ActiveX control for Outlook Web Access, then reverse-engineered by everyone else. Google Maps made the technique famous in 2005 and the term AJAX was coined the same year.

    Superseded by fetch(), which is the same idea with promises and a sane API.

    The single change that turned the web from a document system into an application platform. Everything since is a refinement of 'update part of the page without reloading it'.

  • 2006STILL BREATHING

    jQuery

    One function that made the DOM tolerable and browser differences invisible. `$('.thing').fadeIn()` did in one line what took thirty lines of branching code per browser.

    Not dead. Still running on a large share of the web, quietly, doing its job.

    querySelectorAll, classList, fetch and Element.closest are all jQuery features that were absorbed into the platform. Its greatest success is that it argued itself out of necessity.

The Modern Web

2010, 2010
  • 2010STILL BREATHING

    Responsive Web Design

    Ethan Marcotte's article combined fluid grids, flexible images and media queries into one idea, and ended the industry practice of building a separate m-dot site.

    Not archived, absorbed. Nobody says 'responsive' any more because nothing else is acceptable.

    Container queries, logical properties and intrinsic sizing are the same principle applied at component scale rather than page scale.

  • 2010MUTATED

    The Single Page Application

    Move routing, rendering and state to the client, ship an empty div, and rebuild the browser's navigation model in JavaScript. It solved real problems and created an equal number of new ones.

    Not dead, recompiled. Server rendering, streaming and islands are the industry's revision notes.

    Every framework since has been negotiating the same trade-off: how much of the application belongs on the server, and how much genuinely needs to run in the browser.

  • 2010EXTINCT

    Application Cache (appcache)

    A manifest file for offline web apps whose failure modes were so unintuitive that the standard reference article on it was titled after a swear word.

    Removed from browsers. Replaced by service workers, which are harder and correct.

    Proof that a declarative API for a genuinely complex problem can be worse than an imperative one. Service workers gave developers the event loop instead of a manifest, and offline finally worked.