There exists more than REST
So these days it seems there are too many choices, and the wrong simplification is being applied. Since everything in the frontend and backend is being consolidated to a singular language/framework to solve the entire issue. I think it should be pulled back a little further and also taken a bit broader.
Remember REST?
Remember when REST first was a big thing. The idea that you would have stateless calls to the backend that just ships data? That was revolutionary. Then all sites became REST API sites. The SPA got borne out of it. Then everything became an SPA. Whether that fit or not. Handling any type of state/session data became extremely difficult and also the calls to get data from the database through some reverse proxies to ultimately end up in the frontend after several transpiling steps made everything worse in most every way.
There are many other ways to program the application. You had the MVC pattern, MVVM or any of the MV* patterns. These still hold value to this day. I think it is being skipped because it is so old and not new. Not exciting, yeah yeah tech is boring is good post coming. Well not really. Try to make tech exciting and challenging, but not just for the sake of making it difficult for you or following a trend that seems to be forming.
Then there is the fact you do the entire thing in either the backend or frontend that seems to be prevailing now. Which brings with it this idea of following the caravan out into the desert where everyone thinks someone else will know the way to the oasis and they all end up dying in the desert because of it.
I have been in so many projects and every time they reached for a web application with a login screen and everything being behind REST API. The next thing that always has to happen is how to secure the REST API? Then we are always building everything twice, the data models get created in the backend and then have to be exposed to the frontend and because that is in TypeScript we have the data model definitions (schemas) now twice. Once in the backend for let's say Java and Hibernate and in the frontend for Angular. After pointing this out, we still keep on the same train tracks. Why? Well we can charge the customer twice for the same work.
Pick the right tool
Just keep your options open and choose the right tool for the job. Not just take GraphQL which is nothing more than a database explorer disguised as a RPC framework. When I am working on my personal sites, I try to make it as simple as possible and not do double work. So a MVC app works perfect for me.