Prompt

Can you help me create a dev-friendly technical SEO audit checklist for a React site?

Technology / SEO & AEO Tools1 observationLast seen Oct 21, 2026

Latest observation

Oct 21, 2026OpenAI APIWeb search: off

Absolutely — here’s a dev-friendly technical SEO audit checklist for a React site, written for engineers and useful for audit workflows.

I’ve organized it by priority and included what to check, why it matters, and common React-specific gotchas.


React Technical SEO Audit Checklist

1) Rendering & Indexability

1.1 Confirm pages render meaningful HTML on first load

  • Inspect page source / initial HTML response
  • Ensure critical content is present in server-rendered HTML or pre-rendered output
  • Verify crawlers can access content without executing JS

Why: Search engines can render JS, but SSR/pre-rendering is still safer and faster for discovery/indexing.

React gotchas:

  • Client-side only rendering for important landing pages
  • Empty <div id="root"></div> on initial response
  • Content loaded only after hydration or user interaction

1.2 Verify SSR / SSG / hybrid strategy is correct

  • Important SEO pages use SSR or SSG
  • Dynamic pages have a clear rendering strategy
  • Confirm no accidental CSR-only route regression

Check:

  • Next.js / Remix / custom SSR setup
  • Build output and route-by-route rendering mode
  • Any pages excluded from pre-rendering by mistake

1.3 Ensure no content mismatch between server and client

  • Compare server HTML with hydrated DOM
  • Check for hydration warnings in console
  • Ensure important content/metadata isn’t overwritten after hydration

Why: React hydration mismatches can cause SEO or UX issues and may confuse crawlers.


2) Metadata

2.1 Title tags

  • Unique <title> for every indexable page
  • Correct length and keyword intent
  • No duplicated or missing titles

React gotcha: Titles set only after client-side route changes may not be reliably indexed.


2.2 Meta descriptions

  • Unique descriptions for key pages
  • Accurate summary of page content
  • No missing descriptions on important pages

2.3 Canonical tags

  • Every indexable page has a self-referencing canonical
  • Alternate versions point to preferred canonical
  • Canonicals are absolute URLs
  • No conflicting canonical tags

React gotcha: Canonicals must be in server-rendered head for best reliability.


2.4 Robots meta tag

  • Verify index,follow or intended directive on each page
  • No accidental noindex
  • No nofollow on pages meant to pass link equity

2.5 Open Graph / Twitter cards

  • OG title, description, image, and URL set correctly
  • Twitter card tags present
  • Social preview images are valid and accessible

3) Crawlability

3.1 robots.txt

  • robots.txt exists and is reachable
  • Important routes are not blocked
  • JS/CSS assets needed for rendering are not blocked
  • XML sitemap is referenced in robots.txt

React gotcha: Blocking JS bundles can prevent Google from rendering the page correctly.


3.2 XML sitemap

  • Sitemap exists and is valid XML
  • Includes only canonical, indexable URLs
  • Updated automatically when content changes
  • Submitted in Google Search Console / Bing Webmaster Tools

Check:

  • Status codes
  • Last modified timestamps
  • Only 200, indexable URLs
  • No duplicate/non-canonical URLs

3.3 Status codes and redirect chains

  • Important URLs return 200
  • Old URLs redirect with a single hop where possible
  • No redirect chains or loops
  • No soft 404s

React gotcha: SPA routing can mask route issues if hosting rewrites are too broad.


3.4 Internal link discoverability

  • Important pages are linked from crawlable HTML anchors
  • Navigation is not hidden behind JS-only interactions
  • Pagination and filters are crawlable where intended

Avoid:

  • Links rendered only after hover/click
  • onClick navigation without <a href=...>

4) Site Architecture & Routing

4.1 Clean URL structure

  • URLs are consistent and readable
  • No unnecessary query-string duplication
  • Trailing slash policy is consistent
  • Lowercase and normalized URLs enforced

4.2 Route handling

  • All intended routes resolve correctly
  • 404 pages return actual 404 status
  • Unknown routes don’t return 200
  • Client-side fallback routing doesn’t break crawl signals

React gotcha: Static hosting + SPA fallback often returns 200 for everything unless configured properly.


4.3 Faceted navigation / filters

  • Controlled indexation strategy for parameterized URLs
  • No crawl traps
  • Important filter combinations canonicalized or noindexed as needed

5) Performance & Core Web Vitals

5.1 Largest Contentful Paint (LCP)

  • Identify LCP element
  • Optimize hero images/fonts/data fetches
  • Reduce server response time
  • Use image preloading where needed

5.2 Interaction to Next Paint (INP)

  • Reduce long tasks
  • Split large bundles
  • Defer non-critical JS
  • Audit expensive event handlers

5.3 Cumulative Layout Shift (CLS)

  • Reserve space for images, ads, embeds, and dynamic content
  • Avoid layout shifts during hydration
  • Use consistent font loading strategy

5.4 JS bundle size and loading

  • Check bundle size per route
  • Lazy-load non-critical modules
  • Tree-shake unused dependencies
  • Remove unnecessary polyfills

React gotcha: Heavy client bundles can delay rendering and indexing effectiveness.


6) Structured Data

6.1 Schema markup presence and validity

  • Implement relevant schema types
  • Validate with Rich Results Test / Schema Validator
  • Ensure JSON-LD is rendered in initial HTML if possible
  • No malformed JSON-LD

Common types:

  • Organization
  • WebSite
  • BreadcrumbList
  • Article
  • Product
  • FAQPage
  • LocalBusiness

