---
title: "Integrated Dynamic Streaming-First Sitemap"
description: "Learn how LaunchFa.st helps you create a sitemap with the best practices with streaming."
source: "https://www.launchfa.st/features/sitemap"
author: "Rishi Raj Jain"
created_at: 2024-03-14T19:03:00.000Z
---

> **Site index for agents**
> Fetch https://www.launchfa.st/llms.txt to discover every page on this site.
> Every page is also available as Markdown by appending `.md` to its URL.

```tsx
// ...
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](https://logsnag.com/blog/implementing-isr-in-astro).
