JavaScript SEO — особый подход к SEO для сайтов на React, Vue, Angular или других JS-фреймворках. Контент таких сайтов создаётся не как обычный HTML, а после запуска JavaScript в браузере. Googlebot тоже может запустить JS и прочитать контент, но процесс сложный и часто с ошибками. Правильный выбор подхода — критичен для SEO сайта.
Разница классического HTML и JS-сайта
Классический HTML — сервер отдаёт полный HTML-документ. Браузер (или Googlebot) сразу читает, контент сразу виден. Нажали URL — контент.
JS-фреймворк (SPA) работает иначе. Сервер отдаёт пустой или минимальный HTML, контент строится JavaScript в браузере. Для пользователя плавно. Для Googlebot — сложнее.
Как Googlebot читает JavaScript
Googlebot делает два этапа рендеринга. Первый — обычный HTML-краул. Googlebot заходит, получает первоначальный HTML, читает. В этом HTML нет JS-контента — только структура и loader.
Второй — рендер. Googlebot ставит страницу в очередь на запуск JS и в своё время рендерит через Chrome render engine. JS запускается, контент создаётся, индексируется. Но время второго этапа — несколько дней или даже недель.
Проблема двухэтапного рендеринга
Это главная проблема JS SEO. При добавлении нового товара или поста Googlebot сначала видит исходный HTML (без контента), и только через 1-2 недели рендерит и индексирует. Новый контент в Google появляется через 2 недели или дольше.
Также если JS даёт ошибку или проблема на рендере, Googlebot вообще не получит контент. Статистика: 30%+ JS SPA сайтов не рендерятся правильно у Googlebot и контент не индексируется.
Server-Side Rendering (SSR)
SSR — главное решение. На сервере запускается JS (через Node.js) и полностью рендеренный HTML отправляется браузеру. Браузер получает готовый HTML — для Googlebot тоже готовый, рендер не нужен.
Для React — Next.js, для Vue — Nuxt.js, для Angular — Angular Universal. Польза SSR: первая загрузка быстрее, лучше Core Web Vitals (LCP), лучше UX.
Static Site Generation (SSG)
SSG — ещё радикальнее. Сайт на этапе build конвертируется в статические HTML-файлы. Никакого server-side рендера — каждая страница уже HTML и через CDN отдаётся мгновенно. Ультра-быстро, ультра-дёшево.
Инструменты: Next.js, Gatsby, Hugo, Jekyll, Astro. Подходит для миллионов страниц.
Гибридные подходы: ISR и dynamic SSG
Incremental Static Regeneration (ISR, Next.js) — страницы статические, но иногда обновляются. На build исходный HTML, при посещении старая страница сразу показывается, в фоне обновляется. Идеально для e-commerce.
Vercel, Netlify нативно поддерживают ISR.
Тесты JavaScript SEO
В GSC \"URL Inspection\" — \"View tested page\" показывает, как Googlebot видит. Mobile-Friendly Test, Rich Results Test — то же. Lighthouse в Chrome DevTools — SEO ошибки.
Ручной тест: отключите JS в Chrome (chrome://settings/content/javascript) и откройте сайт. Если контента нет — Googlebot тоже его не увидит.
Практические советы JS SEO
Правило 1: для нового сайта с приоритетом SEO выбирайте SSR или SSG. CSR (только клиентский рендер) — худший выбор для SEO. CSR подходит для логин-дашбордов, не для публичного сайта.
Правило 2: если у вас CSR, хотя бы для главных SEO-страниц используйте pre-rendering. Prerender.io, Rendertron — pre-rendered HTML для Googlebot.
Технологический выбор Сайт.uz
Сайт.uz — не JS SPA, мы сделали PHP классический HTML сайт. Причина: для SEO осторожность и техническая простота. PHP отдаёт полный HTML, рендер не нужен, индексация сразу. Для UX используем Alpine.js (лёгкий JS).
Результат: новый блог-пост индексируется в Google за 1-2 дня, рендер-проблем нет, сервер быстрый. Не пользуемся UX-плюсами SPA, но SEO и техническая простота — наш приоритет.