Sitelet https://github.com/supabase/supabase/pull/49533
Skip to content

feat(www): homepage json-ld, canonical, 404 links - #49533

Draft
pamelachia wants to merge 5 commits into
masterfrom
pamela/growth-1124-agent-readiness-jsonld-404
Draft

feat(www): homepage json-ld, canonical, 404 links#49533
pamelachia wants to merge 5 commits into
masterfrom
pamela/growth-1124-agent-readiness-jsonld-404

Conversation

@pamelachia

@pamelachia pamelachia commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

An agent-readiness scan of supabase.com (is-agentic.com, public report) flagged that the homepage serves no structured data and no canonical tag in raw HTML, and that the 404 page gives crawlers and agents no recovery path. I fixed both.

Changed:

  • Homepage structured data: the raw HTML now carries Organization and WebSite JSON-LD plus <link rel="canonical" href="/sitelet?url=https%3A%2F%2Fsupabase.com%2F">. The schema builders already existed in lib/json-ld.ts but were never wired to any page; this reuses the exact inline-script pattern from the blog post pages. The canonical is hardcoded to the production origin on purpose: SITE_ORIGIN resolves to the branch URL on previews.
  • 404 recovery links: the 404 body now links to the docs, the sitemap, and llms.txt, so a dead URL leads somewhere instead of a dead end. The decorative giant "404" backdrop is a div instead of a second h1, marked aria-hidden, and gets pointer-events-none: browser testing showed the absolutely positioned backdrop was silently swallowing clicks on the new links (positioned elements paint above static siblings for hit-testing even when visually behind).
  • Drift-guard test: md-alternates.test.ts asserted the literal one-liner alternates: mdAlternates('<slug>'), which the canonical wrapper breaks. I broadened the assertion to accept the spread shape too; the rule it guards (every markdown-served slug advertises its .md sibling) is unchanged and still enforced.

To test

Tested locally against the dev server:

  • curl -s localhost:3000 and parse the two application/ld+json blocks: both valid JSON, types Organization and WebSite
  • curl -s localhost:3000 | grep canonical: expect <link rel="canonical" href="/sitelet?url=https%3A%2F%2Fsupabase.com%2F"/>, with the existing text/markdown alternate link still present
  • curl -s localhost:3000/some-nonexistent-page: expect HTTP 404 with hrefs to /docs, /sitemap.xml, /llms.txt and exactly one <h1> in the body

On the Vercel preview (verified via curl + Playwright browser run):

  • View source on the preview homepage: the two JSON-LD blocks present and a canonical pointing at https://supabase.com (prod origin, even on the preview host)
  • Open a nonexistent preview URL: 404 page renders the new link row under the "Head back" button, visually unchanged otherwise (screenshots in session records)
  • Added: click each recovery link: element hit-testing returns the anchor for all three, and clicking Sitemap navigates to a valid /sitemap.xml document (this check caught the pointer-events regression, fixed in this PR)

Linear

  • Part of GROWTH-1124 (kept open: remaining scan findings are tracked in a sub-issue)

@pamelachia pamelachia self-assigned this Aug 25, 2026
@vercel

vercel Bot commented Aug 25, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
zone-www-dot-com Ready Ready Preview, v0 Aug 25, 2026 10:01am
6 Skipped Deployments
Project Deployment Actions Updated (UTC)
studio Ignored Ignored Aug 25, 2026 10:01am
design-system Skipped Skipped Aug 25, 2026 10:01am
docs Skipped Skipped Aug 25, 2026 10:01am
studio-self-hosted Skipped Skipped Aug 25, 2026 10:01am
studio-staging Skipped Skipped Aug 25, 2026 10:01am
ui-library Skipped Skipped Aug 25, 2026 10:01am

Request Review

@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant