1. Documentation
  2. Tutorials
  3. rss.xml
ReadmeGitHub
  • Introduction
  • Quickstart
  • Text
  • Code
  • Lists
  • Tables
  • Accordion
  • Badge
  • Button
  • Callout
  • Code Block
  • Code Block Group
  • Code Snippet
  • Columns
  • Custom components
  • GitHub
  • Hover Card
  • Mermaid
  • Properties
  • Related Topics
  • Tabs
  • Tree
  • Images
  • Video
  • Files
  • Grain
  • Shade
  • Moss
  • Heyo
  • Configuration
  • Content
  • Navigation
  • Site Identity
  • Appearance
  • Header and Footer
  • Fonts
  • Icons
  • Integrations
  • Search
  • OpenAPI
  • AI Chat
  • React Router
  • Astro
  • Next.js
  • Cloudflare
  • Vercel
  • robots.txt
  • sitemap.xml
  • JSON-LD
  • rss.xml
  • llms.txt
  • llms-full.txt
  • .md endpoints

rss.xml

Publish an RSS 2.0 feed for changelog updates defined in your Heyo Docs content.

Included with create-heyo-docs

This is already configured in projects created with create-heyo-docs. No action is required if you used the creator to install Heyo Docs.

Heyo Docs publishes an RSS 2.0 feed at /rss.xml from the <Update> entries in configured changelog pages. Regular documentation pages are deliberately not included, so subscribers receive product updates rather than every content edit.

Configure a changelog

Add a changelog group and point updates to the MDX page that contains its entries. Set siteUrl at the same time so feed item links use the production origin.

heyo-docs.config.ts
export default heyoDocs({
  siteUrl: "https://docs.example.com",
  groups: [
    {
      group: "Changelog",
      type: "changelog",
      updates: ["changelog"],
    },
  ],
  // ...
});

Each update needs a label. A date is optional, but lets the feed publish an RSS pubDate; tags become RSS categories.

content/changelog.mdx
---
title: Changelog
---

# Changelog

<Update label="Version 2.4" date="2026-08-24" tags={["New releases", "Search"]}>

## Faster documentation search

Improved result ranking for API operations.

</Update>

The generated item URL includes the update anchor, for example https://docs.example.com/changelog#version-2-4. Feed text is XML-escaped and the response uses application/rss+xml; charset=utf-8.

Add the route

Generate the feed from the server-side page registry with rssXml(). Do not copy changelog data into a separate feed: the registry keeps the feed and UI in sync.

React Router

Register the resource route before the documentation catch-all:

app/routes.ts
route("rss.xml", "routes/rss.ts"),
route("*", "routes/page.tsx"),

Then create app/routes/rss.ts:

app/routes/rss.ts
import { rssXml } from "@heyo-sh/heyo-docs/rss";
import type { LoaderFunctionArgs } from "react-router";

import config from "../../heyo-docs.config";
import { pages } from "virtual:heyo-docs-content/server";

export function loader({ request }: LoaderFunctionArgs) {
  const siteUrl = config.siteUrl ?? new URL(request.url).origin;

  return new Response(rssXml(pages, config, siteUrl), {
    headers: { "content-type": "application/rss+xml; charset=utf-8" },
  });
}

For static React Router deployments, include /rss.xml in prerender().

Astro

Create src/pages/rss.xml.ts:

src/pages/rss.xml.ts
import type { APIRoute } from "astro";
import { rssXml } from "@heyo-sh/heyo-docs/rss";

import config from "../../heyo-docs.config";
import { pages } from "virtual:heyo-docs-content/server";

export const GET: APIRoute = ({ request }) => {
  const siteUrl = config.siteUrl ?? new URL(request.url).origin;

  return new Response(rssXml(pages, config, siteUrl), {
    headers: { "content-type": "application/rss+xml; charset=utf-8" },
  });
};

Astro emits this route at build time when the project uses static output.

Next.js

Create app/rss.xml/route.ts:

app/rss.xml/route.ts
import { rssXml } from "@heyo-sh/heyo-docs/rss";

import { config, markdownPages } from "../lib/docs";

export function GET(request: Request) {
  const siteUrl = config.siteUrl ?? new URL(request.url).origin;

  return new Response(rssXml(markdownPages, config, siteUrl), {
    headers: { "content-type": "application/rss+xml; charset=utf-8" },
  });
}

The starter calls its generated server-side registry markdownPages; it is the frontmatter-free page data used by both RSS and the AI-facing resources.

JSON-LD< Previousllms.txtNext >

Powered by heyo

On this page

Configure a changelogAdd the routeReact RouterAstroNext.js