Astro

The web framework for building fast, content-driven websites with islands architecture.

Framework
npm
v7.4.2
63,426 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
92 /100 Excellent
Development Activity 100
Maintenance 100
Community 68
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
89 /100 Excellent
Architecture 92
Code Quality 90
Innovation 85
Learning Curve 78

Astro is a full-stack web framework for building fast, content-focused websites — blogs, marketing sites, documentation, e-commerce storefronts — that ship minimal JavaScript by default. It renders components to static HTML at build time or on the server, then selectively hydrates only the interactive pieces on the client (its “islands architecture”), so pages stay fast without sacrificing rich UI where it’s needed.

Unlike single-framework tools, Astro lets you mix and match UI libraries — React, Vue, Svelte, Solid, Preact, and more — in the same project via official integrations, while its own .astro component format handles everything else with plain HTML-like syntax and zero client-side runtime cost. A large first-party integration ecosystem (adapters for Node, Vercel, Netlify, Cloudflare; plugins for sitemaps, RSS, MDX, image optimization) and an actively maintained CLI (create-astro) round out a batteries-included but framework-agnostic developer experience.

What You Get

  • Islands architecture rendering that ships zero JS by default and hydrates only the components that need interactivity
  • File-based routing, content collections with type-safe frontmatter schemas (via Zod), and built-in Markdown/MDX support
  • First-party framework integrations for React, Vue, Svelte, Solid, Preact, and Alpine.js, usable side-by-side in one project
  • Deployment adapters for Node, Vercel, Netlify, and Cloudflare plus built-in image optimization, sitemap, and RSS integrations
  • A CLI (create-astro) and typed astro.config.mjs for fast project scaffolding and configuration

Common Use Cases

  • Content-heavy marketing sites and landing pages that need top-tier Core Web Vitals scores
  • Technical documentation sites and blogs built from Markdown/MDX content collections
  • E-commerce storefronts and portfolios that mix static content with a handful of interactive widgets
  • Migrating an existing React/Vue/Svelte app to a faster, mostly-static architecture without rewriting all components

Under The Hood

Architecture: Astro is built on top of Vite, using a network of custom Vite plugins (vite-plugin-astro, vite-plugin-markdown, vite-plugin-astro-server, vite-plugin-pages, vite-plugin-integrations-container, etc. under packages/astro/src/vite-plugin-*) to compile .astro single-file components — parsed via the Rust-based @astrojs/compiler-rs — into renderable server output. Page discovery and routing happen through src/core/routing and src/vite-plugin-pages, while src/core/render and src/core/app implement the request pipeline that stitches together server islands, middleware (src/core/middleware), and the islands-architecture client hydration runtime (src/runtime/client/{idle,load,media,only,visible}.ts) that ships zero JS by default and only hydrates interactive components on demand. Build output is orchestrated from src/core/build, dev server behavior from src/core/dev, and static/SSR output modes are unified behind a common adapter interface consumed by first-party integrations like @astrojs/node, @astrojs/vercel, and @astrojs/cloudflare living alongside the core package in the same monorepo.

Tech Stack: The core astro package (packages/astro) is TypeScript-first (94% of the repo by bytes) and depends directly on Vite 8 for its dev server/bundling, Shiki for syntax highlighting, Zod 4 for config/schema validation, esbuild for fast transforms, and its own @astrojs/compiler-rs Rust compiler for .astro file parsing. Workspace-internal packages (@astrojs/markdown-satteri, @astrojs/telemetry, @astrojs/internal-helpers) are pulled in via the pnpm workspace protocol, and the monorepo is managed with pnpm workspaces plus Turborepo (turbo.json), Changesets for versioning, Biome/ESLint plus Prettier for linting and formatting, and ships an official CLI (create-astro) as a separately published package for project scaffolding.

