Frontend Graphics Evolution: From HTML Tables to WebGPU

Before choosing technology, understand the landscape.

Many developers encountering frontend visualization for the first time dive straight into a framework’s documentation, slowly grind through configuration options, and eventually produce a working chart. But months later, when they hit performance bottlenecks or need to support more complex interactions, they realize the tool they chose doesn’t fit their needs.

The evolution of frontend graphics technology follows a very clear trajectory. Understanding this trajectory keeps you from getting lost when selecting tools.

The Timeline

First, look at the timeline and feel the rhythm of how these technologies emerged:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
1991 ───── Graphviz born (AT&T Bell Labs, DOT language, origin of graph layout)
1999-2001 ─ SVG 1.0 becomes W3C Recommendation (Sept 4, 2001), SMIL animation standardized
2000s ───── Flash plugin dominates Web rich graphics (FusionCharts 2002, Open Flash Chart)
   │         Pure HTML/CSS table layouts coexist as zero-dependency solutions
2004 ────── Canvas element introduced by Apple to WebKit, submitted to WHATWG, early HTML5
2009 ────── Highcharts released (SVG rendering); PlantUML born (based on Graphviz)
   │         CSS Flexbox Working Draft published
2010 ────── GSAP 1.0 released; Canvas API baseline widely available
2011 ────── D3.js officially released; WebGL 1.0 standard released (based on OpenGL ES 2.0)
2013 ────── ECharts (Baidu), Chart.js released
2014 ────── Mermaid born (Knut Sveidqvist)
2015 ────── Recharts, Victory, Plotly.js released; CSS Grid layout progresses
2017 ────── Lottie open sourced by Airbnb; CSS Grid becomes W3C Recommendation; WebGL 2.0 released
   │         Adobe announces Flash end-of-life
2019 ────── GSAP 3.0 released; D3 v5+ continues modularization
2021 ────── ECharts graduates to Apache Top-Level Project; Safari finally supports WebGL 2.0
2022 ────── GitHub natively supports Mermaid rendering (watershed moment)
2023 ────── WebGPU lands in Chrome 113; CSS Houdini @property full browser support
2024-2026 ─ Mermaid completes $7.5M funding; ECharts 6, WebGPU support expands in Firefox/Safari

Behind this timeline lie three evolution threads.

Three Evolution Threads

Rendering Mode: From Retained to Immediate to GPU

Browser graphics rendering has gone through three modes.

SVG represents retained mode. The browser maintains a graphics DOM tree, where each element can be queried, manipulated, and bound to events. This mode is intuitive — using it feels like manipulating ordinary HTML elements. But the cost is that when node count grows, layout and redraw overhead becomes significant.

Canvas represents immediate mode. Developers issue drawing commands to the canvas, and graphics immediately become bitmap pixels. The system doesn’t retain graphics state. This exchanges for high throughput but loses element-level interaction. You need to track mouse positions yourself, handle click events, or use third-party libraries to wrap an object model for you.

WebGL and WebGPU hand rendering to GPU programmable shader pipelines, achieving large-scale parallel computing. This opens up possibilities for million-point datasets and true 3D visualization, but at the cost of exponentially higher development complexity.

mermaid
flowchart TD
    A[Retained Mode<br/>SVG] --> B[Immediate Mode<br/>Canvas]
    B --> C[GPU Parallel<br/>WebGL/WebGPU]
    
    style A fill:#FF9800,color:#fff
    style B fill:#2196F3,color:#fff
    style C fill:#4CAF50,color:#fff

Chart Production: From Manual to Config-Driven to Diagram-as-Code

Early charts relied on HTML tables and CSS positioning manually pieced together. Back then, making a bar chart required simulating bar heights with table cells and coloring with background-color. The workload was huge and adjustments were painful.

Then libraries like Chart.js, ECharts, and Highcharts introduced the config-driven paradigm. Pass in a JSON configuration object, and the library automatically renders the chart. This mode significantly lowered the usage barrier, but configuration dimensions are many, documentation is thick, and learning cost isn’t low.

At the same time, Graphviz, PlantUML, and Mermaid pioneered the diagram-as-code paradigm. Describe charts with text, and the engine automatically layouts and outputs SVG. This makes charts version-controllable, diff-able, and AI-generable. In technical documentation and architecture diagrams, this paradigm is becoming increasingly popular.

mermaid
flowchart TD
    A[Manual Drawing<br/>HTML Table Layouts] --> B[Config-Driven<br/>Chart.js/ECharts]
    B --> C[Diagram-as-Code<br/>Mermaid/PlantUML]
    
    style A fill:#FF9800,color:#fff
    style B fill:#2196F3,color:#fff
    style C fill:#9C27B0,color:#fff

Animation: From Decoration to Data Narrative

Early Web animations were mostly Flash plugins or GIFs. Back then, animations were primarily for “cool factor,” making pages look less plain.

SVG’s SMIL animation and CSS animation made declarative animation possible. No JavaScript needed, one line of CSS and elements move.

GSAP provided professional-grade timeline sequencing capabilities. Complex time axes, easing functions, animation chains — these are especially important in data visualization transition animations.

Lottie connected designers with developers. Designers create animations in After Effects, export JSON, and developers integrate into projects. This solved the pain point of “designer animations not rendering faithfully.”

In modern data visualization, animation bears the core responsibilities of “perceived performance optimization” and “data narrative.” Use transitions to mask loading delays, use animations to convey causal relationships in data changes. Animation is no longer decoration, it’s part of information transmission.

Why Understand This Trajectory

What’s the use of knowing this history?

The first use is having a coordinate system when selecting tools. Are you making static technical documentation diagrams, or real-time monitoring dashboards with million data points? Is this a high-fidelity prototype tool for designers, or an automated reporting tool for developers? Different needs correspond to best practices from different eras.

The second use is understanding tool limitations. SVG looks convenient, but node counts above thresholds cause stutter. Canvas has good performance, but interaction requires reinventing wheels. WebGL is powerful, but development threshold is high. Knowing why these tradeoffs exist helps you know when to use which.

The third use is seeing the direction of trends. From manual to config-driven to code, from retained to immediate to GPU, from decoration to narrative. These trends will continue to evolve, understanding the past helps better anticipate the future.

Next Steps

After understanding the landscape, you can start learning specific technologies. Each generation has its applicable scenarios, no silver bullet exists. Choose tools based on needs, understand tradeoffs, this is the rational approach.

Next, I’ll dive into each technology direction, from basic concepts to practical cases, helping you build a complete frontend visualization knowledge system.