Daniel Leeder


If you've been in web development for any length of time, you've witnessed the great architectural debate: should applications be server-rendered or client-rendered? The arc of history on this topic looks less like a straight line of progress and more like a ping pong match.

The last decade has taken us on a wild ride: from a time when server-rendering (think PHP, Rails, Django) was the only technical option, to a massive push for dynamically generated Single Page Applications (SPAs) via client-side JavaScript, and back again to a world where "some parts on the server, dynamic bits on the client" (hybrid) or even full server-generated pages that act like old tech (but are written in JavaScript) are the new standard.

It's easy to get architectural whiplash. But the truth is, there is no single "correct" answer. The only mistake is getting caught up in the trends instead of making a deliberate choice for your product and your customers.


Choose the Right Tool for the Job

Instead of asking "What's the hot new rendering pattern?", we should be asking "What experience are we trying to build?".


The Great Unifier: The API

The only major evolutionary difference between the old era of server-rendering and today is that both of these rendering models can, and should, be served by a single, well-designed API.

Your backend shouldn't care if it's serving data to a server-rendered page or a client-side application. This separation of concerns is the real progress. It allows you to have a portfolio of experiences—a server-rendered marketing site, a client-rendered web app, and native mobile apps—all powered by the same core logic and data.

Don't get caught up in trends when deciding your architecture. Understand the trade-offs, make the right choice for your organization and your audience, and build the best experience to provide the most value.