Индексация JavaScript-сайтов: проблемы CSR, SSR и SSG с точки зрения SEO
Сайт работает в браузере, но часть страниц не индексируется. Разбираем, почему дело не в JavaScript, а в рендеринге — CSR, SSR, SSG и ISR — и как выбрать архитектуру под SEO.

Содержание[+]
- 01Почему JavaScript может создавать проблемы с индексацией
- 02Что именно поисковик должен получить от JavaScript-сайта
- 03CSR, SSR и SSG: в чём разница для SEO
- 04Какие ошибки чаще всего мешают индексации
- 05Какой рендеринг выбрать для разных типов страниц
- 06Что такое ISR и зачем нужен гибридный подход
- 07Как проверить JavaScript-сайт перед SEO-продвижением
- 08JavaScript, скорость сайта и Core Web Vitals
- 09Нужно ли переводить весь сайт на SSR
- 10Нужно ли отказываться от JavaScript ради SEO
- 11Часто задаваемые вопросы
- 12Вывод
JavaScript давно перестал быть технологией только для анимаций, форм и отдельных интерактивных элементов. На нём строят интерфейсы интернет-магазинов, сервисов, корпоративных сайтов, личных кабинетов, каталогов и крупных веб-приложений. React, Vue, Angular, Svelte и другие решения позволяют загружать данные без перезагрузки страницы, мгновенно менять содержимое и создавать интерфейсы, которые по поведению ближе к приложениям, чем к классическим сайтам. Для пользователя это удобно, однако у поисковых систем возникает дополнительная задача: им нужно не просто получить страницу по URL, но и понять, в какой момент появляется её основное содержимое.
Именно здесь чаще всего возникают вопросы с SEO. Сайт нормально работает в браузере, пользователь видит текст, товары, ссылки и заголовки, но часть страниц долго не появляется в Яндексе или Google, новые URL индексируются нестабильно, а поисковый робот получает не тот контент, который доступен обычному посетителю. Причина не обязательно заключается в JavaScript как таковом. Гораздо важнее способ формирования страницы: приходит ли основной HTML сразу с сервера либо браузер должен сначала загрузить скрипты, выполнить их, обратиться к API и только после этого построить содержимое.
При технической оптимизации правильнее говорить не о том, «любит ли поисковик JavaScript», а о рендеринге. Один сайт на JavaScript может отдавать поисковому роботу практически пустую оболочку, второй — полностью сформированный HTML, а третий — заранее подготовленный статический документ.
Почему JavaScript может создавать проблемы с индексацией
У классической HTML-страницы цепочка довольно короткая. Робот запрашивает URL, сервер возвращает документ, а внутри уже находятся заголовок H1, основной текст, ссылки, изображения, метатеги и другие элементы. Поисковая система может сразу анализировать полученный ответ, находить новые URL во внутренней перелинковке и решать, стоит ли добавлять страницу в индекс.
На JavaScript-сайте процесс может быть устроен иначе. Сервер возвращает базовый HTML-каркас, подключает один или несколько JS-файлов, после чего уже браузер запускает приложение. Оно обращается к API, получает данные, создаёт DOM-элементы и выводит пользователю итоговое содержимое. Если открыть такой сайт обычным способом, разница практически незаметна: современный браузер выполняет эти действия достаточно быстро. С точки зрения поискового робота путь оказывается длиннее, поскольку первоначальный ответ сервера и фактическое содержимое страницы могут сильно различаться.
Например, пользователь открывает категорию интернет-магазина и видит название раздела, несколько абзацев текста, карточки товаров и ссылки на подкатегории. При этом исходный HTML может содержать только условный <div id="app"></div>, а все остальные элементы создаются после запуска JavaScript. Получается, что поисковой системе недостаточно скачать документ: ей необходимо выполнить клиентский код, дождаться ответа сервисов и сформировать страницу почти так же, как это делает браузер пользователя.
Само по себе это не означает, что сайт обязательно выпадет из поиска. Современные поисковые системы умеют работать с JavaScript. Проблема в другом: появляется дополнительная зависимость. Если скрипт завершится с ошибкой, API ответит слишком медленно, важный ресурс окажется недоступен либо робот не дождётся выполнения части логики, итоговый документ может оказаться неполным. Именно поэтому для SEO особенно важно, чтобы критичное содержимое публичных страниц не зависело без необходимости от длинной цепочки клиентских операций.
Что именно поисковик должен получить от JavaScript-сайта
При анализе проекта полезно на время забыть о названии фреймворка и посмотреть на страницу глазами поискового робота. Для SEO не принципиально, построен сайт на React, Vue, Angular или собственном JavaScript. Намного важнее, существует ли содержимое по конкретному URL независимо от действий пользователя и насколько быстро поисковая система может до него добраться.
Если открыть исходный HTML и обнаружить там название товара, описание, H1, внутренние ссылки, canonical и основные метаданные, использование JavaScript для фильтров, корзины, калькуляторов или других интерактивных функций обычно не создаёт принципиальной проблемы. Робот уже получил смысловую основу страницы, а клиентский код лишь дополняет интерфейс. Совсем другая ситуация возникает, когда HTML представляет собой оболочку, а название страницы, текст, навигация и даже метатеги формируются только после загрузки приложения.
Особенно важно проверить не только визуальный контент. Поисковику необходимо корректно получать URL внутренних страниц, HTTP-коды, директивы индексирования, canonical и другие технические сигналы. Пользователь может перейти в раздел после клика по красивой карточке, но если технически переход существует только внутри обработчика JavaScript и в документе нет обычной ссылки с адресом, обнаружение страницы становится менее надёжным. То же касается ситуации, когда посетителю выводится «товар не найден», а сервер по этому адресу продолжает отвечать кодом 200 OK: визуально всё выглядит правильно, однако поисковая система получает противоречивый сигнал.

