Разработка

Почему SPA плохо индексируется и что даёт серверный рендеринг

Одностраничное приложение отдаёт браузеру почти пустой HTML и пачку скриптов, которые уже на стороне пользователя запрашивают данные и рисуют содержимое. Человек этого не замечает, а робот получает каркас без текста: поисковики умеют исполнять JavaScript, но делают это отдельным отложенным этапом и не для всех страниц, а многие ИИ-краулеры не исполняют его вовсе. Отсюда классическая картина: сайт красиво работает, в поиске его почти нет, в исходном коде страницы — пустой div. Разбираем, как устроен обход на самом деле, чем отличаются SSR, SSG и ISR, как выбрать режим под тип страницы и как проверить, что робот видит ваш текст.

14 августа 2026 г.12 мин чтенияРедакция Юнкис

Коротко о главном

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

1Как робот на самом деле обрабатывает JavaScript

Обход страницы с исполнением скриптов идёт в два прохода. Сначала робот скачивает HTML и разбирает то, что в нём есть: ссылки, метаданные, видимый текст. Если содержимого нет, страница откладывается в очередь на рендеринг — второй этап, где браузерный движок исполняет скрипты и получает финальную разметку. Второй этап дороже первого на порядки, поэтому очередь движется медленно и обходит не всё подряд.

Практические последствия три. Первое — задержка: между публикацией и появлением содержимого в индексе проходит заметно больше времени, чем у обычных страниц. Второе — выборочность: до рендеринга доходят не все страницы, и в первую очередь страдают глубокие разделы с малым числом внутренних ссылок. Третье — хрупкость: ошибка в скрипте, неудачный запрос к API или таймаут означают, что робот увидит пустую страницу, а вы об этом даже не узнаете.

С ИИ-краулерами ситуация жёстче. Многие из них забирают исходный HTML и не исполняют скрипты вообще: им нужен текст, а не интерактивность. Для сайта на клиентском рендеринге это означает, что в ИИ-ответах он не участвует в принципе — цитировать нечего.

  • Обход идёт в два прохода: сначала HTML, потом отложенный рендеринг скриптов.
  • Рендеринг дорог, поэтому доходит не до всех страниц и не сразу.
  • Ошибка в скрипте или таймаут запроса — робот видит пустую страницу.
  • Многие ИИ-краулеры скрипты не исполняют: без серверного HTML вас просто нет.
  • Глубокие разделы страдают сильнее всего: до них очередь доходит в последнюю очередь.

2Как отличить проблему за две минуты

Самая быстрая проверка — просмотр исходного кода страницы в браузере (не панель разработчика с готовым DOM, а именно исходный код). Найдите в нём предложение из вашего основного текста. Если оно есть — контент приходит с сервера. Если вместо текста видно пустой контейнер и список скриптов, робот получает то же самое.

Вторая проверка — отключить JavaScript в браузере и открыть страницу. Останется ли на ней содержимое и работающие ссылки? Третья — посмотреть в вебмастере, как выглядит страница для робота, и сравнить с тем, что видите вы. Четвёртая — проверить, что навигация сделана обычными ссылками с адресами, а не обработчиками кликов: по кнопке без ссылки робот никуда не перейдёт.

Отдельно проверьте метаданные. В одностраничных приложениях title и description часто подставляются скриптом после загрузки, и в исходном HTML у всех страниц оказывается один и тот же заголовок. В выдаче это выглядит как сайт из сотни одинаковых страниц, а в мессенджерах ссылки теряют превью.

  • Просмотр исходного кода: есть ли в нём предложение из основного текста.
  • Открыть страницу с отключённым JavaScript — останется ли содержимое.
  • Сравнить вид страницы для робота в вебмастере с тем, что видите вы.
  • Навигация — настоящие ссылки с адресами, а не обработчики кликов.
  • Уникальные title и description должны приходить с сервера, а не подставляться скриптом.

3SSR, SSG, ISR и клиентский рендеринг

Клиентский рендеринг (CSR) — всё рисуется в браузере. Годится для интерфейсов за авторизацией: личный кабинет, админка, дашборд. Их всё равно не индексируют, зато интерактивность важна.

Статическая генерация (SSG) — страницы собираются заранее, при сборке проекта, и отдаются как готовые файлы. Идеальный вариант для контента, который меняется редко: посадочные страницы, статьи блога, кейсы, документация. Быстро, дёшево, надёжно: сервер отдаёт готовый HTML, ошибиться негде.

Серверный рендеринг (SSR) — страница собирается на сервере в момент запроса. Нужен там, где содержимое зависит от данных, меняющихся постоянно: каталог с ценами и остатками, результаты поиска и фильтрации, персонализированные разделы. Инкрементальная регенерация (ISR) — компромисс: страница статическая, но пересобирается по расписанию или по событию. Это рабочий режим для большого каталога, где полная пересборка при каждом изменении слишком дорога.

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

4Гибридный подход: разные режимы для разных страниц

Спор «SPA против классического сайта» устарел вместе с фреймворками, в которых надо было выбирать один режим на весь проект. Современный подход — гибрид: публичные страницы отдаются с сервера готовыми, а интерактивные части остаются клиентскими компонентами внутри них. Каталог собирается на сервере, а фильтры и корзина работают в браузере; статья статическая, а виджет обратной связи — клиентский.

Такая архитектура снимает главный конфликт: разработчику не приходится выбирать между удобной интерактивностью и индексируемостью. Сложность появляется в другом месте — надо аккуратно решать, какая часть страницы серверная, а какая клиентская, и не тащить в браузер лишний код. Но это уже вопрос инженерной дисциплины, а не ограничение технологии.

