<b>The pages that ranked, then quietly vanished</b>
A travel marketplace lost 40% of long-tail rankings in six weeks. No algorithm update, no manual action, no robots.txt change.
The symptom was strange: pages that ranked fine in March were gone in April, but only ones reached through in-app navigation. Direct URLs still indexed.
We pulled the rendered HTML from the URL Inspection tool. The pages rendered perfectly. So we crawled the way Googlebot does — fresh session, no client-side state.
Turns out their router used <code>history.pushState</code> but the new view fetched content keyed to a context object that only existed if you arrived from the homepage. Land cold on the URL, and the component mounted with an empty state, then rendered a 'session expired' shell. Googlebot always lands cold.
The rendered DOM Google stored was the empty shell. The March snapshot predated a refactor that introduced the context dependency.
Fix: hydrate from the URL params, not from in-memory navigation state. Every route became self-sufficient.
Result: -40% long-tail recovered to +9% over 11 weeks, and 6,200 previously soft-404'd URLs returned to the index.
Hydrate Diaries
@HydrateDiaries
<b>The pages that ranked, then quietly vanished</b>
Этот пост опубликован в Telegram-канале Hydrate Diaries. Подписаться можно по ссылке: @HydrateDiaries.