Почему поисковик может не видеть контент, который создаёт JavaScript, чем опасен рендеринг на клиенте и как проверить, что важное есть в исходном HTML. Чек-лист.
База знаний · Технический SEO

JavaScript и SEO: почему поисковик не видит часть сайта и как это исправить

Если аудит отметил «контент появляется только после JavaScript», «H1 создаётся JS» или «ошибки JavaScript» — часть сайта может быть невидима для поиска. Робот сначала читает статический HTML, а выполнение скриптов откладывает на потом — если вообще доходит. Всё, что рисует JS в браузере, он может не увидеть.

HTMLробот читает его в первую очередь
JS — потомрендеринг не гарантирован
SPA-рискReact/Vue без SSR = пустота
Кратко — что важно понять
  • Поисковик в первую очередь читает статический HTML, а JS выполняет позже и не всегда
  • Контент, который появляется только после JavaScript, индексируется хуже или не индексируется
  • Особенно критично, если через JS создаётся H1, основной текст или ссылки
  • Ошибки JavaScript могут ломать контент, формы и разметку
  • Проверка простая: сравните исходный код (Ctrl+U) с тем, что видно на странице

Как поисковик на самом деле видит страницу

Когда робот заходит на страницу, он получает от сервера исходный HTML — то, что приходит до выполнения скриптов. Это первое и главное, что он читает. Затем, если у поисковика есть ресурсы, он ставит страницу в очередь на рендеринг — выполняет JavaScript, как браузер, и дополняет картину. Но этот второй этап не гарантирован и происходит с задержкой: Google умеет рендерить JS, но делает это не для всех страниц и не сразу; Яндекс и парсеры ИИ-поисковиков полагаются на JS ещё слабее.

🤖 Что видит робот (исходный HTML)
<body>
  <div id="root"><!-- пусто --></div>
  <script src="app.js">
</body>

✕ ни H1, ни текста, ни ссылок
👤 Что видит человек (после JS)
Ремонт стиральных машин
Выезд в день заявки, гарантия 12 месяцев, оплата после ремонта. Работаем ежедневно…

Одна страница SPA: слева — пустой каркас, который получает робот; справа — то, что дорисовал JavaScript для человека.

Вывод простой: что есть в исходном HTML — робот видит наверняка; что появляется только после JS — под вопросом. Именно поэтому наш аудит сравнивает страницу «до» и «после» выполнения JavaScript и подсвечивает, что из важного существует только во второй версии.

Главная опасность: контент только после JS

Проблема острее всего на сайтах, собранных как SPA (single-page application) — на React, Vue, Angular без серверного рендеринга. Сервер отдаёт почти пустой HTML (условный <div id="root"></div>), а весь контент дорисовывает JavaScript уже в браузере. Человек видит нормальную страницу, а робот при первом заходе — пустоту.

Наш аудит выделяет несколько конкретных симптомов:

  • H1 создаётся JavaScript'ом — в исходном HTML заголовка нет, он появляется после рендеринга. Краулер без выполнения JS не видит ключевой заголовок. Подробно про роль этого тега — в гайде про H1 и иерархию заголовков;
  • Значимая часть текста появляется только после JS — в исходном HTML контента мало, основная масса подгружается скриптом. Такой текст индексируется хуже и медленнее;
  • Внутренние ссылки создаются JavaScript'ом — если навигация и ссылки отрисовываются скриптом, робот хуже обходит сайт и слабее передаёт вес по таким ссылкам;
  • Ошибки JavaScript в консоли — упавший скрипт может не дорисовать контент, сломать форму заявки или разметку, а заодно испортить поведенческие сигналы;
  • Страница или её ресурсы не загружаются — если при живой загрузке отдаётся ошибка или критический скрипт не подгрузился, и пользователь, и робот остаются без контента.

Что с этим делать

Задача — сделать так, чтобы важный контент был в HTML до выполнения скриптов. Основные подходы:

  • Серверный рендеринг (SSR) или пререндеринг. Фреймворки вроде Next.js (React) или Nuxt (Vue) отдают готовый HTML с контентом, а JS потом «оживляет» страницу. Это главный способ подружить SPA с SEO;
  • Статическая генерация (SSG). Для контента, который меняется редко (статьи, услуги), страницы можно собрать в готовый HTML заранее;
  • Прогрессивное улучшение. Базовый контент — текст, заголовки, ссылки — присутствует в HTML сразу, а JavaScript лишь добавляет интерактивность;
  • Чинить ошибки JavaScript. Ошибки в консоли — не косметика: они могут обрывать отрисовку. Их нужно находить и устранять;
  • Не прятать текст за ленивую загрузку. Ленивая подгрузка картинок — хорошо; но основной текст и ссылки не должны появляться только по скроллу или клику.

