Why has the web become so complex?Why has the web become so complex?<br>The complexity of the modern web and hypermedia systems 2026.06.26<br>KO | ENThe web as an applicationSPA (Single Page Application)SSR (Server-Side Rendering)The web as a hypermedia systemHypermediaREST (Representational State Transfer)Disillusionment and possibility<br>We once lived through the early-2000s line that even kids could make their own homepages, but web development today has become so difficult that the old line now rings hollow.Since Tim Berners-Lee published the first website, the web has gone through immense change and growth in a short span of time. Early on, the web was a vast collection of documents. A user selected a particular web document on the client, the browser fetched it from the server, and displayed it on the screen. That was the purpose of the World Wide Web, and that was all users expected from it.The web as an application<br>If I had to pick one decisive moment when the web’s complexity exploded, I would point to the moment it grew out of its early document-centered form and became an application. In the mid-2000s, Google Maps introduced all kinds of interactions, letting users zoom in, zoom out, and drag the map to load new areas. None of those interactions required refreshing the entire page. Once people began building web applications in earnest with Ajax (Asynchronous JavaScript and XML),[1] the web stopped being a system where the client simply received a finished HTML document from the server and displayed it. With Ajax, JavaScript can make asynchronous HTTP requests.As web applications became widespread, the web split into frontend and backend, with the two sides communicating over JSON APIs. Most of the screens users saw were written in JavaScript, and many web publishers and Flash developers found themselves pushed to reinvent themselves as JavaScript developers. Companies began calling the programmers who built the client side of the web “frontend developers.”SPA (Single Page Application)<br>The problems that make web backends hard did not change much in essence, but the problems that make frontends hard grew rapidly in both number and scale over a short period. Every time an interactive UI element was added to the screen, the amount of state the client had to manage grew exponentially, and frontend code naturally became more complex as well. From the mid-2010s on, frameworks and libraries poured out and competed with one another, all in the name of reducing the complexity of web applications.They differed in design philosophy and core concepts, but they shared the same goal: make SPA development easier. An SPA is a kind of web application that loads an HTML page only once when the application is first opened, then handles all routing and state management with client-side JavaScript. Before that, every screen transition required reloading the whole page, so the screen often flickered and felt far removed from a native application. SPAs improved responsiveness and delivered a better user experience. The older style of web application, which used multiple pages, came to be called MPA (Multi Page Application), to distinguish it from SPA. An SPA responds with an empty HTML file, and all later screen transitions are handled in JavaScript.By then, hand-stitching JavaScript event handlers onto HTML and CSS and uploading the result over FTP had become something from before civilization. Programmers who first learned web development in the modern era came to regard the web that serves fully formed HTML from the server as backward. Many frontend developers began writing code in TypeScript, transpiling it into JavaScript, bundling it into a single file, and deploying that. A shaky JavaScript ecosystem filled up with package managers, build tools, and competing runtime implementations.SSR (Server-Side Rendering)<br>SPAs brought a real advance in user experience. Before long, though, performance problems appeared. When JavaScript files grow large, SPAs cannot help taking a long time to load at the start. Until the JavaScript loads, the user cannot see any meaningful content in the application. The same was true for search engine crawlers, which meant SPAs also had an SEO (Search Engine Optimization) problem: they did not surface well in search results.As a way around that, SSR, which renders HTML on the server and sends it down, came back into focus. The earlier SPA rendering model came to be distinguished from SSR as CSR (Client-Side Rendering). Because it serves HTML from the server, it can call to mind traditional web applications built with PHP or JSP. Modern SSR is different, though. It preserves the component-based framework ecosystem that grew up around SPAs, performs only the first render on the server, and leaves later state management and interaction to the client. The process by which the client loads the JavaScript containing state, event handlers, and internal framework logic, and then turns interaction back on,...