seem to ignore role of AI tools...
The Grand Unifying Architecture of Frontend - DEV Community
In plain terms, it argues that framework arguments aren't about "right vs. wrong"—they're just about where different tools choose to place their focus across three basic web responsibilities.
What it Means in Plain English
1. Every web app breaks down into the same 3 layers:
- Navigation (Client): The URL and browser routing orchestrate where the user is going.
- Content (Server): The server is the single source of truth for real data and content, sending back markup or raw data.
- Affordances (Client): Fast client-side feedback—like button clicks, form inputs, loading spinners, and instant UI updates before the server responds.
2. The Golden Rule: Writes go up, Reads come down
- Mutations (Writes) always travel upward via navigation or actions (
Layer 1). - Content (Reads) always flows downward from the server (
Layer 2). - Temporary UI (Layer 3) sits on top as an overlay for instant feedback. The client never directly mutates server data locally—it only predicts the outcome (optimistic UI) until the server returns the true data.
3. Frameworks are just coordinates on a spectrum
Instead of treating HTMX, React, Next.js, or Phoenix LiveView as completely incompatible paradigms, the article maps them as trade-offs along two axes (as shown in the quadrant diagram):
- HTMX / LiveView: Put almost all weight on Server Content (
Layer 2), shipping almost zero client code for UI affordances (Layer 3). - Traditional React SPAs: Push heavy UI logic and state into the Client (
Layer 3), reducing the server to a basic JSON API. - Astro & Next.js RSCs: Sit in the middle by explicitly separating static server markup from interactive client islands/components.
4. The Solid 2.0 Vision: One tool for the whole spectrum
Carniato uses SolidJS 2.0 to demonstrate that a single framework can scale across all these approaches using unified primitives (
use server and fine-grained reactive signals):- Hydrate Once: Client components bind to server-rendered DOM nodes once at boot up, eliminating state mismatch bugs.
- Pluggable Transports: Content can stream over standard HTTP requests or over persistent connections (like WebSockets) without changing how you write your code.
