"text" here is as in "text/html", not as in "English-language copy".
> In a web app it can happen that you use it for an hour without the backend doing a single thing.
I would submit that this is an extremely rare case. The most involved web apps I interact with (say, Figma) are constantly syncing their state with the server. The simplest (say, TurboTax) save state as I move on to the next screen.
If you do have a case where you can pull that off, then by all means use an SPA. But it's weird to say that something isn't a web app unless it can go long periods of time without server interaction.
Generally, server interactions are arbitrary with SPAs, while SSR will happen all the time.
Going only a few minutes without server interactions in an interactive app is a big leap compared to SSR.
PS: I not only can pull that off, but I did. It's not too hard to think of apps like that. Consider e.g. Vscode
That's probably the key thing - most companies building SPA's don't really need an application but a website. There are many interesting products that need to be applications because of the functionality they need, but for every one such product there's at least a dozen that does not.
Yeah, well, from the name of it, doesn't that sound like what the Web is for?
I mean, we already have systems to run applications on; they're called operating systems.
Not only SPAs but "web applications" as a whole are a mistake IMO.
The problem with SPAs is not the technology or the architecture itself. The problem is everyone thinks, by your own definitions, they are building an "app" by default.
I've already worked for several teams which struggle to get almost anything done and everything takes ages to ship because of the fanaticism of using React for everything. God, some didn't even know you could submit a form without building a json API endpoint.
Doesn't really sound like an application, but a website.
In a web app it can happen that you use it for an hour without the backend doing a single thing.
> There are only fewer languages to deal with if you aren't in charge of writing backend code.
You don't have to deal with them at the same time