From 8a33c094b4ab52d3a93c3d3ba26cdf2eb5bba034 Mon Sep 17 00:00:00 2001 From: "claude[bot]" <209825114+claude[bot]@users.noreply.github.com> Date: Wed, 19 Aug 2026 23:15:29 +0100 Subject: [PATCH] chore(www): add /evals to the sitemap (#49226) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Requested by **Sean Oliver** · [Slack thread](https://supabase.slack.com/archives/C07P3AU3J2D/p1787036390117589?thread_ts=1787036390.117589&cid=C07P3AU3J2D)_ ## I have read the [CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md) file. YES ## What kind of change does this PR introduce? Chore. One entry added to the www sitemap generator. ## What is the current behavior? `https://supabase.com/evals` is missing from `sitemap_www.xml`, so search crawlers are never told the page exists. `robots.txt` doesn't block it, they just have no way to find it from the sitemap. The reason is that `/evals` is served by a separate Vercel project and only reaches supabase.com through a proxy rewrite in `apps/www/lib/rewrites.js`: ```js { source: '/evals', destination: 'https://supabase-evals.vercel.app', }, ``` `apps/www/internals/generate-sitemap.mjs` builds its URL list by globbing local route source files (`pages/**`, `_blog/*.mdx`, prerendered `.next/server/pages/**`, etc.) and never resolves rewrites. There is no page file behind `/evals`, so the globs can't discover it. Closes GROWTH-1113. ## What is the new behavior? `https://supabase.com/evals` appears once in the generated `sitemap_www.xml`, with the same `weekly` and `0.5` as every other entry in the file (no entry in this sitemap carries a ``). The entry is a small named const spread into the final `urlset` join, next to `changelogDetailUrls` — the existing precedent in this file for URLs with no page file behind them. Nothing else in the script changed, and the sitemap index output (`sitemap.xml`) is byte-identical. ```diff + // /evals is a separate app proxied onto supabase.com via a rewrite in lib/rewrites.js, + // so it has no page file for the globs above to find. Hardcode it here. + const proxiedAppUrls = [ + ` + + https://supabase.com/evals + weekly + 0.5 + + `, + ] + const sitemap = ` - ${[...staticUrls, ...changelogDetailUrls].join('')} + ${[...staticUrls, ...changelogDetailUrls, ...proxiedAppUrls].join('')} ` ``` This only makes the URL discoverable. Whether the page content itself is crawlable is separate work, tracked in the evals repo. ## Additional context Verification, run locally against this branch. The generator runs standalone (`node ./internals/generate-sitemap.mjs` from `apps/www`); a missing `.next` just means the globs match fewer pages, and the missing changelog RSS is caught internally. I generated `sitemap_www.xml` from `master` and from this branch and diffed the two. The added entry is the only difference: ``` 3271a3272,3277 > > > https://supabase.com/evals > weekly > 0.5 > ``` Exactly one occurrence, with its neighbouring entry for context: ``` $ grep -c 'https://supabase.com/evals' public/sitemap_www.xml 1 https://supabase.com/terms weekly 0.5 https://supabase.com/evals weekly 0.5 ``` Other checks: - Both outputs parse as well-formed XML (Python `xml.dom.minidom`): `sitemap_www.xml` has 545 `` elements, `sitemap.xml` parses OK. - `sitemap.xml` (the sitemap index) is identical to the pre-change output; `diff` reports no changes. - `npx prettier --check internals/generate-sitemap.mjs` → "All matched files use Prettier code style!" - Both generated sitemaps are gitignored (`apps/www/.gitignore` lines 29-30), confirmed with `git check-ignore`. `git status` shows only `apps/www/internals/generate-sitemap.mjs`, so no generated file is in the commit. - No test, snapshot, or fixture anywhere in the repo references the sitemap generator, so there was nothing to run. Its only caller is `apps/www`'s `postbuild` script. Not run: `pnpm --filter=www build`. It fails during "Collecting page data" on a clean `master` checkout in this environment too, so the failure is pre-existing and unrelated, and this change needs no build to verify. Co-authored-by: Claude --- apps/www/internals/generate-sitemap.mjs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/apps/www/internals/generate-sitemap.mjs b/apps/www/internals/generate-sitemap.mjs index af7aa31cd73..939c6be54d1 100644 --- a/apps/www/internals/generate-sitemap.mjs +++ b/apps/www/internals/generate-sitemap.mjs @@ -139,10 +139,22 @@ async function generate() { } })() + // /evals is a separate app proxied onto supabase.com via a rewrite in lib/rewrites.js, + // so it has no page file for the globs above to find. Hardcode it here. + const proxiedAppUrls = [ + ` + + https://supabase.com/evals + weekly + 0.5 + + `, + ] + const sitemap = ` - ${[...staticUrls, ...changelogDetailUrls].join('')} + ${[...staticUrls, ...changelogDetailUrls, ...proxiedAppUrls].join('')} `