Code Quality: The package carries an unusually large test suite for the ecosystem — 461 *.test.ts files under packages/astro/test alone, split into unit tests (test/units), integration tests (test/*.test.ts, run in parallel via a custom astro-scripts test runner), full browser E2E tests (Playwright, both Chromium and Firefox configs), and a dedicated test:types pass that type-checks against test/types/tsconfig.json. The codebase is strict TypeScript throughout with typed error classes centralized in src/core/errors, and CI (GitHub Actions, ci.yml) gates merges on the full unit, integration, and type-check suite.

API Design: Astro’s public surface is deliberately layered — astro dev/astro build/astro preview as the day-one CLI, a single astro.config.mjs with a fully-typed defineConfig() helper, and dozens of explicit subpath exports (astro/config, astro/loaders, astro/actions/runtime, etc., all declared in package.json exports) rather than one large default export, which keeps IDE autocomplete and tree-shaking predictable at the cost of a larger surface to learn. The framework leans on convention (file-based routing, .astro components that mix familiar HTML/JSX-like syntax with frontmatter) to minimize boilerplate for the common case, and npm create astro@latest gives a zero-to-running-dev-server onboarding path in one command, backed by an extensive external docs site (docs.astro.build) and 25 first-party example projects in examples/ covering everything from minimal setups to full framework integrations (React, Vue, Svelte, Solid, Preact, Alpine).

Used by 120 apps in this directory

Rust
53%
Apache 2.0

cocoindex

AI Development · Data Engineering

11,746

An incremental data indexing engine that keeps AI agent context perpetually fresh by reprocessing only what changed.

View details
86
Repo Health
85
Technical
65
Dependency
Built with
Rust 53%
Python 47%
Updated 6 days ago
Rust
53%
Apache 2.0

cocoindex

AI Development · Data Engineering

11,746

An incremental data indexing engine that keeps AI agent context perpetually fresh by reprocessing only what changed.

View details
86
Repo Health
85
Technical
65
Dependency
Built with
Rust 53%
Python 47%
Updated 6 days ago
Rust
53%
Apache 2.0

cocoindex

AI Development · Data Engineering

11,746

An incremental data indexing engine that keeps AI agent context perpetually fresh by reprocessing only what changed.

View details
86
Repo Health
85
Technical
65
Dependency
Built with
Rust 53%
Python 47%
Updated 6 days ago
C
80%
MIT

codegraph

AI Code Assistants · Developer Tools

75,120

A pre-indexed code knowledge graph that cuts AI tool calls by 58% and token costs by 16% — auto-syncing, 100% local, works with Claude Code, Cursor, Codex, and more.

View details
84
Repo Health
85
Technical
70
Dependency
Built with
C 80%
TypeScript 18%
Updated 5 days ago
TypeScript
93%
AGPL 3.0

CourseLit

Blogging · Ecommerce

1,284

Open-source, self-hosted LMS for selling online courses, digital downloads, and building communities on your own branded website.

View details
63
Repo Health
74
Technical
67
Dependency
Built with
TypeScript 93%
Updated 6 days ago
TypeScript
93%
AGPL 3.0

CourseLit

Blogging · Ecommerce

1,284

Open-source, self-hosted LMS for selling online courses, digital downloads, and building communities on your own branded website.

View details
63
Repo Health
74
Technical
67
Dependency
Built with
TypeScript 93%
Updated 6 days ago
TypeScript
93%
AGPL 3.0

CourseLit

Blogging · Ecommerce

1,284

Open-source, self-hosted LMS for selling online courses, digital downloads, and building communities on your own branded website.

View details
63
Repo Health
74
Technical
67
Dependency
Built with
TypeScript 93%
Updated 6 days ago
TypeScript
64%
Other

Epicenter

Developer Tools · Knowledge Management · Note Taking

4,825

A local-first monorepo led by Whispering, an open-source speech-to-text app, built on an MIT toolkit that turns your data into plain Markdown and SQLite files you own instead of a database you rent.

View details
87
Repo Health
90
Technical
64
Dependency
Built with
TypeScript 64%
Rust 15%
Updated 1 weeks ago
TypeScript
64%
Other

Epicenter

Developer Tools · Knowledge Management · Note Taking

4,825

A local-first monorepo led by Whispering, an open-source speech-to-text app, built on an MIT toolkit that turns your data into plain Markdown and SQLite files you own instead of a database you rent.

View details
87
Repo Health
90
Technical
64
Dependency
Built with
TypeScript 64%
Rust 15%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers