A page can look correct in Chrome while the initial HTML is empty, the canonical is wrong, or a missing URL returns 200. Check the response as well as the finished screen.
Google can render JavaScript. Its JavaScript SEO guidance still recommends server-side rendering or pre-rendering because it helps users and crawlers, including crawlers that do not execute JavaScript.
Compare the right outputs
| Check | What to inspect |
|---|---|
| Normal page request | Status, content type, raw HTML, canonical, robots directives, and primary content |
| Rendered browser page | Content and links after JavaScript, plus console errors and failed requests |
| RSC or another framework payload | Navigation data and cache behavior, separately from the HTML document |
| Missing or error route | Status and page content for an absent, unpublished, or failed request |
| Preview and production | Public hostname, data source, output, cache settings, and indexing directives |
Keep the URL and request conditions beside each result. A successful preview does not establish what production serves.
Don’t mistake RSC data for HTML
React Server Component data supports rendering and navigation, but finding a product name in that payload does not prove the normal document contains it.
This is an incomplete check:
curl -H 'RSC: 1' /product/example
→ payload contains product name
→ therefore HTML is fine
Compare each response separately:
normal document → 200 text/html → primary product content present
rendered DOM → same product identity and canonical
explicit RSC → 200 framework payload → recorded separately
missing route → 404 with no indexable product shell
On a cached Next.js deployment, also confirm that framework requests cannot cause later page requests to receive the wrong response type.
Test missing pages and failed data requests
Include a valid page and the following cases from each major template:
- a slug that does not exist;
- an unpublished CMS item;
- a malformed identifier;
- an old URL that should redirect;
- an unavailable locale or market;
- a backend timeout or failed API request.
Decide the expected result for each. A deleted page and a temporary backend failure are different situations. A client-rendered “not found” message inside a 200 response can become a soft 404.
Recheck production after deployment
Use the same URL sample in preview and production:
| Item | Preview result | Production result |
|---|---|---|
| Final URL, status, and content type | ||
| Primary content in initial HTML | ||
| Rendered heading, content, and links | ||
| Canonical and robots directives | ||
| Framework response and cache variation | ||
| Missing-page and error behavior |
Check sitemap URLs and navigation against the final public routes. When available, compare Search Console's rendered HTML and screenshot with your browser result. The live inspection test shows what Google can fetch now; Google's indexed version may reflect an earlier crawl.
Fix the specific mismatch you find, then repeat the same requests. Rebuilding the frontend is not justified by an indexing label alone.
