What has been is what will be, and what has been done is what will be done, and there is nothing new under the sun. - Ecclesiastes 1:4-11
Noticing A Pattern
Technology trends have been moving at breakneck speeds in recent years, with innovations and new ideas coming to the forefront seemingly every day. Tools like Chat-GPT will only accelerate this process. However, it is interesting to note that some of the latest technology trends seem to be going backwards in certain respects. From the way content is rendered to the architecture of large-scale systems, it seems that some technologies are reverting to older patterns. In this article I want to talk about a few questions that only recently became very hard to answer.
Where Should I Render My Content?
One changing trend is the way content is rendered on the server. Traditionally, web pages were served as static HTML files, which were generated on the server and sent to the client's browser packaged up and ready to go. However, with the popularization of client-side rendering (CSR) using JavaScript frameworks like React and Angular, it became common for web pages to be generated on the client-side, giving websites a more dynamic flexibility. But now, tools like Next.js allow for server-side rendering (SSR), where the content is rendered on the server and then sent to the browser. After the page initially renders, the React application takes over in the background. This may seem like a step backwards, but it has a number of advantages, including better SEO and faster initial load times while still being flexible about what gets sent to the browser.
With the release of version 13.4 there are even more ways blur the lines between client and server with things like Actions. Projects like this one have been both pushing the boundaries of software while also somehow falling back to older trends like SSR.
Where Should I Put My CSS?
Another example of this trend is the resurgence of inline CSS patterns. For years, it was considered best practice to separate CSS styles from HTML markup using external CSS files. However, tools like CSS-in-JS and Tailwind CSS have brought inline CSS back into favor. I have already written an article about tools like Tailwind before so I won't go into detail about it again. However, let's just say that some trends die for a reason.
With the rise of impartial frameworks like React, you naturally have a million ways to do the same thing. This has led to hilariously titled articles like this one called 9 Ways To Implement CSS in React JS. This title pretty much summarizes how crazy the React ecosystem really is. Full discloser, I personally prefer frameworks like Angular where I know I can reduce my decision fatigue and don't have to literally reinvent the wheel every time I start a new app.
How Should I Host My API?
Finally, there is the recent and absolutely shocking move by Amazon Prime to switch back to a monolith architecture, even though AWS has built a vast empire based on the Serverless model. A monolithic architecture is one where the entire system is built as a single, interconnected application, while a Serverless architecture breaks the system up into smaller, independent Microservices that require complex network connections. This move by Amazon Prime may seem surprising, but it has its own advantages, including easier deployment, testing, and most of all... it's actually way cheaper... like 90% cheaper. 😱 The future of Serverless Microservices is definitely not set in stone anymore. Read more about this case study here.
Conclusion
Much like all human children, every generation of programmers believes that they know better than the previous one. One decade we move everything to the client with SPAs and massive JavaScript frameworks because PHP and Multi-Page Applications suck. The next decade we start moving everything back to the server and edge functions to make our clients faster and leaner while massively improving SEO. No matter which pattern you prefer the only truth is that nothing stays in fashion forever.So, do yourself a favor and make sure you don't get caught being in public wearing last year's architecture.