CSR, SSR и SSG: в чём разница для SEO
Главное различие JavaScript-сайтов связано с тем, где происходит рендеринг. На практике чаще всего рассматривают три модели: клиентский рендеринг CSR, серверный SSR и статическую генерацию SSG. Они решают одну задачу — формируют страницу, — но делают это в разные моменты, поэтому поисковый робот получает принципиально разный первоначальный ответ.
CSR (Client-Side Rendering) переносит большую часть работы в браузер. Сервер отправляет основу приложения и JavaScript, после чего содержимое собирается на стороне пользователя. Такой вариант удобен для сложных интерфейсов и систем, где данные постоянно меняются. Для личного кабинета, CRM или панели управления это естественная архитектура, поскольку поисковая индексация внутренних экранов обычно вообще не нужна.
SSR (Server-Side Rendering) формирует HTML на сервере непосредственно при запросе страницы, поэтому поисковый робот сразу получает документ с основным содержимым. JavaScript после этого может делать интерфейс интерактивным, но текст, ссылки и другие ключевые элементы уже существуют. Способ хорошо подходит для категорий, товаров, динамических каталогов и посадочных страниц с изменяемыми данными.
SSG (Static Site Generation) переносит создание HTML ещё на более ранний этап: страницы генерируются заранее во время сборки и хранятся как готовые документы. При обращении пользователя или робота серверу практически ничего не нужно рассчитывать заново. Модель удобна для статей, страниц услуг, документации и справочных разделов, которые меняются относительно редко.

