Front-end issues that only really existed once server-side JS became popular and dominated the…
James King

I think i get your point of view. When you say "once server-side JS became popular and dominated the ecosystem" you are talking about server-side rendering and building / bundling tools, right? But i believe that you are relating these topics directly to "trying to pretend that the JS that runs on the server is the same JS that runs in the browser", and if i'm right, probably there is a piece missing for you about some benefits of having JS running on both sides.

You can have code that is built to run on both environments, which is not anything related to server-side rendering, and you will have a lot of gains in productivity by doing that. I will give you an example:

Imagine that you have to fetch some JSON data from a server, from more than one endpoint, in sequence, and the final result will be a huge JSON with many collections where you will have to be filtering it or searching for specific parts of this data to work with. So we would have to handle:

  • async calls, in sequence
  • filtering and searching through a set of nested collections

There is many strategies to handle both tasks, right? Will you be using Promises or Callbacks to deal with the async call? How will you manage the data fetching, stack and sequence? For data filtering you will also find yourself with many ways to do it. But everything is ok and in the end of your mission you handled it pretty well. You've wrote your code and even decided to create modules for it, you know, for the time when you will need to handle these same cases in the future.

Now, did you notice that i never mentioned the environment where this was happening? What i described is a very common scenario which you will find on both server-side and client-side. The beauty is that those modules that you've created to handle the data fetch, and to filter the data collection, you will be able to use on both sides. You've created once, when you were working on a Front End project, and then you will be using the same again in case you need those requirements for a project with Node.js, and vice versa.