SSR vs CSR

Серверный и клиентский рендеринг

Где формируется HTML — на сервере или в браузере.

SSR (Server-Side Rendering) — HTML собирается на сервере и приходит браузеру готовым. CSR (Client-Side Rendering) — браузер получает почти пустой HTML, и весь контент рисует JavaScript уже на клиенте.

Для SEO SSR безопаснее: поисковик сразу видит весь контент. CSR требует, чтобы поисковик исполнил JavaScript — Google это умеет, но с задержкой, а Яндекс и Bing хуже. Современный подход — гибрид (SSR + гидратация), как в Next.js и Nuxt.

SSR
Server-Side Rendering

HTML собирается на сервере, отдаётся готовым. Поисковик сразу видит контент. Быстрый FCP, дороже сервер

CSR
Client-Side Rendering

Сервер отдаёт пустой HTML + JS. JS строит DOM в браузере. Старые роботы не видят контент. Дешёвый сервер, медленный FCP

Hybrid
SSG / ISR / Edge

Заранее сгенерированный HTML + JS-гидрация. Лучшее из двух миров: SEO + интерактивность. Next.js, Nuxt, Astro

Три способа рендеринга. Для SEO предпочтительны SSR или статика — JS-роботы Google умные, Yandex может пропускать JS-контент
Пример из практики

Lastminute.com — SSR через Next.js: поисковик сразу видит весь контент 7 млн страниц. Если бы был чистый CSR — пришлось бы ждать рендеринга, и часть страниц не доходила бы до индекса.

Проверить, что реально видит поиск, проще всего так: откройте страницу с выключенным JavaScript или гляньте «сохранённую копию» в выдаче — если на чистом CSR вы увидите пустой каркас без текста, значит роботу контент тоже не достаётся сразу. В Google Search Console есть «Проверка URL» с просмотром отрендеренного HTML, у Яндекса аналога нет, поэтому для Яндекса CSR опаснее вдвойне: его рендерер слабее, и важные блоки (цены, описания, ссылки на обход) могут не попасть в индекс неделями.

Гибрид решает не всё: даже при SSR тяжёлый JS-бандл тормозит интерактивность и бьёт по LCP, если первый экран ждёт гидратации. Частая ошибка — отдавать роботу один HTML, а пользователю подменять контент скриптом; для поиска это выглядит как клоакинг и грозит санкциями. Если переписать фронтенд на SSR нельзя, ставьте предрендеринг (prerender.io, Rendertron) для ботов или статическую генерацию ключевых разделов — подробнее в JavaScript SEO.