Посібник з SEO для React: чому клієнтський рендеринг гальмує індексування, коли обирати SSR чи пререндеринг, як задати метатеги в React 19 і лишатися видимим для ШІ.

На цій сторінці
Коротко
React-сайт може ранжуватися в Google, але стандартний односторінковий застосунок віддає майже порожній HTML-файл і показує контент лише за допомогою JavaScript. Це затримує індексування й приховує сторінку від більшості краулерів ШІ. Надійне рішення: віддавати HTML із сервера, тобто пререндерити статичні сторінки під час збирання або використовувати фреймворк із серверним рендерингом (Next.js, React Router). Потім задайте кожному URL унікальні заголовок, опис і canonical, використовуйте справжні посилання й коректні коди відповіді та перевіряйте, що отримують боти.
Хочете дізнатися більше? Запитайте
Швидкий тест
Чи підходить вам SEO і з чого почати?
Sorank відповідає вашим відповідям
Спробуйте його 3 дні на власному сайті й дізнайтеся, де ви зараз у Google, ChatGPT та інших ШІ.
Спробувати 3 дні безкоштовно3 дні безкоштовно, потім зупиніть, коли захочете. Гарантія результату або повернення коштів протягом 90 днів.
SEO для React означає роботу над тим, щоб React-застосунок був доступним для сканування, індексування й розуміння пошуковими системами та ШІ-асистентами. Сам React нейтральний: проблеми виникають, коли все рендериться в браузері. Google підтверджує в основах SEO для JavaScript, що обробляє JavaScript-застосунки у три етапи (сканування, рендеринг, індексування) і що рендеринг на сервері або попередній рендеринг «досі чудова ідея, бо пришвидшує сайт для користувачів і роботів, а JavaScript уміють виконувати не всі боти».
React-застосунок, створений як односторінковий, віддає HTML-файл, у якому майже нічого немає, крім порожнього кореневого div і тегу script. Браузер завантажує JavaScript, виконує його й збирає сторінку. Робот, що читає лише HTML, не бачить нічого для індексування: ні заголовків, ні тексту, ні посилань.
Googlebot виконує JavaScript, але на окремому етапі: сторінку сканують, ставлять у чергу на рендеринг, рендерять у Chromium без інтерфейсу, і лише після цього використовують відрендерені посилання й контент. Кожен зайвий етап дає шанс на збій (помилка скрипта, заблокований API, перевищення часу очікування) і додає затримку, перш ніж нові сторінки з'являться в пошуку. Наш посібник з SEO для JavaScript описує цей процес, а стаття про індексування в Google пояснює, як пришвидшити індексацію сторінок.
Інші боти менш терплячі. Аналіз Vercel від грудня 2024 року, The rise of the AI crawler, показав, що «жоден із великих краулерів ШІ наразі не рендерить JavaScript», і назвав GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot і PerplexityBot. Сторінка React із клієнтським рендерингом невидима для ChatGPT, Claude і Perplexity, навіть якщо Google її проіндексував.
Команда React тепер радить починати нові застосунки з фреймворку. Припиняючи підтримку Create React App 14 лютого 2025 року, вона написала в анонсі, що «серверний рендеринг може покращити SEO», а також підвищує продуктивність, скорочуючи обсяг JavaScript, який треба завантажити до показу контенту. Варіанти від найслабшого до найсильнішого для пошуку:
| Підхід | Що отримують боти | Оцінка для SEO | Типові інструменти |
|---|---|---|---|
| Клієнтський рендеринг (SPA) | Порожній HTML, контент після JavaScript | Слабко: індексування із затримкою, невидимість для краулерів ШІ | Vite + React, старі проєкти на Create React App |
| Динамічний рендеринг | Пререндерений HTML лише для ботів | Тимчасове рішення, Google його не рекомендує | Сервіси пререндерингу, проксі з браузером без інтерфейсу |
| Статичний пререндеринг під час збирання | Повний HTML для кожного відомого URL | Дуже добре для контенту, що рідко змінюється | Пререндеринг у React Router, генератори статичних сайтів, статичний експорт Next.js |
| Серверний рендеринг | Повний HTML на кожен запит, потім гідратація | Найкращий варіант для великих або часто оновлюваних сайтів | Next.js, React Router (режим фреймворку, колишній Remix) |
Щодо динамічного рендерингу документація Google каже прямо: він «був тимчасовим рішенням, а не довгостроковим», і замість нього Google рекомендує серверний рендеринг, статичний рендеринг або гідратацію. Якщо ви обираєте фреймворк, наш посібник з SEO для Next.js докладно розбирає режими рендерингу, Metadata API і карти сайту.
Якщо міграція неможлива, Google усе одно може проіндексувати односторінковий застосунок за дотримання деяких умов. Їх перелічено в нашому посібнику з SEO для односторінкових застосунків; решта статті стосується обох випадків.
Починаючи з React 19 (стабільна версія з 5 грудня 2024 року) компоненти можуть безпосередньо рендерити теги title, meta і link, а React переносить їх у head документа. У примітках до випуску React 19 сказано, що ця вбудована підтримка працює «у застосунках лише на клієнті, з потоковим SSR і з Server Components». До React 19 це завдання виконували бібліотеки на кшталт react-helmet або react-helmet-async, і вони досі корисні, щоб перевизначати значення за замовчуванням для окремих маршрутів.
function ProductPage({ product }) {
return (
<>
<title>{`${product.name} | Shop`}</title>
<meta name="description" content={product.summary} />
<link rel="canonical" href={`https://example.com/p/${product.slug}`} />
<h1>{product.name}</h1>
</>
)
}Три правила діють за будь-якого способу:
Увага
У застосунку, що працює лише на клієнті, теги, відрендерені React, з'являються тільки після виконання JavaScript. Google може прочитати їх після рендерингу, а краулери ШІ й більшість ботів попереднього перегляду соцмереж ні. Серверний рендеринг або пререндеринг додає їх у HTML-відповідь для всіх.
Google зазначає, що «може виявити ваші посилання, лише якщо це HTML-елементи a з атрибутом href», і не радить використовувати фрагменти URL для завантаження різного контенту. Більшість проблем SEO в React пов'язані з деталями маршрутизації:
| Помилка | Наслідок | Рішення |
|---|---|---|
| Навігація через onClick на div або кнопці | Google не знаходить посилання для переходу | Використовувати компонент Link маршрутизатора, який рендерить a з href |
| Хеш-маршрути (/#/products) | Для Google усі сторінки мають один URL | Використовувати маршрути на основі History API (/products) з BrowserRouter або фреймворком |
| Екран «не знайдено» зі статусом 200 | «Хибна помилка 404» у Search Console | Повертати справжній 404 із сервера або додавати noindex через JavaScript у чистому SPA |
| Лише клієнтські переспрямування | Повільні або пропущені переспрямування | Використовувати серверні переспрямування 301 або 308 для перенесених сторінок |
| Контент, що завантажується за кліком або прокручуванням | Текст ніколи не рендериться для робота | Рендерити основний контент під час завантаження; ділити списки на сторінки зі справжніми URL |
| JavaScript або API заблоковані в robots.txt | Google рендерить порожню сторінку | Дозволити скрипти й ендпоінти API, потрібні сторінці |
Щоб побачити, що рендерить Google, відкрийте інструмент перевірки URL у Search Console й перегляньте HTML перевіреної сторінки або проженіть ключові шаблони через перевірку індексованості.
У React немає вбудованої карти сайту. Генеруйте sitemap.xml під час збирання з маршрутів і даних (або функцією карти сайту у фреймворку), додавайте лише канонічні URL з відповіддю 200 і вкажіть файл у robots.txt. Для невеликого статичного сайту вистачить генератора XML-карти сайту.
Структуровані дані підпорядковуються тому самому правилу, що й метадані: рендерте скрипт JSON-LD разом зі сторінкою, з тих самих даних, бажано на сервері. Google може прочитати JSON-LD, вставлений через JavaScript, після рендерингу, але розмітка, якої немає в початковому HTML, відсутня й для роботів, що не рендерять сторінки. Використовуйте Article для статей, Product для інтернет-магазину, Organization на всьому сайті й BreadcrumbList для глибоких сторінок.
Порада
Виконайте curl для URL сторінки й знайдіть у виводі її H1 та фразу з основного тексту. Якщо їх немає, Google, можливо, проіндексує сторінку після рендерингу, але краулери ШІ нічого не побачать.
Великі JavaScript-бандли погіршують Core Web Vitals: браузер має завантажити, розібрати й гідратувати код, перш ніж сторінка почне реагувати, а це навантажує Largest Contentful Paint та Interaction to Next Paint, особливо на мобільних. В анонсі команди React про Create React App зазначено, що серверний рендеринг надсилає менше JavaScript і повний HTML-документ, що пришвидшує First Contentful Paint і може знизити INP. Практичні важелі: розділення коду за маршрутами через React.lazy, зображення з явними розмірами, ліниве завантаження компонентів нижче першого екрана й аудит сторонніх скриптів.
GEO (оптимізація для генеративних систем) починається з доступу. Оскільки краулери ШІ забирають вихідний HTML, сторінка React має віддавати текст, заголовки й JSON-LD без JavaScript, щоб її прочитали, переказали й процитували. Аудит доступності сайту для ШІ показує, що ці боти отримують з ваших сторінок. Друга умова: контент, який варто цитувати, тобто сторінки, де кожен розділ відповідає на одне питання, з джерелами, цифрами й чіткими визначеннями.
Цю контентну частину автоматизує Sorank, наш продукт. Sorank: програма для SEO і GEO в режимі autopilot. Її Генератор статей для блогу пише й публікує 20, 60 або 120 статей на місяць із джерелами, внутрішніми посиланнями й зображеннями та підключається через webhook до сайтів на власному стеку, наприклад на React або Next.js. SEO Chat відповідає в діалозі на запитання про результати вашого сайту в пошуку.

Підсумок: віддавайте HTML із сервера, задайте кожному URL власні заголовок, опис і canonical та використовуйте справжні посилання. Тоді React-сайт ранжується як будь-який інший, а ШІ-асистенти можуть його прочитати. Щоб регулярно наповнювати такий сайт статтями для Google і ШІ, перегляньте тарифи Sorank: від 49 доларів на місяць і 3 дні безкоштовного пробного періоду.
Ні. React є бібліотекою для інтерфейсів, і SEO залежить від того, як рендеряться сторінки. Односторінковий застосунок із клієнтським рендерингом віддає порожній HTML і покладається на етап рендерингу в Google, що затримує індексування й приховує контент від краулерів ШІ. Той самий код React із серверним рендерингом або статичним пререндерингом ранжується як звичайний сайт.
Так. Googlebot виконує JavaScript в актуальній версії Chromium, тому може індексувати контент, який React-застосунок будує в браузері. Рендеринг відбувається після сканування й може затриматися або не вдатися, якщо скрипти видають помилки чи API заблоковані. Інструмент перевірки URL у Search Console показує відрендерений HTML так, як його бачить Google.
Для простих випадків ні. React 19 рендерить теги title, meta і link з будь-якого компонента й переносить їх у head документа. Бібліотеки на кшталт react-helmet-async лишаються корисними, коли треба перевизначати загальні значення сайту для окремих маршрутів або підтримувати старі версії React.
ВОНИ ПРОБУВАЛИ SORANK ДО ВАС
