SPAs, SSR, typescript, bundlers, transpilers, jamstack, headless CMS, serverless adapters...
But where is all that complexity going? Most websites and web apps I encounter are no better than they were 10 years ago. Sure, they look better, but that's largely orthogonal. There's maybe a bit more interactivity but it's still basic CRUD most of the time. They break the same, sometimes even more.
It seems like chasing marginal improvements in dev and user experience leads to complexity which begets even more complexity.
Not all the fault of node.js
I felt that way about front end end work when I got a FT job working on a React system about 5 years ago but now I don’t feel overwhelmed at all.
The way people talk about it is intimidating though. The average person who wants to make a modern blog should probably host it in Azure or AWS object storage with a generator like Hugo or Pelican. Hugo in particular is zero bullshit if you don’t need to customize it, it is just a simple binary that doesn’t require you to learn anything about go or how people resolve dependencies in go or go build systems. I picked Pelican because it is written in Python and I know I can make it do whatever I want. When I send people to
https://jamstack.org/generators/
It is like waving a red flag in front of a bull in terms of eliciting the reaction of feeling overwhelmed.
What that complexity is really buying is desktop-class web applications like Figma, Notion, and the like, and massively reducing the engineering costs of building products like those to the point where it’s way cheaper and easier to build a rich, complex web app that can run for anyone anywhere than it is to build desktop or mobile software with the platform-holders’ own APIs.
If you’re not doing one of those and are just doing a light crud app, then you probably want to use one of those desktop-class web apps like AirTable.
And if you want to make a static website, then we have some much better tooling you can opt into to make managing it and building it out faster, but it’s far from essential.
So a good chunk of this emerging complexity tries to improve web developer productivity (at the cost of stack complexity and fragility). It's the infamous indirection treadmill, laser focused on a single thing: overall productivity and fast delivery of the final product by low skilled employees.
Now the fact that it looks and feels almost like a new flavor of JSP is another matter. I think the HATEOAS model was tried tested and true and just needed a bit more refinement rather than the total overhaul that SPAs+JSON APIs brought in.
the internal product is _full employment_ along with a healthy dash of _intellectual pleasure_, though much of the latter is in rediscovery of principles and approaches which regularly recur as the pendulum swings. But pride of ownership and invention is strong human drive.
Were seeing bun's first party typescript support pave the way forward to remove the need/weight of bundlers and transpilers
Were also seeing Next.js (for better or worse) pave the way for SSR support in a way that comes naturally for React Devs.
Jamstack is a fading niche, specifically Gatsby (still useful for content sites, but Next.js can fill this role too)
Headless CMS will always be useful for content and is not a JS/SPA exclusive thing.
Serverless adapters is also very niche.
Also SPA's are here to stay, whether people want to accept this fact or not, there is functionality that is only enabled by an SPA architecture.
158 NPM packages already, and the page load requests are insane.
Two reasons I'm doing this monstrosity of an implementation anyway:
1. Resume-driven-development, on a personal/indie project.
2. Using the framework's interactive SSR just to make it harder for freeloaders (AI company scrapers, copy&paste developers) to copy the information or the implementation tricks.
[*] Except for a little flexbox "responsive" flowing, corner rounding (without kludges), and some fade transitions, none of which are necessary.
Then I was in an interview, where some junior openly sneered at me, for not using a recent popular RDD framework for it.
Part of the problem, even for highly experienced people, is that even the good jobs usually have "technical interview" gatekeeping that's not very enlightened.
(Yes, no matter what framework or stack you're using, I've probably done related things before, and I can pick it up quickly. No, a Leetcode hazing won't tell you how I think, nor what I can do, and it just seems like you're jerking off.)