1-800-481-8638The Commit
Home / JavaScript SEO
JavaScript SEO

Your React site looks perfect. The crawler saw an empty div.

Modern frameworks build pages in the browser. Google can usually run that code, eventually. Many AI crawlers do not run it at all. What they receive is what they judge.

BBB A+ accredited5.0 on Google (60 reviews)Founder-led since 2012
what people see
Get a quote
what the crawler got
<body> <div id="root"></div> <script src="app.js"> </body> 0 words. 0 links. 0 answers.

JavaScript SEO is the practice of making sites built with JavaScript frameworks like React, Next.js, Vue and Angular fully crawlable, renderable and indexable. It usually means server-side rendering or static generation, real anchor links, metadata in the initial HTML, and structured data that does not depend on client-side code.

Here is the uncomfortable part. Google processes JavaScript pages in stages: it crawls, then queues the page for rendering, then indexes what the rendered version contains. Google documents this openly. The rendering step takes resources, and anything that fails in it simply does not exist to the index.

Then there are the AI crawlers. Many of them fetch the raw HTML and move on. If your content only appears after JavaScript runs, those crawlers may see nothing to quote.

Flip between the two views

Same URL. Two very different pages, depending on who is asking.

yourapp.com/pricing

Plans and pricing

Starter, Pro and Enterprise plans. Every plan includes onboarding and support.

Start free trial
<!doctype html>
<html><head><title>App</title></head>
<body>
  <div id="root"></div>
  <script src="/static/js/main.8f3a.js"></script>
</body></html>

No heading. No pricing. No links. Title: "App".

The fixes that matter most

Render on the server

Use server-side rendering or static generation for pages that need to rank. Next.js, Nuxt, Astro and SvelteKit all support it.

Use real links

Navigation must use <a href> elements. Crawlers do not click buttons or fire onClick handlers to discover pages.

Ship metadata in HTML

Title, meta description, canonical and robots tags must be in the initial response, not injected later.

Structured data server-side

JSON-LD rendered in the HTML is read by everyone. JSON-LD injected by client code is read by fewer.

Return real status codes

Single-page apps often return 200 for pages that do not exist. Missing pages should return 404.

Do not block your own code

If robots.txt blocks the JavaScript or API files a page needs, Google cannot render the page correctly.

Test it yourself in two minutes

  1. Open the page in Chrome, right-click and choose View Page Source. That is the raw HTML. If your main content is not in it, non-rendering crawlers will not see it either.
  2. Paste that source into our machine-readability analyzer to score what is there.
  3. Run the URL through Google Search Console's URL Inspection tool and view the rendered HTML Google produced.
  4. Check your robots.txt with our AI crawler checker to confirm nothing important is blocked.

If the raw HTML is empty and the rendered HTML is fine, Google will probably manage. The question is how much of the AI search world you are willing to be invisible to.

How we handle JavaScript sites

We audit rendering first, then choose the least disruptive fix: pre-rendering key routes, moving to hybrid rendering, or rebuilding high-value pages as static HTML. The app keeps working. The pages that need to rank start existing to everyone.

FAQ

Questions, answered straight

Can Google index JavaScript websites?

Yes. Google renders JavaScript using an evergreen version of Chromium, but rendering happens in a separate step and can be delayed or fail. Pages that deliver content in the initial HTML are processed more reliably.

Do AI crawlers run JavaScript?

Many AI crawlers fetch raw HTML and do not execute JavaScript. Content that only appears after client-side rendering may be invisible to them, which is why server-side rendering or static generation matters for AI search.

Is React bad for SEO?

No. React is fine for SEO when pages are server-rendered or statically generated, links are real anchors and metadata ships in the HTML. Client-side-only React apps are what cause problems.

What is the best rendering strategy for SEO?

Static generation for pages that rarely change, server-side rendering for dynamic pages that must rank, and client-side rendering only for app screens behind a login. Most sites should use a hybrid.

How do I check what Google sees?

Use the URL Inspection tool in Google Search Console and view the rendered HTML and screenshot. Compare it with View Page Source in your browser to see what non-rendering crawlers receive.

Bring us the problem. We'll bring the code.

Tell us what's stuck. We'll tell you what it would take to fix it.

☎ Call now