Hackers and painters aren't so different, Paul Graham would say. And much like art, software engineering has gone through movements as well.
Web 1.0 (1996~2004) was about static and synchronous content. The Document Object Model (DOM) and its predecessors allowed developers to treat a webpage as a tree and modify it.
Web 2.0 (2004~2019) was about dynamic content through asynchronous JavaScript and HTTP. Some of the best examples of this are Gmail and Google Maps, which fetched mail and data on demand.
The evolution of the DOM. The webpage isn't modifying directly through the DOM anymore, but rather a virtual DOM, that allows developers to declaratively, rather than imperatively, describe the page. Some applications like Google Sheets and Figma write directly to the browser canvas, "drawing" applications that don't fit cleanly in a tree object model.
JavaScript is no longer the lingua franca of the web. WebAssembly allows developers to write logic that gets executed in the browser in languages like C++, Rust, Go, C#, Python, and Ruby. Figma was an early example of this, initially writing their engine in C++ and compiling it to low-level JavaScript. Now they use WebAssembly.