01Що це таке і як це працює
Single-page application надає мінімальну HTML-оболонку і покладається на JavaScript для отримання даних та оновлення DOM. Коли користувач натискає на посилання, SPA перехоплює навігацію, запитує лише потрібні дані (часто JSON) і повторно відображає вигляд у браузері. Це створює швидкий досвід роботи, схожий на додаток. Для пошукових систем початковий HTML часто містить мало контенту або не містить його зовсім. Краулер, який не виконує JavaScript, побачить порожню сторінку. Сучасні краулери, такі як Googlebot, виконують JavaScript, але роблять це у другій хвилі, що може затримати індексацію. Головне — контент не знаходиться у сирому HTML; він з'являється лише після виконання JavaScript.
SPA — це вебсайт, який працює як десктопний додаток: він завантажується один раз, а потім змінює вміст сторінки на льоту. Пошуковим системам потрібно виконувати JavaScript, щоб побачити, що саме є на сторінці.
02Що з цим робити
Зробіть контент доступним без необхідності виконання JavaScript. Найнадійніший підхід — рендеринг на стороні сервера (SSR) або статична генерація: сервер повертає повністю відрендерений HTML. Якщо це неможливо, використовуйте динамічний рендеринг: надавайте статичний знімок ботам, а SPA — користувачам. Як альтернативу, переконайтеся, що ваша SPA використовує History API для маршрутизації, а не хеш-фрагменти, і що весь важливий контент включений у початкову HTML-паку. Перевірте за допомогою інструмента Google URL Inspection, щоб побачити, що бачить Googlebot. Також уникайте блокування JavaScript-файлів у robots.txt; краулери потребують їх для рендерингу.
03Як це вимірюється або помічається
Перевірте інструмент URL Inspection у Google Search Console: він показує відрендерений HTML, який бачить Googlebot. Якщо відрендерений HTML містить ваш контент, у вас все гаразд. Також перегляньте звіт «Покриття» (Coverage) на наявність проблем з індексацією. Ще один сигнал — чи з'являються ваші сторінки в результатах пошуку за цільовими ключовими словами. Якщо ні, і сторінка є SPA, то причиною, швидше за все, є рендеринг. Ви також можете скористатися функцією «Переглянути як Googlebot» (тепер це частина URL Inspection), щоб побачити відрендерену сторінку. Для швидкої перевірки вимкніть JavaScript у своєму браузері та завантажте сторінку; якщо контент відсутній, у вас є проблема.
04Поширені помилки
- Припущення, що Googlebot не виконує JavaScript — він виконує, але лише після черги, тому поява контенту може затримуватися.
- Використання маршрутизації на основі хешу (#/page) замість History API; хеші не розглядаються як окремі URL.
- Блокування JavaScript або CSS-файлів у robots.txt, що перешкоджає рендерингу.
- Покладання на клієнтський рендеринг для контенту, якого немає в початковому HTML.
- Ігнорування динамічного оновлення `` та meta description для кожного маршруту.
05Обмеження та труднощі
SPA — це не те саме, що progressive web app (PWA), хоча PWA може бути SPA. Також не кожному SPA потрібен спеціальний підхід: якщо контент є статичним і включений у початковий HTML, це нормально. Проблеми виникають, коли контент завантажується асинхронно після взаємодії з користувачем або коли сторінка використовує клієнтську маршрутизацію. SPAs часто плутають із multi-page applications (MPAs), оскільки обидва типи можуть мати кілька URL. Різниця полягає в тому, що SPA не запитує новий HTML-документ для кожного маршруту; вона перезаписує поточний. Ця відмінність важлива для SEO, оскільки кожен маршрут в SPA має бути окремим URL, який повертає той самий HTML-каркас.
06Практичний приклад
Уявіть собі e-commerce SPA, яка завантажує сторінку товару. Початковий HTML містить лише хедер і футер. Назва товару, опис і ціна завантажуються через API та вставляються в DOM через кілька секунд. Googlebot рендерить сторінку, але контент відсутній у початковому HTML. Щоб виправити це, ви можете впровадити server-side rendering для сторінки товару: сервер повертає повний HTML із деталями товару. Тепер Googlebot бачить контент одразу, і сторінку можна індексувати. Як альтернативу, ви можете використовувати dynamic rendering, щоб надавати ботам статичний HTML-знімок.
07Поширені запитання
Чим single-page application відрізняється від звичайного вебсайту?
Звичайний вебсайт завантажує нову HTML-сторінку для кожного переходу, тоді як single-page application завантажує одну HTML-оболонку та динамічно оновлює контент за допомогою JavaScript. Це змінює те, як пошукові системи сканують і рендерять ваш контент, оскільки їм потрібно виконувати JavaScript, щоб побачити повну сторінку.
Чи варто мені створювати свій сайт як single-page application, якщо мене турбує SEO?
Це залежить від мети. Якщо вам потрібен високорівнево інтерактивний додаток, single-page application може працювати, але ви повинні впровадити server-side rendering або prerendering, щоб зробити контент видимим для пошукових систем. Для сайтів із великою кількістю контенту традиційний багатосторінковий підхід є простішим і надійнішим для SEO.
Як пошукові системи сканують і рендерять single-page application?
Google використовує двофазний процес: спочатку він завантажує сирий HTML, а потім виконує JavaScript за допомогою headless-браузера, щоб відрендерити сторінку. Індексується саме відрендерений HTML, тому вам потрібно переконатися, що ваш JavaScript доступний для сканування, а критично важливий контент доступний без необхідності виконання скриптів.
Чи рендерить Google досі JavaScript і чи індексує він контент Single-page application?
Так, Google рендерить JavaScript, але це не завжди відбувається миттєво і може потребувати багато ресурсів. Існують обмеження на кількість сторінок, які Google буде рендерити, тому безпечніше попередньо рендерити критичний контент або використовувати динамічний рендеринг, якщо у вас великий SPA.
Що станеться, якщо я не зроблю свій Single-page application доступним для сканування?
Пошукові системи побачать порожню або мінімальну HTML-сторінку, і ваш контент не буде проіндексовано. Ви помітите падіння органічного трафіку; ви можете підтвердити проблему за допомогою інструменту URL Inspection у Google Search Console, щоб побачити відрендерений HTML, який бачить Googlebot.
Скільки часу потрібно Google, щоб проіндексувати контент Single-page application після того, як я це виправлю?
Термін варіюється від кількох днів до кількох тижнів. Ви можете прискорити індексацію, надіславши URL у Google Search Console та забезпечивши швидку відповідь сервера. Стежте за інструментом URL Inspection, щоб побачити, коли відрендерений HTML відповідатиме вашому очікуваному контенту.
08Як про це питають уголос
Той самий термін словами, якими про нього питають асистента, а не набирають у рядку пошуку — написано із ситуації, тому кожне питання несе ту ситуацію, з якої виникло.
Це single-page application. HTML-оболонка мінімальна, а все інше рендериться за допомогою JavaScript, тому пошукові системи можуть не бачити ваш контент, якщо ви не зробите пререндеринг.
Це single-page application. Ймовірно, проблема саме в цьому, оскільки Google потрібно виконати JavaScript, щоб побачити контент. Щоб виправити це, вам потрібно додати server-side rendering або prerendering.
Ви маєте справу з single-page application. Перед запуском вам потрібно переконатися, що контент доступний для сканування, інакше ви втратите видимість у пошуку. Перевірте відрендерений HTML у Search Console, щоб побачити, що саме бачить Google.
Подивіться в Molfar
URL audit у Molfar порівнює сирий HTML сторінки зі сторінкою після JavaScript — title, canonical, meta robots, H1, опис, додані посилання й кількість слів — і підсвічує червоним, коли JavaScript змінює canonical чи meta robots.
Як працює цей екран (англійською)Про Molfar, наш десктопний краулер