LaunchFast Logo LaunchFast

Integrated Dynamic Streaming-First Sitemap

Rishi Raj Jain
// ...
import { SitemapStream, streamToPromise } from 'sitemap'
export async function GET() {
const hostname = 'https://www.launchfa.st'
const smStream = new SitemapStream({ hostname })
const slugs = [/* static slugs */]
try {
slugs.forEach((url) => {
smStream.write({ /* url config */ })
})
// ...
smStream.end()
const sitemap = await streamToPromise(smStream)
return webResponse(sitemap, 200, {
'Content-Type': 'text/xml',
})
} catch (e: any) {
// handle errors
}
}

LaunchFa.st comes with a sitemap.xml.ts Astro endpoint that creates a sitemap as a streaming response, making it available to crawlers such as Google as soon as they request the page. This was quickly done with the help of sitemap package on npm: https://npmjs.com/package/sitemap.

With Astro’s prerender configuration flag per page or endpoint, the sitemaps can also be pre-rendered and also later be statically re-generated using ISR.

Learn More Authenticating users in Astro with Better Auth: A Step-by-Step Guide
Authenticating users in Astro with Better Auth: A Step-by-Step Guide November 24, 2024
Astro vs Next.js: Choosing the Right Framework in 2024
Astro vs Next.js: Choosing the Right Framework in 2024 October 30, 2024
6 Essential Features Every Web Starter Kit Should Include
6 Essential Features Every Web Starter Kit Should Include October 26, 2024