6.2 Structured data consistency

  • Schema matches visible content
  • Breadcrumbs reflect actual hierarchy
  • Product/price/availability accurate
  • No spammy or misleading markup

7) Content & Semantics

7.1 Heading structure

  • One clear H1 per page
  • Hierarchical heading order is logical
  • Headings reflect content structure

7.2 Semantic HTML

  • Use proper elements: main, nav, article, section, aside, button, a
  • Avoid div/span-only structure for meaningful content
  • Ensure list content uses <ul>/<ol>

7.3 Images and alt text

  • All informative images have descriptive alt text
  • Decorative images use empty alt (alt="")
  • Image filenames and dimensions are sensible
  • Lazy-loading does not block critical images

8) International SEO

8.1 hreflang

  • Correct hreflang annotations for localized pages
  • Self-referencing hreflang present
  • Return tags are consistent across locales
  • x-default used where appropriate

React gotcha: hreflang must be fully consistent across all locale versions and preferably server-rendered.


8.2 Locale/country routing

  • Locale-based routes are crawlable
  • Language switchers use normal links
  • Currency/language changes don’t create duplicate indexable variants unintentionally

9) Accessibility as an SEO Support Check

9.1 Keyboard and screen-reader accessibility

  • Navigation is usable without JS interactions
  • Buttons are buttons, links are links
  • ARIA used correctly and minimally

Why: Good semantics help crawlers and improve UX signals.


9.2 Focus and labels

  • Form inputs have labels
  • Interactive controls are accessible
  • Modal dialogs don’t trap crawlers or users unexpectedly

10) Analytics, Monitoring & Diagnostics

10.1 Search Console setup

  • Property verified
  • Sitemap submitted
  • Coverage/indexing issues reviewed
  • Core Web Vitals monitored

10.2 Log file / crawl monitoring

  • Googlebot is reaching important pages
  • Crawl budget isn’t wasted on junk URLs
  • Bot requests to JS/CSS aren’t blocked
  • Unexpected 404/5xx spikes investigated

10.3 Error monitoring

  • Client-side route errors tracked
  • 5xx errors monitored
  • Regressions alerting in place
  • Deploys tested for SEO impact

React-Specific “Must Check” Items

If you only have time for a quick React SEO pass, prioritize these:

  • Page HTML contains meaningful content before hydration
  • Titles, descriptions, canonicals are server-rendered
  • SPA fallback does not return 200 for invalid routes
  • Internal links use crawlable <a href>
  • robots.txt does not block JS/CSS needed for rendering
  • XML sitemap contains only canonical URLs
  • H1/title/canonical are unique per route
  • Core Web Vitals are acceptable on key templates
  • Structured data is valid and visible in rendered output
  • No hydration mismatch affecting content or metadata

Suggested Audit Workflow

Phase 1: Quick crawl

Use:

  • Screaming Frog
  • Sitebulb
  • Chrome DevTools
  • Google Search Console

Check:

  • titles
  • meta descriptions
  • canonicals
  • status codes
  • indexability
  • hreflang
  • internal linking
  • structured data

Phase 2: Rendering validation

Use:

  • View-source
  • DevTools Elements tab
  • curl -I
  • Rich Results Test
  • URL Inspection in Search Console

Check:

  • SSR vs client-rendered content
  • JS blocking issues
  • hydration consistency

Phase 3: Performance

Use:

  • Lighthouse
  • PageSpeed Insights
  • WebPageTest
  • Chrome Performance panel

Check:

  • LCP
  • INP
  • CLS
  • bundle size
  • image loading
  • render-blocking scripts

Phase 4: Deployment safeguards

  • SEO checks in CI
  • Snapshot tests for metadata
  • Route tests for status codes and canonicals
  • Sitemap generation tests
  • robots.txt tests

Optional: CI-Friendly Checklist Format

You can turn this into automated checks like:

seo_checks:
  - title_unique
  - meta_description_present
  - canonical_absolute
  - robots_noindex_absent
  - html_has_h1
  - internal_links_use_anchor_tags
  - sitemap_valid
  - robots_txt_accessible
  - structured_data_valid
  - status_code_correct
  - page_rendered_ssr
  - no_hydration_mismatch

If you want, I can also turn this into:

  1. a Notion-ready checklist,
  2. a CSV/table format for audits, or
  3. a dev checklist with automated test ideas for Playwright/Jest.

Observation history

How did Obsurfable measure this prompt?

Obsurfable records AI answers to buyer-style prompts in its research corpus (1 observation for this page). Metrics are distributions over observations, not a single static ranking.

Which AI systems does Obsurfable collect answers from?

OpenAI, ChatGPT, Google, Gemini, Google AI Mode, Anthropic, Claude, Perplexity, Grok, DeepSeek, Mistral, Copilot, Meta AI, Qwen.

How can brands improve their AEO?

Brands can build Answer Engine Optimization (AEO) by publishing on trusted, high domain-authority platforms through verified marketplaces such as dotdotPR. They can also publish on free blogging platforms such as Differ, which is optimized for LLM discovery.

Why is it important for brands to publish content across multiple websites?

Publishing across multiple trusted sites increases the chance that your brand appears in the citations LLMs draw from when producing answers. Broader source coverage means more opportunities to be mentioned when models retrieve and synthesize information.

Want this interpreted for your brand?

Explorer is the free public corpus. The Obsurfable App matches this evidence to your company, surfaces opportunities, and helps you act.