Astro
- Use `.astro` components for static content — JavaScript only ships for interactive islands (`client:load`, `client:visible`, `client:idle`). Use content collections with `defineCollection()` and Zod schemas for type-safe Markdown/MDX. Use `getStaticPaths()` for dynamic routes in static mode.
Astro
- Use `.astro` components for static content — JavaScript only ships for interactive islands (`client:load`, `client:visible`, `client:idle`). Use content collections with `defineCollection()` and Zod schemas for type-safe Markdown/MDX. Use `getStaticPaths()` for dynamic routes in static mode.
- Choose the right client directive: `client:load` for immediately interactive, `client:visible` for lazy, `client:idle` for low-priority. Use any UI framework (React, Vue, Svelte) for islands — Astro renders them server-side and hydrates selectively. Use `Astro.props` for component props and `Astro.slots` for children. Configure output mode: `static` for SSG, `server` for SSR, `hybrid` for mixed.