JavaScript SEO: Make Your React or Next.js Site Visible

JavaScript SEO is the work of making sure a search engine sees the same text on your React, Vue or Next.js site that a visitor sees. If a page only assembles itself in the browser, a crawler may receive an empty shell. Your Instagram ads keep working while organic traffic from Google stays flat.

JavaScript SEO in plain terms

Not long ago a server sent a finished page: open the source and all the text was right there. Many sites today, from online shops in Tashkent to clinics and training centres in the regions, work differently. The server sends almost empty HTML plus a bundle of scripts, and the headings, product descriptions and prices appear only once the browser runs them.

A visitor never notices. A crawler does. It has to download the page, run the scripts and only then work out what the page is about. Any hiccup along the way means the index may hold an incomplete version of the page, or nothing at all.

How search engines process JavaScript

Google works in two steps. It fetches the HTML first, then, when resources are available, runs the scripts and looks at the final page. Time can pass between the steps, so a new page or an updated price may reach search later than you would like.

Other readers of your site cope even less well. Yandex can process scripts, but ready-made HTML is more dependable for it. Many AI assistant crawlers, and the services that build link previews in Telegram and other messengers, do not run scripts and read only the raw HTML. If that HTML is empty, your page does not exist for them.

Where framework sites lose traffic

The framework itself is rarely the culprit. The problem is usually how it is set up. These are the typical leaks:

  • Empty HTML with no text until the scripts finish running.
  • Title, description and canonical tags injected late by a script, or identical on every page.
  • Menus and product cards that link through click handlers instead of a normal a tag with an address.
  • Content that loads only after a click, a scroll or a city selection.
  • One script error that breaks the whole page.
  • Sections that switch without changing the URL, so they have no address of their own.

SSR, SSG or CSR: which to choose

Client-side rendering (CSR) builds the page in the browser. That is fine for personal accounts and internal dashboards, but it is the riskiest option for public pages that are supposed to bring in customers from search.

Server-side rendering (SSR) means the server assembles the page and hands the crawler finished HTML with text, links and meta tags. It suits catalogues, product pages and anything whose data changes often.

Static generation (SSG) prepares pages in advance, when the site is built. It is fast and dependable for services, articles and company pages that rarely change. Next.js and other modern frameworks support both modes, and you can mix them: catalogue on SSR, blog on SSG, account area and cart with Click or Payme checkout on CSR.

How to check your site yourself

A first diagnosis needs no specialist, only a browser and access to Search Console:

  • View the page source and look for the main heading and a paragraph of body text. If they are missing, a crawler that skips scripts will not see them either.
  • Run the URL Inspection tool in Search Console and compare the rendered version with what a visitor sees.
  • Turn JavaScript off in your browser and click through the menu: do the sections open through ordinary links?
  • Send the link to yourself in Telegram and see whether the title and preview image appear.
  • Confirm that every page has its own address, its own title and its own description.

What to ask your developer for

Describe the outcome rather than the technology: public pages deliver the main text, links and meta tags in the source HTML; navigation uses ordinary links; every page has its own URL; important content is not hidden behind a user action. Your developer can then pick SSR or SSG to fit your framework.

If the site already runs on client-side rendering, you do not have to rewrite everything. Teams usually start with the pages that bring enquiries and orders, such as services, categories, product pages and articles, and leave the account area and checkout alone.

Where to start

Pick a handful of key pages and run them through the checks above. That quickly shows whether you have a problem. If you want help with SEO optimisation in Uzbekistan, the markdev team can trace the technical causes and work with your developers to choose a rendering approach that fits the job. Send us a description of your site and goals, and we will talk through where to begin.

FAQ

Can Google read JavaScript at all?

Yes. It fetches the HTML, runs the scripts and sees the final page. But this happens with a delay, and a script error can hide content. For important pages, serving ready-made HTML is the safer choice.

Do I have to rebuild my site on Next.js?

Not necessarily. First check what a crawler actually sees. Often it is enough to move the public pages to server rendering or static generation and leave the rest as it is.

Why is my link preview empty in Telegram?

Preview services read the raw HTML and usually do not run scripts. If the title and image are set only in the browser, the preview comes out blank. Serve the meta tags from the server.

Does every product need its own URL?

Yes. Without its own address a page gives search engines nothing to index and customers nothing to share. Each category and product should open on its own link.

Let’s look at your task for free

Leave your contact — in a 15-minute call we’ll show where leads get lost and what to fix first.