| Критерий | CSR | SSR | SSG |
|---|---|---|---|
| Где формируется содержимое | В браузере | На сервере | Заранее при сборке |
| Что получает робот при первом запросе | Может получить только каркас | Готовый HTML | Готовый HTML |
| Зависимость SEO от выполнения JavaScript | Высокая | Низкая | Низкая |
| Постоянно меняющиеся данные | Удобно | Удобно | Требует обновления |
| Нагрузка на сервер | Обычно небольшая | Выше | Минимальная |
| Типичные задачи | Кабинеты, приложения | Каталоги, товары, динамика | Блог, услуги, документация |
| Предсказуемость индексации | Ниже | Высокая | Высокая |
Из таблицы не стоит делать вывод, что CSR — «плохая» технология, а SSR и SSG — «хорошие». У каждого подхода своя область применения. Проблема начинается тогда, когда архитектуру выбирают без учёта назначения страницы. Закрытому кабинету не нужна статическая генерация ради роботов, а важной SEO-странице интернет-магазина необязательно полностью зависеть от клиентского рендеринга.
Какие ошибки чаще всего мешают индексации
Проблемы с индексацией редко возникают только из-за самого JavaScript или выбранного фреймворка. Обычно причина в сочетании нескольких технических решений: часть контента загружается через API, метаданные появляются только после запуска приложения, навигация зависит от клиентской логики, а сервер неправильно обрабатывает отдельные URL. Для пользователя сайт при этом может выглядеть исправным, поэтому такие ошибки часто обнаруживаются только во время технического SEO-аудита.
- 1Основной контент отсутствует в исходном HTML. H1, описание, характеристики товара и ссылки появляются только после выполнения JavaScript. Если рендеринг завершится с ошибкой, страница останется без значимой части содержимого.
- 2Данные полностью зависят от API. Сначала загружается приложение, затем выполняется JavaScript, отправляется запрос к API и только после ответа формируется страница. Чем длиннее цепочка, тем больше точек отказа.
- 3Внутренние переходы реализованы без обычных ссылок. Пользователь нажимает на элемент и переходит в другой раздел, но в HTML нет ссылки вида
<a href="...">. Для робота такие страницы менее доступны при обходе. - 4Метатеги создаются только на стороне клиента. Title, description, canonical или robots меняются после запуска JavaScript. В браузере они правильные, но исходный ответ сервера может содержать другие значения или не содержать их вовсе.
- 5Внутренние URL неправильно обрабатываются сервером. Переход внутри SPA работает, но прямое открытие того же адреса приводит к ошибке, пустой странице или загрузке универсального каркаса.
- 6Сервер возвращает неправильные HTTP-коды. Несуществующая страница показывает ошибку, но отвечает
200 OK, а переезд на новый адрес выполняется клиентским JavaScript вместо серверного301.
Отдельно стоит проверять доступность JavaScript-файлов, CSS и API, необходимых для построения страницы. Если один из критичных ресурсов недоступен роботу или работает нестабильно, отрендеренная версия может заметно отличаться от той, которую видит пользователь. Поэтому при аудите важно анализировать весь путь формирования документа — от первоначального ответа сервера до появления конечного содержимого в браузере.
Какой рендеринг выбрать для разных типов страниц
Универсального ответа нет, потому что даже внутри одного проекта страницы работают с данными по-разному. На корпоративном сайте информация об услуге может не меняться месяцами, в карточке товара цена обновляется ежедневно, наличие — несколько раз в час, а личный кабинет вообще показывает персональные сведения. Заставлять все разделы работать по одной модели рендеринга обычно не требуется.
Для крупного проекта естественной становится гибридная архитектура. Например, информационный раздел генерируется статически, категории и карточки товаров используют серверный или периодически обновляемый рендеринг, а кабинет покупателя остаётся обычным клиентским приложением. Такой подход позволяет не искать компромисс, одинаково неудобный для всех разделов.
| Тип страницы | Обычно подходящий вариант |
|---|---|
| Корпоративные страницы | SSG / SSR |
| Страницы услуг | SSG / SSR |
| Блог и статьи | SSG |
| Документация | SSG |
| Категории интернет-магазина | SSR / ISR |
| Карточки товаров | SSR / ISR |
| Часто обновляемые публичные данные | SSR |
| Личный кабинет | CSR |
| CRM и административная система | CSR |
| SaaS после авторизации | CSR |
Таблица даёт ориентир, но не должна превращаться в техническое правило. Небольшой каталог со стабильными товарами вполне можно генерировать статически, а новостной проект способен использовать несколько способов формирования страниц одновременно. При выборе архитектуры важнее частота изменения данных, количество URL, нагрузка и роль конкретного раздела в поисковом продвижении.
Что такое ISR и зачем нужен гибридный подход
Между полностью статической страницей и формированием HTML при каждом запросе существует промежуточная модель — Incremental Static Regeneration, или ISR. Её смысл в том, что посетителю отдаётся уже готовая страница, как при SSG, но этот документ может периодически обновляться без полной пересборки всего проекта. Вариант особенно полезен для крупных сайтов, где данные должны оставаться достаточно свежими, но пересчитывать HTML при каждом обращении нет практической необходимости.
Представим интернет-магазин с десятками тысяч карточек. Название, описание и характеристики товара могут оставаться неизменными длительное время, тогда как цена и остаток периодически обновляются. Постоянный серверный рендеринг каждой карточки создаёт дополнительную нагрузку, а полностью статическая версия может быстро устаревать. Периодическая регенерация позволяет сохранить готовый HTML и одновременно обновлять страницу через заданный промежуток времени или после изменения данных.
Современные JavaScript-проекты всё реже укладываются в простую формулу «сайт либо CSR, либо SSR». Режим можно выбирать для каждого типа страниц отдельно: роботу нет необходимости обрабатывать личный кабинет как обычную посадочную, а статическую статью нет смысла пересобирать на сервере при каждом просмотре.
Как проверить JavaScript-сайт перед SEO-продвижением
Главная ошибка при проверке — открыть страницу в браузере, убедиться, что всё отображается, и на этом закончить аудит. Браузер показывает конечное состояние после выполнения скриптов, поэтому визуально исправный сайт ещё не означает, что робот получает такую же страницу. Нужно сравнивать как минимум первоначальный ответ сервера и результат после рендеринга, а дополнительно смотреть, что происходит при прямом обращении к внутренним URL и при ошибках загрузки ресурсов.
- Посмотреть исходный HTML ключевых посадочных страниц: есть ли H1, основной текст, внутренние ссылки и метаданные.
- Сравнить исходную и отрендеренную версии страницы.
- Убедиться, что внутренние URL нормально открываются напрямую, а не только после перехода внутри приложения.
- Проверить коды
200,301,404и другие серверные ответы. - Проверить canonical, robots, sitemap.xml и внутреннюю перелинковку.
- Убедиться, что необходимые JavaScript-файлы, стили и API доступны при рендеринге.
- Отдельно протестировать страницы, которые недавно выпали из индекса или долго туда не попадают.
Особенно полезно проводить такую проверку после смены frontend-технологии. Если раньше сайт формировал полный HTML на сервере, а после редизайна превратился в SPA с клиентским рендерингом, для пользователя визуально может измениться совсем немного, тогда как способ получения контента поисковиком изменится радикально.
JavaScript, скорость сайта и Core Web Vitals
Рендеринг влияет не только на поисковую доступность, но и на производительность интерфейса. Если браузеру перед отображением основного содержимого нужно скачать крупный JavaScript-бандл, разобрать его, выполнить код и дождаться нескольких запросов к API, пользователь увидит полезную часть страницы позже, чем при выдаче уже сформированного HTML. Особенно заметной разница становится на мобильных устройствах со слабым процессором или медленным соединением.

