I've seen this pattern repeat itself countless times: teams build a SPA, struggle with initial load performance, then swing completely to SSR with progressive enhancement. They throw out the SPA architecture because they think it's fundamentally at odds with performance. But the real issue isn't the architecture—it's that we're not leveraging what the browser already gives us.
When you server-render HTML, the browser starts parsing it immediately. During that parse, it discovers resources it needs: stylesheets, scripts, images. The browser is already doing parallel loading—that's its default behavior. The problem is we're not telling it about our data dependencies early enough.
The fetch call in your JavaScript might complete instantly because the response is already cached. You get the benefits of SSR (fast HTML delivery, progressive enhancement) with the benefits of a SPA (fast client-side hydration).
Some really nice clear explanation of why using <link rel="preload"> is so useful.