Если переделка архитектуры не по силам прямо сейчас — начните с минимума: вынесите в серверный HTML хотя бы title, H1, основной текст и ключевые ссылки. Остальное JS может дополнять.

Как проверить свой сайт

  1. Исходный код vs страница — Ctrl+U (это видит робот до JS) и сравните с тем, что показано. Нет в коде текста, H1 или ссылок — их создаёт скрипт
  2. Отключите JavaScript — DevTools (F12 → «Disable JavaScript») и перезагрузите: останется ли контент? Так вы увидите сайт глазами робота
  3. Проверка URL в Search Console — показывает, каким Google видит отрендеренный HTML, и что не подгрузилось
  4. Консоль браузера — F12 → Console: нет ли красных ошибок JavaScript
  5. SEO-аудит — открывает страницу в реальном браузере, сравнивает HTML до и после JS, находит контент и ссылки, которые есть только после скриптов

Частые ошибки из наших аудитов

  • Весь сайт — SPA без SSR — сервер отдаёт пустой каркас, контент рисует JS; для поиска страница почти пустая;
  • H1 и текст «прилетают» скриптом — робот при первом заходе видит заглушку или пустоту;
  • Меню и ссылки на JavaScript — навигация есть для человека, но робот по ней плохо обходит сайт;
  • Незамеченные ошибки JS — скрипт падает на части устройств, и там контент не отрисовывается;
  • Тяжёлый JS блокирует загрузку — критический скрипт грузится долго или с ошибкой, и страница остаётся без контента.

Что дальше

Проверьте ключевые страницы: откройте исходный код и убедитесь, что title, H1, основной текст и важные ссылки присутствуют в нём, а не появляются только после JS. Отключите JavaScript в браузере и посмотрите, что останется. Если контент исчезает — планируйте серверный рендеринг или пререндеринг хотя бы для главных страниц. Это фундаментальная вещь: без неё остальная SEO-работа может не сработать.

Хотите точно знать, какой контент, заголовки и ссылки вашего сайта существуют только после JavaScript? Закажите комплексный SEO-аудит: откроем сайт в реальном браузере, сравним HTML до и после JS, найдём ошибки скриптов — а заодно проверим метатеги, скорость и видимость в ИИ-поиске.

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

Коротко о JavaScript и SEO

Google же умеет выполнять JavaScript — в чём проблема? +
Умеет, но не всегда и не сразу: рендеринг идёт отдельной очередью, на него нужны ресурсы, и он может откладываться или пропускаться. Плюс Яндекс и ИИ-поисковики работают с JS куда хуже. Поэтому полагаться на то, что «поисковик всё отрендерит», рискованно — надёжнее отдавать контент в HTML сразу.
Нужно ли вообще отказываться от JavaScript? +
Нет. JavaScript — это нормально и нужно для интерактивности. Вопрос не в том, использовать его или нет, а в том, чтобы ключевой контент (текст, заголовки, ссылки) существовал в HTML до выполнения скриптов, а JS его дополнял, а не подменял.
Мой сайт на WordPress/конструкторе — это меня касается? +
Обычно в меньшей степени: классический WordPress и большинство конструкторов отдают готовый HTML с сервера. Проблема характерна для SPA и сайтов с тяжёлыми JS-компонентами. Но отдельные блоки (отзывы, каталог, подгружаемые списки) и на таких сайтах бывают только на JS — это стоит проверить.
Как быстро понять, есть ли проблема? +
Откройте Ctrl+U и поиском проверьте, есть ли в исходном коде ваш основной текст и H1. Если их там нет, а на странице они видны — контент создаётся JavaScript, и это повод разобраться глубже.
Проверим ваш сайт

Видит ли поисковик весь ваш контент?

Закажите SEO-аудит — откроем сайт в реальном браузере, сравним HTML до и после JavaScript и покажем, какой контент, заголовки и ссылки существуют только после скриптов. А заодно проверим метатеги, скорость и видимость в ИИ-ответах.

SEO Академия