gr8s by Codoma.tech

Blog / Article

The SPA model is back, and SEO no longer blocks it

Updated September 2026

Summary: Modern SSR frameworks ask developers to reason about server and client boundaries. This article argues the simpler SPA model is a valid default again, provided the server layer handles rendering and SEO.

The complexity tax of server components

React Server Components split an application into server and client halves. That is powerful, but it adds a boundary that every developer on the team has to hold in their head, and it produces a class of hydration bugs that only appear at runtime.

What developers actually want

Most teams want to build features, ship quickly, and not debug why a page rendered differently on the server than on the client. A single-page app gives them that, but historically at the cost of SEO because crawlers saw an empty shell.

That trade-off is what gr8s removes. The app stays a client-only SPA, and the server renders and analyses the exported pages so crawlers get real HTML.

A sane default

This is not a claim that server components are wrong. It is a claim that many projects do not need them, and pay a complexity tax for features they never use.

  • Build the app as an SPA, with no server/client boundary in your day to day work.
  • Export the build and let the server render it for crawlers and users.
  • Score every page for SEO during the build, not weeks later.

See it on your own build

Try gr8s →

See how gr8s compares →