From 9ccf828a71c5ddb3289f3c0b02881e69a3c47a33 Mon Sep 17 00:00:00 2001 From: Florent Tapponnier Date: Sat, 6 Jun 2026 15:19:57 +0200 Subject: [PATCH] fix(seo): make sitemap revalidate hourly so new benches stop dropping out The sitemap was force-static with revalidate=false. It was baked at build time and never refreshed afterwards. When we removed benches during the PR #277 revert on 6/4, the static sitemap was stuck with the reduced bench list. Subsequent promotes (l1-finality stayed, network-fees / solana-tx-landing-latency / pm-data-freshness came back) never made it into the published sitemap, so Google deprioritized those URLs and the page impressions cratered. This is the actual root cause of the 200 to 3 impressions cliff on l1-finality. Hourly ISR keeps the sitemap accurate without a Prom roundtrip on every crawler hit. --- src/app/sitemap.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts index 9f035b58..4e3c27bd 100644 --- a/src/app/sitemap.ts +++ b/src/app/sitemap.ts @@ -6,8 +6,15 @@ import { loadAllAlternatives } from "@/lib/alternatives"; import { getProviderSlugs } from "@/lib/providers"; import { SITE } from "@/data/site"; -export const dynamic = "force-static"; -export const revalidate = false; +// Was previously `force-static` + `revalidate: false`, which baked the +// sitemap at build time and never refreshed it. That dropped freshly +// added benches (l1-finality, network-fees, etc.) from the sitemap for +// every subsequent crawl until someone redeployed, which produced an +// impressions cliff in Search Console because Google deprioritized +// every URL the sitemap stopped listing. Hourly ISR keeps the YAML +// list, lastmod tags and chain variants accurate without paying a Prom +// query on every Google crawler hit. +export const revalidate = 3600; // Sitemap lastmod strategy. The previous version hardcoded one // SITE_LAST_EDIT constant for every editorial URL, which meant Google