Hey fellow developers,
I have a question to discuss that has been bothering me for some time now, at the latest since the new official React documentation (which is great by the way). In the official docs they are mentioning that the best way to start a new React project is to use a framework like NextJS, so NextJS seems to be a little bit the state of the art now.
Although I think it's an awesome framework, I think that I observe a trend that feels like going some steps backwards to me.
They seem to take big effort in their server-side stuff, which could be useful for pages with a big spot on SEO. Also Remix seems to get big attention these days, where I also can see similar ways of thinking.
But for me it feels like going back to those Symfony days, where I have a monolithic app structure. The decoupling between backend and frontend felt like a game changer to me. I can deploy my frontend to static site hosting for example and can concentrate to have a robust backend which is scaling. After some time I need an app? No problem! More resources for the backend and a separate app, no monolithic structure. Or I want to provide my backend api for partner apps? No problem, just a little more scaling or a microservice.
Do you get my point? It feels great to have a fast and clean React frontend with Vite and a backend with NestJS which is scaling as a combination. But is it still up to date? Are we really going back to more monolithic patterns, or are they monolithic at all? Is it really going back or even going forward?
What do you guys think? I don't want to become that old man who is telling everyone that SPAs are the hottest stuff while everybody is doing modern stuff.
I agree, I've seen paradigm constanting switching over the years, like:
I guess the years of experience makes you understand that they are all different tools/languages, that solves some problems betters than others, and it's up to you to decide which one is the best for the issue you need to solve.
Personally I prefer the separation between BE and FE, and I tend to keep doing that, especially if you want your API to be more useful and reusable, but in some other cases you don't need that and it's equally good to go back to a more monolitich approach, if it serves the right purpose.