Summary: React Server Components and the "use client" directive introduced hydration errors, server/client boundary bugs, and steeper learning curves. The SPA development model — simpler, faster, and easier to debug — is making a comeback. Gr8s Server makes SPA development viable again by handling SSR on the backend while letting developers work entirely on the client side.
The Promise and Pain of React Server Components
When Next.js 13 introduced the App Router with React Server Components (RSC), it promised better performance and simpler data fetching. In practice, many teams found it introduced a new category of problems:
- "use client" confusion: Forgetting the directive breaks your app. Adding it unnecessarily defeats the purpose.
- Hydration errors: Mismatches between server and client HTML output crash the page.
- Server/client boundary bugs: Passing the wrong type of component across the boundary causes runtime errors.
- Split mental model: You must constantly track which code runs where and whether data flows correctly between them.
What We Lost with Server Components
Before RSC, the SPA model was dominant — and for good reason: one mental model, no server/client boundaries, instant page transitions, simple debugging, straightforward state management. The trade-off was SEO. SPAs historically struggled with search engine crawling because JavaScript-heavy pages were not reliably indexed.
How Gr8s Server Bridges the Gap
Gr8s Server gives you the SPA development model with the SSR that search engines need:
- Develop as SPA: Build entirely on the client side with your framework of choice.
- Deploy with SSR: Gr8s Server renders your SPA on the server before sending it to the browser.
- Built-in SEO: Every rendered page is scored for SEO — no separate tools needed.
"We migrated a Next.js app to Gr8s Server and removed about 60% of our boilerplate code. No more 'use client' directives to manage, no hydration errors during development."
— Frontend lead at a SaaS company (anonymized)
Getting Started
Export your SPA as a static build, run the Gr8s CLI, and deploy. Try the free Indie plan: