Skip to content

feat(seo): a sitemap index with named, paginated sections; lastmod and locales per prerendered page - #765

Merged
sebyx07 merged 1 commit into
mainfrom
feat/sitemap-sections-lastmod-locales
Oct 11, 2026
Merged

sebyx07 merged 1 commit into
mainfrom
feat/sitemap-sections-lastmod-locales

Conversation

@sebyx07

@sebyx07 sebyx07 commented Oct 11, 2026

Copy link
Copy Markdown
Contributor

An app with a database-driven blog, landing pages and two locales had one flat <urlset>, no <lastmod> on any dynamic page, and English entries for pages that are indexable only in the default locale.

  • Sections by configuration: seo.sitemap.sections: [{ name, match }] and pageSize turn /sitemap.xml into an index of /sitemaps/<name>-<n>.xml; unmatched routes go to pages. With no sections the output is byte-identical to 27.8.1 (pinned by sha256).
  • Per-page facts: prerender() may return { params, lastmod, locales } beside plain params. lastmod is written as a W3C datetime (a future date is clamped to now; a time without a zone is X_SITEMAP_ENTRY_INVALID); locales lists and hreflang-links the page only where it is indexable.
  • Fixed: a page that is noindex in one locale was listed and cross-linked in that locale; URLs blocked by seo.robots.disallow were listed; only the 50,000-URL cap was enforced, not 50 MB.
  • A failed refresh still keeps the previous index and its children together (tested).

Docs: wiki SEO, Configuration, Routes-And-Render-Modes (a false claim about updatedAt corrected), Error-Codes.

🤖 Generated with Claude Code

…ation; prerender() says a page's lastmod and the locales it is listed in

seo.sitemap.sections + pageSize make /sitemap.xml a <sitemapindex> of
/sitemaps/<name>-<n>.xml (unmatched pages under `pages`), served by the web
role and written by the static export from the one answer; with no sections
the output is byte-identical (hash pinned in sitemap-sections.test.ts).

prerender() may answer { params, lastmod?, locales? } beside a string or a
params object: lastmod is the page's <lastmod> (W3C Datetime, UTC; no zone is
X_SITEMAP_ENTRY_INVALID, the future is clamped to now), locales lists and
cross-links the page in those locales only. The build still renders every
routed locale.

Fixed on the way: a page whose meta is noindex in one locale was listed and
hreflang-linked in it (meta is now read per routed locale); a URL
seo.robots.disallow blocks was listed; a sitemap file past 50 MB was not split.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@developerz-ai

developerz-ai Bot commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Review did not complete

developerz.ai started reviewing this pull request and stopped before finishing: the pull request was merged or closed while it ran.

This is a failure of the review run, not a verdict on the changes — nothing here says the diff is good or bad. The run is recorded on this task's audit trail.

⏱ 6m 05s wall clock · MiniMax-M3 via minimax · 1 model call(s) · 7,744 output token(s) · slowest call 3m 56s. The slowest model call was 3m 56s of the 6m 05s wall clock.

🤖 developerz.ai — automated review, running on your box. This run did not complete.

@coderabbitai

coderabbitai Bot commented Oct 11, 2026

Copy link
Copy Markdown

Warning

Review limit reached

The included review limit has been reached and this organization has disabled usage-based review continuation. Wait for reviews to reset or ask a billing admin to change After included review limits.

  • Ask an admin to enable usage-based reviews

Open in CodeRabbit

Reviews can continue after your included limit without a manual trigger. An admin must approve usage-based billing.

Next included review available in 32 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available. Your 102 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Repository: developerz-ai/ultimate/.coderabbit.yml
  • Review profile: ASSERTIVE
  • Plan: Essentials
  • Run ID: 6557bc39-ca86-467d-914a-50ba10c45040

📥 Commits

Reviewing files that changed from the base of the PR and between 7fd5d95 and a587432.


📒 Files selected for processing (42)
  • CHANGELOG.md
  • framework.manifest.json
  • packages/cli/src/app-config-load.test.ts
  • packages/cli/src/cmd-new.test.ts
  • packages/cli/src/index.ts
  • packages/cli/src/seo-meta.ts
  • packages/cli/src/seo-routes-sections.test.ts
  • packages/cli/src/serve-graph.test.ts
  • packages/cli/src/site-config.test.ts
  • packages/cli/src/site-config.ts
  • packages/cli/src/site-seo-sections.test.ts
  • packages/cli/src/site-seo-write.ts
  • packages/cli/src/site-seo.ts
  • packages/cli/src/templates/scaffold-entries.ts
  • packages/core/src/config-site.test.ts
  • packages/core/src/config-site.ts
  • packages/core/src/config-sitemap.ts
  • packages/core/src/index.ts
  • packages/http/src/error-map-tier-1.ts
  • packages/render/README.md
  • packages/render/src/index.ts
  • packages/render/src/prerender-enumerate.test.ts
  • packages/render/src/prerender-enumerate.ts
  • packages/render/src/render-static.ts
  • packages/render/src/route.ts
  • packages/render/src/server.ts
  • packages/seo/CLAUDE.md
  • packages/seo/README.md
  • packages/seo/src/errors.ts
  • packages/seo/src/index.ts
  • packages/seo/src/robots.ts
  • packages/seo/src/routes.ts
  • packages/seo/src/sitemap-datetime.ts
  • packages/seo/src/sitemap-pages.test.ts
  • packages/seo/src/sitemap-sections.test.ts
  • packages/seo/src/sitemap-sections.ts
  • packages/seo/src/sitemap-xml.ts
  • packages/seo/src/sitemap.ts
  • wiki/Configuration.md
  • wiki/Error-Codes.md
  • wiki/Routes-And-Render-Modes.md
  • wiki/SEO.md

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@sebyx07
sebyx07 merged commit 45fca03 into main Oct 11, 2026
17 checks passed
@sebyx07
sebyx07 deleted the feat/sitemap-sections-lastmod-locales branch October 11, 2026 14:52
@sebyx07 sebyx07 mentioned this pull request Oct 11, 2026
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