Отдельно про «SEO-плагины» и предварительный рендеринг для роботов. Схема, где боту отдают одну версию страницы, а человеку другую, живёт до первого расхождения содержимого — а расходятся они всегда. Если есть возможность перейти на нормальный серверный рендеринг, костыли с раздачей разных версий лучше не заводить.

  • Публичные страницы — с сервера, интерактивные блоки — клиентские компоненты внутри них.
  • Каталог серверный, фильтры и корзина клиентские: конфликт снимается.
  • Не тащите в браузер код, который не нужен пользователю на этой странице.
  • Раздача роботам отдельной версии страницы — временный костыль с риском расхождения.

5Что чинить, если сайт уже написан как SPA

Полная переделка нужна не всегда. Начните с инвентаризации: какие страницы приносят или должны приносить поисковый трафик. Обычно это главная, посадочные услуг, каталог, карточки и блог — десятки шаблонов, а не тысячи страниц. Переводить на серверный рендеринг имеет смысл именно их, а личный кабинет и внутренние интерфейсы оставить как есть.

Дальше по порядку: сначала главная и посадочные, потом каталог и карточки, потом блог. Каждый шаг проверяется на реальных страницах — исходный код, метаданные, скорость, статус в вебмастере. Параллельно чинятся сопутствующие вещи, которые в одностраничных приложениях ломаются почти всегда: уникальные title и description, канонические адреса, sitemap.xml с настоящими датами, корректные коды ответов вместо 200 на всё подряд, включая несуществующие адреса.

Заранее договоритесь о критерии успеха: не «стало красивее», а рост числа проиндексированных страниц и появление текста в исходном коде на выбранных шаблонах. Это проверяемо, и по этому же критерию видно, что работа закончена.

  • Инвентаризация: какие шаблоны реально нужны в поиске.
  • Очередь работ: главная и посадочные → каталог и карточки → блог.
  • Личный кабинет и внутренние интерфейсы можно оставить клиентскими.
  • Попутно: уникальные метаданные, canonical, sitemap, корректные коды ответов.
  • Критерий успеха — рост числа проиндексированных страниц, а не ощущения.

6Что это даёт кроме индексации

Серверный рендеринг заметно улучшает то, что видит пользователь на медленном интернете и слабом телефоне: содержимое появляется сразу, а не после загрузки и исполнения скриптов. Это напрямую отражается на Core Web Vitals — времени до отрисовки основного содержимого и стабильности вёрстки, — а значит, и на поведенческих показателях.

Второй эффект — корректные превью ссылок. Мессенджеры и соцсети не исполняют скрипты: они читают Open Graph-теги из исходного HTML. У приложения с клиентской подстановкой метаданных все ссылки выглядят одинаково безлико, и это тихо съедает переходы из личных сообщений и чатов, куда ваши же клиенты пересылают страницы друг другу.

Третий — участие в ИИ-ответах. Раз многие краулеры ассистентов не исполняют скрипты, серверный HTML становится условием попадания в цитирование. Это тот случай, когда одно техническое решение закрывает сразу три задачи: обычный поиск, скорость и ИИ-видимость.

  • Быстрее появляется содержимое — лучше Core Web Vitals и поведение пользователей.
  • Корректные Open Graph-превью в мессенджерах и соцсетях.
  • Участие в ИИ-ответах: краулерам ассистентов нужен текст в исходном HTML.
  • Меньше зависимость от ошибок скриптов и таймаутов API.

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

Индексируются ли SPA поисковиками вообще?+
Индексируются, но хуже и медленнее. Поисковые роботы исполняют JavaScript отдельным отложенным этапом, до которого доходят не все страницы: глубокие разделы с малым числом внутренних ссылок часто остаются без содержимого. Плюс любая ошибка скрипта или таймаут запроса приводит к тому, что робот сохраняет пустую страницу.
Как проверить, видит ли робот текст на моём сайте?+
Откройте исходный код страницы в браузере — именно исходный код, а не панель разработчика — и поищите в нём предложение из основного текста. Дополнительно откройте страницу с отключённым JavaScript и посмотрите отчёт вебмастера о том, как страница выглядит для робота. Если текста нет ни там, ни там, содержимое рисуется только в браузере.
Что выбрать: SSR или SSG?+
По типу страницы. Статическая генерация подходит для контента, который меняется редко: посадочные, статьи, кейсы, документация — они отдаются как готовые файлы и работают максимально быстро. Серверный рендеринг нужен там, где данные меняются постоянно: каталог с ценами и остатками, поиск, фильтры. Для больших каталогов есть промежуточный режим — статика с регулярной пересборкой.
Нужно ли переписывать весь сайт, если он сделан как SPA?+
Обычно нет. На серверный рендеринг переводят шаблоны, которые должны приносить поисковый трафик: главную, посадочные, каталог, карточки, блог — это десятки шаблонов, а не тысячи страниц. Личный кабинет, админку и внутренние интерфейсы можно оставить клиентскими: их всё равно не индексируют, и переделка ничего не даст.
spassrиндексацияnext.jsтехническое seo

Переведём сайт на серверный рендеринг без переписывания с нуля

Студия Юнкис разбирает, какие шаблоны действительно нужны в поиске, и переводит на серверный рендеринг именно их — вместе с метаданными, каноническими адресами и sitemap. Оставьте заявку: начнём с проверки того, что видит робот на вашем сайте.

Обсудить задачу