При этом нельзя утверждать, что CSR автоматически означает низкую скорость, а SSR гарантирует хорошие показатели. Плохо оптимизированный сервер способен долго формировать HTML, статическая страница может содержать тяжёлые изображения и сторонние скрипты, а грамотно построенное клиентское приложение — работать очень быстро. Способ рендеринга — один из факторов, а не единственная причина проблем с производительностью. Для SEO важно, чтобы критичный контент был доступен без лишней задержки, а клиентский код отвечал за то, ради чего он действительно нужен: фильтрацию, интерактив, калькуляторы, формы и персонализацию.
Нужно ли переводить весь сайт на SSR
Полная переделка проекта требуется далеко не всегда. Если личный кабинет, CRM или внутренняя часть сервиса нормально работают на CSR и не должны индексироваться, переводить их на серверный рендеринг только ради SEO нет смысла. Гораздо эффективнее определить набор URL, которые действительно должны получать органический трафик, и отдельно оценить их архитектуру.
Например, сервис может состоять из нескольких десятков публичных страниц и огромного приложения за авторизацией. Поисковику нужны главная, тарифы, описание возможностей, документация и статьи, тогда как внутренние экраны не имеют поискового спроса. В таком случае можно изменить способ рендеринга только публичной части и оставить бизнес-логику приложения без масштабной перестройки. Та же логика применяется к интернет-магазинам: карточка товара как документ должна содержать название, описание, характеристики, ссылки и технические сигналы, а изменение количества в корзине, фильтрация вариантов или работа с избранным вполне могут оставаться клиентскими функциями.
Нужно ли отказываться от JavaScript ради SEO
Нет. Современный сайт практически невозможно представить без JavaScript, и поисковое продвижение не требует возвращения к полностью статичным интерфейсам. React, Vue, Angular, Svelte и другие технологии нормально используются в проектах, которые получают значительный органический трафик. Вопрос не в самом наличии JS, а в том, какую роль он играет при формировании индексируемого содержимого.
Правильный принцип выглядит просто: чем важнее страница для органического поиска, тем меньше её основное содержимое должно зависеть от необязательных клиентских операций. Для одной страницы это может означать SSG, для другой — SSR, для третьей — периодическую регенерацию, а для закрытого интерфейса оптимальным вариантом останется обычный CSR.
Часто задаваемые вопросы
Индексируют ли Яндекс и Google JavaScript-сайты?
Да. Сам факт использования JavaScript не мешает индексации. Проблемы чаще связаны с тем, каким способом создаётся содержимое, доступны ли поисковику необходимые ресурсы и правильно ли реализованы URL, ссылки, метатеги и серверные ответы.
Можно ли продвигать SPA в поиске?
Можно, однако публичные страницы SPA требуют внимательной технической проверки. Если весь значимый контент появляется только после клиентского рендеринга, поисковая система сильнее зависит от корректного выполнения JavaScript.
Что лучше для SEO — CSR, SSR или SSG?
Для страниц, которым нужен поисковый трафик, SSR и SSG обычно обеспечивают более предсказуемую выдачу основного HTML. CSR удобен для приложений и интерфейсов, которым индексация не требуется. На крупных сайтах оптимальным вариантом часто оказывается сочетание нескольких методов.
Какой JavaScript-фреймворк лучше для SEO?
Само название фреймворка не определяет результат. React, Vue, Angular, Svelte и другие технологии можно реализовать по-разному. Для SEO важнее способ рендеринга, доступность содержимого, скорость, внутренняя перелинковка и корректная обработка URL.
Нужно ли полностью переделывать существующий сайт на SSR?
Нет. Сначала необходимо определить, действительно ли текущий рендеринг мешает индексированию. Нередко достаточно изменить только публичные страницы, рассчитанные на поисковый трафик, сохранив CSR для личных кабинетов и внутренних функций.
Вывод
Проблема индексации JS-сайтов заключается не в JavaScript как технологии. Поисковые системы способны работать с динамическими страницами, однако архитектура определяет, сколько дополнительных действий им необходимо выполнить перед тем, как они получат содержимое. Чем больше критичных текстов, ссылок и технических элементов появляется только после выполнения клиентского кода, тем сильнее результат зависит от рендеринга.
CSR хорошо подходит для приложений и закрытых интерфейсов, SSG — для относительно стабильных информационных и коммерческих страниц, а SSR — для публичных разделов, данные которых нужно формировать при запросе. В больших проектах нет необходимости выбирать одну технологию для всего сайта: блог, каталог и личный кабинет могут использовать разные способы рендеринга и оставаться частями одного приложения.
При SEO-аудите стоит начинать не с вопроса о конкретном фреймворке, а с проверки того, что поисковый робот получает по URL до и после выполнения JavaScript. Если сайт потерял позиции после редизайна или перехода на SPA — проведём технический аудит и определим, что именно мешает индексации.
Команда Depweb
Разработка и продвижение цифровых продуктов


