Yeh I've seen some of those as SPAs... ouch
Honestly, I'd rather not be presented with an empty grid of spinners tbh
I think you can get something useful on first render and then dynamically update from there (either with polling, SSE or WebSockets) all without the added complexity of an SPA