Not really. See a better way here: https://github.com/wisercoder/eureka
But there are alternatives!
Here's an example application built without heavy frameworks. It is very maintainable and easy to understand: https://github.com/wisercoder/eureka
It uses two 500-line libs:
This is the component "framework", it is 500 lines: https://github.com/wisercoder/uibuilder
This is the router, it is 500 lines: https://github.com/wisercoder/mvc-router
For most applications the extra complexity is not worth it. React started off as a simple library but now it has bloated with Redux and ReactRouter and Hooks and all that nonsense.
You can do plain HTML/CSS/JS development for most projects. Here's an example: https://github.com/wisercoder/eureka It uses a couple of 500-line libs, that's it. No complicated framework, and yet you will be more productive.
What does using Vanilla JS look like? Here's an example: https://github.com/wisercoder/eureka It uses two tiny 500-line libs. It uses TSX files, just like React. It has components, just like React. It doesn't have incremental screen update, but neither does React, if your components are interactive and stateful.
It uses two libs, 200 lines and 500 lines each:
This lib for components: https://github.com/wisercoder/uibuilder
And this one for routing (HTML5 history API): https://github.com/wisercoder/mvc-router
React is overrated in my opinion. If your UI is mostly read-only then React works well. If it has simple interactivity then React still works well. But if you have components that manage their own interactivity then React breaks down. That's because such interactive components have state. When a component has state, and you want to update props then FB recommends replacing the component by changing the key. At that point you lose all benefits of React, including preservation of selection, scroll position, focus, etc.
> solved with a simple template rendered in the backend
Or a simple template rendered in the frontend, see this demo, where no huge libs are used. Instead a 200-line lib is used to get the equivalent of stateless React components: https://github.com/wisercoder/eureka