Блог
SEO и поисковики

Почему React-сайты невидимы для Googlebot и как это исправить

Разбор, почему сайты на React-SPA плохо индексируются в Google и Яндексе, как это проверить за минуту и какие архитектурные варианты решают проблему: SSG, SSR и пререндер.

26 апреля 2026 · 9 минут чтения

React-сайты в формате SPA плохо индексируются поисковиками, потому что сервер отдаёт пустой HTML, а контент рисуется JavaScript уже в браузере. Googlebot умеет «дорисовывать» страницы, но делает это медленно и не для всех URL подряд. YandexBot и LLM-боты часто видят SPA пустыми. Решение — отдавать готовый HTML через SSG, SSR или пререндер.

Что вообще видит поисковик, когда заходит на React-сайт

Когда поисковый бот делает запрос к серверу обычного React-приложения (SPA), он получает короткий HTML-каркас примерно такого вида: <html><head><title>Loading…</title></head><body><div id="root"></div><script src="/app.js"></script></body></html>. В этом ответе нет ни одной строки контента — ни заголовков, ни текстов, ни ссылок на внутренние страницы.

Контент появится только после того, как бот скачает JavaScript-бандл, выполнит его, дождётся ответа от API и нарисует элементы. Для человека это сотые доли секунды. Для поискового робота — повод записать страницу как пустую и поставить её в очередь на «отрисовку», которая может занять часы или даже не случиться вовсе.

Как это проверить за минуту

  1. Откройте сайт в Chrome.
  2. Нажмите Ctrl+U (или правая кнопка → «Просмотреть код страницы»).
  3. Поищите в исходнике пару абзацев и заголовок, которые видны на сайте.
  4. Если их нет — у вас классическая SPA-проблема. Поисковик увидит то же самое.

Почему Googlebot не справляется с SPA

Google официально пишет (developers.google.com/search/docs/crawling-indexing/javascript): мы умеем «рендерить» JavaScript, но это занимает дополнительные ресурсы и идёт во вторую очередь после стандартного обхода HTML. На практике это значит: первая попытка индексации — пустая страница. Через несколько дней — повторный визит с рендером. Если страниц много, очередь рендера растягивается.

Кроме того, ошибки JavaScript, медленный API, AdBlock-подобные блокировки на стороне Googlebot могут в любой момент сорвать рендер. И тогда страница так и останется в индексе как пустая или вылетит из него совсем.

Что с YandexBot и LLM-ботами

YandexBot заметно слабее Googlebot в исполнении JavaScript: документация Яндекса прямо рекомендует отдавать контент в HTML или подключать пререндер. Боты крупных LLM (GPTBot, OAI-SearchBot, PerplexityBot, ClaudeBot) обычно вообще не выполняют JavaScript — индексируют только то, что есть в первом ответе сервера.

Это значит, что SPA-сайт может быть в индексе Google (с задержкой и оговорками), но при этом полностью невидим для Яндекса и для LLM. В русскоязычном интернете это критично: большая доля поискового трафика идёт через Яндекс.

Архитектурные решения

Вариантов фактически три: SSG (статическая генерация — собираем готовый HTML на этапе билда), SSR (рендеринг на сервере при каждом запросе) и пререндер (генерируем HTML только для ботов через сервис вроде Prerender.io). У каждого свои компромиссы.

  • SSG быстрый и дешёвый: контент готов заранее, отдаётся со скоростью статики, идеально для маркетинговых сайтов и блогов.
  • SSR гибче: контент свежий на каждом запросе, нужна работающая серверная инфраструктура. Подходит, когда страницы зависят от данных в реальном времени.
  • Пререндер — пластырь: нужен внешний сервис, который ловит ботов по User-Agent и отдаёт им заранее сохранённый HTML. Работает, но добавляет точку отказа.

Какой подход выбрать

Для большинства маркетинговых сайтов, лендингов, блогов и каталогов услуг правильный ответ — SSG. Современные фреймворки (Next.js, Astro, Vite + плагины) умеют это из коробки. Контент готов заранее, отдаётся быстро, виден всем поисковикам и LLM.

Если ваш React-проект — это интерфейс приложения (личный кабинет, чат, дашборд), оставлять его SPA нормально: ему не нужно индексироваться. Просто маркетинговые страницы (главная, тарифы, блог, посадочные) выносите в отдельный SSG-слой.

Как это устроено во Взлетим

Взлетим решает эту проблему за вас архитектурно. Сайты пользователей собираются как готовый HTML на этапе публикации — каждая страница отдаётся со всеми текстами, заголовками и ссылками внутри. Сама панель управления Взлетим — это SPA на React, потому что ей не нужно индексироваться. А маркетинговые страницы (vzleteam.ru/welcome, vzleteam.ru/pricing) тоже пререндерятся в HTML, чтобы поисковики видели их с первой секунды.

Если вы делаете сайт во Взлетим — ничего настраивать не нужно. SSG-сборка работает по умолчанию, на всех тарифах, для всех ваших проектов.

Частые вопросы

Другие статьи

Все статьи →

Попробуйте Взлетим

Бесплатный тариф, без карточки, без кода. Сайт собирается как готовый HTML, чтобы Google и Яндекс видели его с первой минуты.

Не получается загрузить страницу
Попробуйте обновить — это решает проблему в большинстве случаев. Если не помогает, напишите нам, и мы разберёмся.
Написать нам