Техническое SEO

SPA-сайт: как отдавать контент поисковому боту?

Александр Тригуб — частный SEO-специалист
Александр Тригуб Частный SEO-специалист · с 2010 · 500+ аудитов · 1092 заказа · 4.9★

SPA (Single Page Application) на React, Vue, Angular — проблема для SEO. Контент рендерится на клиенте, а поисковый робот видит пустой HTML.

Проблема

Googlebot рендерит JavaScript, но с задержкой и лимитами. Яндекс рендерит JS значительно хуже. Итог: контент SPA может не попасть в индекс.

Решения

1. SSR (Server-Side Rendering) — лучший вариант.

  • Next.js (React), Nuxt.js (Vue), Angular Universal
  • Сервер отдаёт готовый HTML с контентом → робот видит всё
  • После загрузки — JS «гидрирует» страницу для интерактивности

2. SSG (Static Site Generation).

  • Страницы генерируются на этапе сборки → статический HTML
  • Идеально для блогов, лендингов, каталогов с редким обновлением
  • Gatsby, Next.js (static export), Hugo

3. Dynamic Rendering (крайний случай).

  • Определяем User-Agent: если робот → отдаём пре-рендеренный HTML
  • Google официально поддерживает, но рекомендует SSR
  • Puppeteer, Rendertron — инструменты для пре-рендеринга

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

GSC → Проверка URL → «Просмотр просканированной страницы». Если видите контент — всё OK. Если пусто — нужен SSR.

На практике рекомендую комбинировать SSR с пререндерингом ключевых страниц через Puppeteer или Rendertron — это страхует от ошибок рендеринга у ботов. Для динамических разделов (личные кабинеты, фильтры) используйте Conditional Rendering: отдавайте боту упрощённую статическую версию через User-Agent проверку. Инструменты вроде Vue Meta или React Helmet критически важны для управления тегами title/meta при SSR. Проверяйте индексируемость через Google Search Console (отчёт «Проверка URL») и сервисы типа Screaming Frog в режиме «рендеринга JS».

Важный нюанс: даже с SSR избегайте «воды» в HTML. Боты учитывают соотношение контента и кода — минимизируйте встроенные JSON-данные и стили. Для SPA с частыми обновлениями (новостные порталы) настройте Incremental Static Regeneration (ISR) в Next.js: это даёт статическую скорость с динамическим контентом. Всегда тестируйте загрузку с отключённым JavaScript в DevTools — так вы увидите страницу «глазами» Яндекса.

Не нашли ответ? Спросите!

Отвечаю лично в течение 24 часов. Лучшие вопросы публикую в этом разделе.

Другие вопросы

Кто ведёт проект

Александр Тригуб — частный SEO-специалист. В поисковом маркетинге с 2010 года, предприниматель с 2001-го. В SEO пришёл из собственного бизнеса — знаю, как устроены продажи не из учебников, а из собственной выручки и расходов.

  • Специализация: медицина, B2B, e-commerce и локальные услуги — ниши, где каждый лид стоит дорого.
  • Подтверждённый опыт: 500+ видео-аудитов в разных тематиках, 1092 заказа (рейтинг 4.9 / 5). Отзывы · Видео-аудиты.
  • Профили с отзывами: 728 отзывов на Kwork (4.9★) · Profi.ru (5.0★) · ORCID 0009-0009-0106-6136.
  • Формат: работаю напрямую, один специалист на проект — без менеджеров и субподрядных цепочек.
  • Отчётность: KPI по лидам и деньгам. Ежемесячный план/факт, а не PDF на 50 страниц.
15+лет в маркетинге
500+видео-аудитов
1092заказов
4.9★728 отзывов