Rendering and search
How your app renders decides what Google sees
Rendering strategy is the decision most often got wrong on a web application build.
It sets what search engines can read, how fast the first paint arrives, how interactive the page feels, and how expensive the stack is to run and reverse after launch.
The choice belongs in scoping, next to authentication, not after the UI is already shipped as a pure client bundle.
Client-side rendering
The browser downloads a shell and JavaScript, then assembles the page. Users wait for scripts and data before meaningful content appears. First contentful paint can look empty; time to interactive depends on how large the bundle grew.
Search engines may execute that JavaScript, or may not, and the delay before content is available for indexing is real. A public product that relies only on client-side rendering can be thin or invisible in results even when the live UI looks finished.
Build and run cost skews toward front-end complexity and CDN delivery of assets. Server cost can stay lower until every request still needs APIs for personalised data.
Server-side rendering
HTML arrives complete for the first response. Search engines receive real content on the first fetch. Users see structure sooner, though hydration and client scripts still affect time to interactive.
Server cost and operational complexity rise: each request or cache miss does more work, and caching rules have to be correct when pages differ by session or role.
This is the usual choice when a public surface must rank and the content cannot be fully static.
Static generation
Pages are built ahead of time as files. Response time and hosting cost are usually the best of the set for public content that changes on a publish cycle rather than per user.
The model breaks down when the same URL must show personalised state. At that point you either gate authenticated UI behind a separate application shell or move those routes onto a hybrid model.
Incremental and hybrid approaches
Many products mix strategies: static or server-rendered marketing and documentation, client-rendered dashboards after login, incremental regeneration when catalogues change.
Complexity lands in the boundary between those modes: which routes share a codebase, how auth cookies behave across them, and how caches invalidate when data changes.
Hybrid is powerful when designed deliberately. It is expensive when discovered late because two rendering paths have to be unpicked from one tangled front end.
What happens to a client-rendered app in search today
Crawlers that execute JavaScript can eventually see content, but ranking systems still depend on timely, stable HTML signals. Slow or failed rendering, soft 404 shells, and content that only appears after private API calls all hurt discoverability.
If the product must win organic traffic for public pages, treat client-only rendering as a risk that needs a mitigation plan, not as the default.
When SEO does not matter at all
An internal tool behind a login has no search surface worth optimising. Choosing server-side rendering solely for crawlers is wasted effort.
Spend the budget on authentication, roles, audit trails, query performance and browser support instead.
First contentful paint and time to interactive
Rendering choice is one of the largest levers on both metrics. Static and well-cached server HTML usually win on first paint. Heavy client bundles and sequential API waterfalls usually lose on interactivity even when the design looks simple.
Measure both on staging before you call the architecture finished.
One codebase serving marketing and an authenticated app
Public pages and signed-in workflows pull in opposite directions. Public pages want crawlable HTML and predictable caches. Authenticated screens want session-aware data and role-gated UI.
Decide early whether marketing lives in a separate site, a statically generated section, or a server-rendered layer that shares design tokens with the application shell. Reversing that after launch usually means a second front-end project, not a small refactor.
Why the decision is expensive to reverse
Routing, data fetching, auth cookies, CDN rules and SEO metadata all grow around the first rendering model. Changing from a client-only SPA to server rendering later touches almost every screen and every deploy pipeline.
Lock the strategy in the scope document with the same seriousness as the authentication model.