Світ веброзробки витратив більшу частину десятиліття, переконуючи себе, що браузер має виконувати основну роботу. Ми почали з документів і форм, потім поступово перенесли кожну можливу операцію на клієнт. Роутинг, управління станом, отримання даних, логіка рендерингу, навіть оркестрація запитів до бази даних через GraphQL — усе це перемістилося в JavaScript-бандли, які ставали важчими з кожним релізом. Фреймворки множилися, конвеєри збірки ускладнювалися, і те, що починалося як спосіб зробити додатки швидкими, перетворилося на архітектуру, де сторінка не могла відрендерити жодного значущого пікселя, поки мегабайти коду не будуть завантажені, розпаршені та виконані.
Цей зсув вирішив реальні проблеми. Сторінкам, що рендерилися на сервері, з дрібкою jQuery було важко забезпечити плавні переходи, яких очікували користувачі. Single Page Applications дали нам миттєву навігацію, постійний стан і багату взаємодію. Але ціна накопичувалася. Команди тепер керують складними сховищами клієнтського стану, борються з масивними JavaScript-бандлами, підтримують примхливі рівні синхронізації даних і налагоджують конвеєри збірки, які іноді здаються повноцінною роботою. Ми обміняли один набір проблем на інший, і багато розробників тепер запитують, чи повинен кожен додаток платити цей податок.
Два розробки полегшують відповідь на це питання.
HTMX and the Return of Hypermedia
Перша — це HTMX. На перший погляд, це невелика бібліотека, але її архітектурне значення є величезним. HTMX розглядає HTML як нативний формат для логіки додатка, а не як статичну оболонку, яку потрібно «наповнювати» за допомогою JavaScript.
Ось що змінюється на практиці. Традиційно, коли користувач натискає кнопку, щоб завантажити більше коментарів, фронтенд надсилає fetch-запит, отримує JSON-пакет, нормалізує його в клієнтському сховищі, пропускає через шаблон компонента, виконує diff віртуального DOM і, нарешті, оновлює сторінку. HTMX скорочує цей ланцюжок. Сама кнопка містить атрибути, які вказують браузеру, куди надсилати запит і який елемент сторінки замінити. Сервер повертає HTML-фрагмент — лише нові коментарі, загорнуті в div. Браузер замінює його. Немає жодного JSON, жодного дерева стану фронтенду, жодного алгоритму узгодження (reconciliation) і жодного імперативного JavaScript для синхронізації інтерфейсу з сервером.
Це не відмова від сучасної розробки. Це відмова від непотрібних абстракцій. HTMX доводить, що гіпермедіа — архітектурний стиль, на якому тримався ранній веб — все ще може підтримувати складні інтерфейси в поєднанні з сучасною ергономікою. Будь-який елемент може ініціювати запити, а не лише форми та посилання. Будь-яка подія може викликати оновлення. Сервер залишається джерелом істини як для даних, так і для представлення.
Chrome’s Declarative Partial Updates
Другий зсув є новішим і відбувається безпосередньо всередині браузера. Chrome впроваджує Declarative Partial Updates, або DPU. Ця функція дозволяє браузеру стрімити HTML і вставляти його безпосередньо в цільові частини сторінки в міру надходження байтів.
До появи DPU, якщо ви хотіли стрімити дані в реальному часі на вебсторінку, ви зазвичай використовували WebSockets, Server-Sent Events або long-polling у поєднанні з ручною маніпуляцією DOM. Фронтенд мав керувати з'єднанням, парсити пакет даних і вирішувати, як саме і куди вставляти розмітку. DPU змінює правила гри, роблячи процес декларативним. Розробник вказує цільовий контейнер, а браузер бере на себе все інше: отримання потоку, парсинг фрагмента та розміщення його саме там, де він має бути, навіть до того, як повна відповідь буде завершена.
Уявіть панель моніторингу, що показує серверні логи, або чергу підтримки, яка оновлюється в реальному часі. З DPU бекенд надсилає звичайні шматки HTML у міру їх генерації. Браузер стрімить їх у тіло таблиці або контейнер стрічки без жодного рядка логіки стрімінгу на стороні клієнта. Збірка відбувається нативно.
The Server-First Model
Поєднайте HTMX і DPU, і ви отримаєте цілісну архітектуру, де сервер володіє станом і генерує UI, тоді як браузер відповідає за відображення та введення даних користувачем. Бекенд-фреймворки, такі як Rails, Laravel, Django, Go templates або ASP.NET, знову стають основним рівнем інтерфейсу. Фронтенд — це не окремий додаток, який споживає API. Це гіпермедіа-інтерфейс, який генерує сервер.
This model fits a surprisingly wide slice of software. Consider the typical SaaS application. It is dashboards with sortable tables. It is admin panels with forms and filters. It is internal tools that move records from one state to another. It is CRUD workflows that show a list, expose a detail view, and let the user edit fields. It is even AI interfaces where a language model streams tokens back to the user, and each token or paragraph can be wrapped in HTML and appended to the conversation thread. For all of these, a thick JavaScript client is often overkill.
The benefits are immediate and practical. Initial page loads are faster because the first meaningful paint arrives as HTML, not after a hydration cycle completes. JavaScript payloads shrink because there is no virtual DOM, no client-side router, and no state management library to ship. Search engines see complete content without executing bundles, so SEO works by default. Complexity drops because one codebase handles routing, business logic, and rendering. Debugging gets easier. When something looks wrong, you inspect the Network tab and see exactly what HTML the server sent. There is no opaque client-side state object to reverse-engineer.
What About React and Heavy Clients?
None of this means React is dead, or that SPAs are a mistake. Complex, editor-grade applications still need a thick client. Figma runs a C++ engine compiled to WebAssembly inside the browser because server round-trips would make drawing impossible. Canva manipulates the canvas at sixty frames per second with client-side geometry. Google Docs uses operational transforms to resolve editing conflicts in milliseconds. These tools are essentially desktop applications delivered through a browser tab. They are not going back to server-rendered forms.
But most software is not Figma. Most software is not a real-time graphics editor. Most software is a reporting screen, a configuration panel, a booking flow, or a content management form. For that long tail of applications, shipping hundreds of kilobytes of JavaScript framework just to toggle a modal or fetch a list of records never made much sense. The economics of the stack are shifting. We are rediscovering that the server can be close to the user thanks to the edge, and that the browser itself has grown capable enough to update fragments without a framework intermediating every byte.
The Pendulum Finds a Balance
The arc of web architecture is swinging back toward simplicity, but it is not a naive return to the nineties. The browser is becoming smarter. Features like DPU do not replace developer ingenuity; they absorb the patterns we used to implement by hand — streaming, partial updates, targeted DOM insertion — into the platform itself. HTMX gives us the vocabulary to express those behaviors without reconstructing a miniature operating system in the frontend.
You no longer have to choose between a simple architecture and a responsive user experience. You can have both. The server can drive the interface, the browser can assemble it, and the JavaScript you write can focus on genuine interactivity rather than plumbing.
For the next generation of dashboards, admin tools, and AI-powered interfaces, the smartest client might be the one that does less.
