Source: https://seerepo.com/r/withastro/astro/built
Markdown source: https://seerepo.com/r/withastro/astro/built.md
Description: astro is a TypeScript repo built with Vite, Hono, Express, Fastify, Preact, and 5 more.

# What is astro built with?

astro is a TypeScript repo built with Vite, Hono, Express, Fastify, Preact, and 5 more. It makes its content with prismjs, fast-xml-parser, xml2js, Cheerio, parse-srcset, and 25 more, validates its data with Zod, is tested with @playwright/test, node-mocks-http, Vitest, and Mocha, and deploys with Netlify and Vercel. It has 293,247 written lines, with 3,163 test files.

Read on November 5, 2026, at commit ff1e2fb.

Repository: https://github.com/withastro/astro

## Support (packages/astro-prism)

### Content

- **prismjs**: 4 files

## Support (packages/astro-rss)

### Content

- **fast-xml-parser**: 1 file
- **xml2js**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 2 files

## Frontend (packages/astro)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: 97 files

### Interface

- **[@clack/prompts](https://seerepo.com/uses/clack-prompts)**: 3 files

## Support (packages/astro)

### The base

- **[Hono](https://seerepo.com/uses/hono)**: 4 files

### Content

- **[Cheerio](https://seerepo.com/uses/cheerio)**: 183 files
- **parse-srcset**: 4 files
- **[shiki](https://seerepo.com/uses/shiki)**: 4 files
- **[sharp](https://seerepo.com/uses/sharp)**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 30 files

### Testing

- **@playwright/test**: 49 files
- **node-mocks-http**: 2 files
- **Vitest**: 1 file

### Tools

- **expect-type**: 10 files
- **magic-string**: 4 files
- **@astrojs/compiler-rs**: 3 files
- **ci-info**: 3 files
- **package-manager-detector**: 3 files
- **tinyglobby**: 2 files
- **TypeScript**: 2 files
- **es-module-lexer**: 1 file
- **get-tsconfig**: 1 file
- **magicast**: 1 file
- **Rolldown**: 1 file
- **SVGO**: 1 file

### Other

- **devalue**: 8 files
- **xxhash-wasm**: 4 files
- **mrmime**: 3 files
- **picomatch**: 3 files
- **smol-toml**: 3 files
- **yargs-parser**: 3 files
- **clsx**: 2 files
- **p-limit**: 2 files
- **tinyexec**: 2 files
- **@oslojs/encoding**: 1 file
- **aria-query**: 1 file
- **axobject-query**: 1 file
- **cookie**: 1 file
- **diff**: 1 file
- **flattie**: 1 file
- **github-slugger**: 1 file
- **jsonc-parser**: 1 file
- **neotraverse**: 1 file
- **obug**: 1 file
- **p-queue**: 1 file
- **tinyclip**: 1 file
- **undici**: 1 file

## Frontend (packages/integrations/alpinejs)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: 1 file

## Support (packages/integrations/alpinejs)

### Testing

- **@playwright/test**: 4 files

## Frontend (packages/integrations/cloudflare)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: 7 files

## Support (packages/integrations/cloudflare)

### Content

- **[Cheerio](https://seerepo.com/uses/cheerio)**: 16 files
- **prismjs**: 1 file

### Tools

- **Cloudflare**: 6 files
- **tinyglobby**: 1 file
- **wrangler**: 1 file

### Other

- **devalue**: 3 files

## Frontend (packages/integrations/markdoc)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: 1 file

## Support (packages/integrations/markdoc)

### Content

- **linkedom**: 14 files
- **htmlparser2**: 1 file

### Tools

- **Rolldown**: 1 file

### Other

- **devalue**: 1 file
- **github-slugger**: 1 file

## Frontend (packages/integrations/mdx)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: 2 files

## Support (packages/integrations/mdx)

### Content

- **linkedom**: 16 files
- **[Cheerio](https://seerepo.com/uses/cheerio)**: 5 files
- **satteri**: 2 files
- **@shikijs/rehype**: 1 file
- **rehype-mathjax**: 1 file
- **rehype-pretty-code**: 1 file
- **remark-math**: 1 file
- **remark-toc**: 1 file
- **[unified](https://seerepo.com/uses/unified)**: 1 file
- **[unist-util-visit](https://seerepo.com/uses/unist-util-visit)**: 1 file

### Tools

- **@shikijs/twoslash**: 1 file
- **es-module-lexer**: 1 file

## Frontend (packages/integrations/netlify)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: 2 files

## Support (packages/integrations/netlify)

### Content

- **[Cheerio](https://seerepo.com/uses/cheerio)**: 2 files

### Deploy

- **Netlify**: 3 files

### Tools

- **Rolldown**: 1 file
- **tinyglobby**: 1 file
- **[Vercel](https://seerepo.com/uses/vercel)**: 1 file

### Other

- **devalue**: 1 file

## Backend (packages/integrations/node)

### The base

- **[Express](https://seerepo.com/uses/express)**: 2 files

## Support (packages/integrations/node)

### The base

- **Fastify**: 2 files

### Content

- **[Cheerio](https://seerepo.com/uses/cheerio)**: 9 files

### Testing

- **node-mocks-http**: 1 file

### Other

- **devalue**: 1 file
- **send**: 1 file

## Support (packages/integrations/partytown)

### Other

- **@qwik.dev/partytown**: 1 file
- **mrmime**: 1 file

## Frontend (packages/integrations/preact)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: 2 files

## Support (packages/integrations/preact)

### The base

- **[Preact](https://seerepo.com/uses/preact)**: 4 files
- **preact-render-to-string**: 1 file

### Tools

- **@preact/preset-vite**: 1 file

### Other

- **@preact/signals**: 1 file
- **devalue**: 1 file

## Frontend (packages/integrations/react)

### The base

- **[React](https://seerepo.com/uses/react)**: 7 files
- **[Vite](https://seerepo.com/uses/vite)**: 2 files

## Support (packages/integrations/react)

### Content

- **[Cheerio](https://seerepo.com/uses/cheerio)**: 3 files

### Tools

- **@rolldown/plugin-babel**: 1 file
- **@vitejs/plugin-react**: 1 file
- **Babel**: 1 file

### Other

- **devalue**: 1 file

## Support (packages/integrations/sitemap)

### Content

- **xml2js**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 3 files

### Tools

- **sitemap**: 5 files

## Frontend (packages/integrations/solid)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: 1 file

## Support (packages/integrations/solid)

### The base

- **Solid**: 2 files

### Tools

- **vite-plugin-solid**: 1 file

## Frontend (packages/integrations/svelte)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 2 files
- **[Vite](https://seerepo.com/uses/vite)**: 1 file

## Support (packages/integrations/svelte)

### Content

- **[Cheerio](https://seerepo.com/uses/cheerio)**: 4 files

### Tools

- **@sveltejs/vite-plugin-svelte**: 1 file
- **svelte2tsx**: 1 file

## Frontend (packages/integrations/vercel)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: 1 file

## Support (packages/integrations/vercel)

### Content

- **[Cheerio](https://seerepo.com/uses/cheerio)**: 1 file

### Deploy

- **[Vercel](https://seerepo.com/uses/vercel)**: 1 file

### Tools

- **@vercel/nft**: 1 file
- **Rolldown**: 1 file
- **tinyglobby**: 1 file

## Frontend (packages/integrations/vue)

### The base

- **[Vue](https://seerepo.com/uses/vue)**: 4 files
- **[Vite](https://seerepo.com/uses/vite)**: 1 file

## Support (packages/integrations/vue)

### Content

- **linkedom**: 3 files
- **[Cheerio](https://seerepo.com/uses/cheerio)**: 2 files

### Tools

- **@vue/compiler-sfc**: 2 files
- **vite-plugin-vue-devtools**: 1 file
- **vitejs**: 1 file

## Support (packages/internal-helpers)

### Content

- **[shiki](https://seerepo.com/uses/shiki)**: 4 files
- **[unified](https://seerepo.com/uses/unified)**: 2 files
- **[yaml](https://seerepo.com/uses/yaml)**: 2 files

### Other

- **picomatch**: 1 file
- **smol-toml**: 1 file

## Support (packages/language-tools/astro-check)

### Tools

- **chokidar**: 1 file
- **yargs**: 1 file

### Other

- **kleur**: 1 file

## Support (packages/language-tools/language-server)

### Tools

- **TypeScript**: 11 files
- **volar**: 10 files
- **vscode-html-languageservice**: 8 files
- **Prettier**: 1 file
- **tinyglobby**: 1 file

### Other

- **vscode-uri**: 15 files

## Support (packages/language-tools/ts-content-mapper)

### Other

- **vscode-jsonrpc**: 1 file

## Support (packages/language-tools/ts-plugin)

### Testing

- **Mocha**: 3 files

### Tools

- **volar**: 4 files
- **TypeScript**: 3 files
- **@jridgewell/sourcemap-codec**: 1 file
- **vscode-languageserver-textdocument**: 1 file

## Support (packages/language-tools/yaml2ts)

### Content

- **[yaml](https://seerepo.com/uses/yaml)**: 1 file

### Tools

- **@volar/language-core**: 1 file

## Support (packages/markdown/remark)

### Content

- **vfile**: 9 files
- **[unified](https://seerepo.com/uses/unified)**: 8 files
- **[unist-util-visit](https://seerepo.com/uses/unist-util-visit)**: 7 files
- **mdast-util-mdx**: 4 files
- **mdast-util-mdx-jsx**: 4 files
- **[rehype-raw](https://seerepo.com/uses/rehype-raw)**: 2 files
- **[remark-gfm](https://seerepo.com/uses/remark-gfm)**: 2 files
- **remark-smartypants**: 2 files
- **hast-util-to-html**: 1 file
- **hast-util-to-text**: 1 file
- **rehype-stringify**: 1 file
- **remark**: 1 file
- **[remark-parse](https://seerepo.com/uses/remark-parse)**: 1 file
- **[shiki](https://seerepo.com/uses/shiki)**: 1 file
- **unist-util-visit-parents**: 1 file

### Tools

- **acorn**: 1 file
- **MDX**: 1 file
- **Rolldown**: 1 file
- **source-map**: 1 file

### Other

- **github-slugger**: 1 file

## Support (packages/markdown/satteri)

### Content

- **satteri**: 7 files

### Other

- **github-slugger**: 1 file

## Support (packages/telemetry)

### Tools

- **ci-info**: 2 files
- **package-manager-detector**: 1 file

### Other

- **is-docker**: 1 file

## Support (packages/upgrade)

### Tools

- **package-manager-detector**: 3 files

## Other repos with a similar stack

- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): Vite, React, Zod, Cheerio, shiki, unified, unist-util-visit, Vercel, vfile, remark-gfm, remark, remark-parse · [Compare](https://seerepo.com/compare/supabase/supabase/vs/withastro/astro)
- [meta/docusaurus](https://seerepo.com/r/meta/docusaurus/built): React, prismjs, Cheerio, sharp, unified, unist-util-visit, vfile, mdast-util-mdx, rehype-raw, remark-gfm, rehype-stringify, remark · [Compare](https://seerepo.com/compare/meta/docusaurus/vs/withastro/astro)
- [storybookjs/storybook](https://seerepo.com/r/storybookjs/storybook/built): Vite, Preact, React, Svelte, Vue, Zod, @clack/prompts, yaml, mdast-util-mdx, mdast-util-mdx-jsx · [Compare](https://seerepo.com/compare/storybookjs/storybook/vs/withastro/astro)
- [cline/cline](https://seerepo.com/r/cline/cline/built): Vite, React, Zod, @clack/prompts, Cheerio, shiki, unified, unist-util-visit, yaml, remark-gfm · [Compare](https://seerepo.com/compare/cline/cline/vs/withastro/astro)
- [thedotmack/claude-mem](https://seerepo.com/r/thedotmack/claude-mem/built): Vite, Express, React, Zod, @clack/prompts, sharp, unified, unist-util-visit, remark-parse · [Compare](https://seerepo.com/compare/thedotmack/claude-mem/vs/withastro/astro)
- [nocodb/nocodb](https://seerepo.com/r/nocodb/nocodb/built): Express, React, Vue, Zod, sharp, unified, rehype-stringify, remark, remark-parse · [Compare](https://seerepo.com/compare/nocodb/nocodb/vs/withastro/astro)

## Frequently asked questions

### What language is astro written in?

astro is written in TypeScript, with 293,247 written lines.

### What framework does astro use?

astro is built with Vite, Hono, Express, Fastify, Preact, preact-render-to-string, React, Solid, Svelte, and Vue.

### Does astro have tests?

Yes. astro has 3,163 test files and is tested with @playwright/test, node-mocks-http, Vitest, and Mocha.

### Which repos have a stack like astro's?

The ones that share most of its stack: supabase/supabase, meta/docusaurus, and storybookjs/storybook.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
