Features
Everything astro-ignite ships with — what each feature does and how it works.
Every feature here is wired end-to-end on first run. Nothing is mocked, stubbed, or behind a feature flag. Below is what you get and where it lives in the tree.
Internationalization
Native i18n with one code path for monolingual and multilingual sites. Pick locales at scaffold time; the CLI generates locale-scoped routes, content collections, sitemap entries, and hreflang tags.
astro.config.mjs→i18n.localesdrives everything elsesrc/i18n/<locale>.jsonfor typed UI strings viauseTranslations()src/pages/[lang]/...mirrors the default-locale routesLocaleSwitcher.astroswaps the URL prefix without losing the current path
SEO & analytics
Typed Schema.org JSON-LD built from schema-dts, OG images, sitemap with locale alternates, and Plausible analytics that respect cookie consent.
src/lib/jsonld.tsbuildsWebPage,BreadcrumbList,Articleetc.Analytics.astrolazy-loads Plausible only after consent- Per-page OG images generated at build time from
src/lib/og/
Legal templates & cookie consent
Privacy policy, cookie policy, and terms of service templates as content-collection entries — translatable, versioned, and rendered through LegalLayout.
src/content/legal/<locale>/*.mdxfor the documents themselvesCookieBanner.astrodefers analytics until accept/decline- Last-updated and version fields surface automatically in the layout
Component registry
A shadcn-style registry of pure-Astro primitives. Copy-paste with npx astro-ignite add <name> — components land in src/components/ui/ and you own them.
- 18 primitives: button, card, dialog, dropdown-menu, tabs, accordion, toast, …
- Zero React/Vue/Svelte runtime — behaviour is custom elements + the native popover/dialog APIs
- Browse every primitive live under Components
Theming & design
A Zinc-based design system in CSS variables, dark by default, with a no-flash theme toggle that persists across visits.
src/styles/global.cssdefines the design tokensThemeToggle.astroflips--color-*variables; the anti-flash script runs before paint- Self-hosted Geist Sans + Mono via
astro:assets(zero CLS on swap)
Performance
Lighthouse 100s on mobile, CI-enforced. Pure-Astro output, image optimization, font preloading, and zero client JS on most pages.
Imagefromastro:assetsfor responsivesrcset+ AVIF/WebP- Critical CSS inlined per page; non-critical deferred
- See Benchmarks for the numbers and how to reproduce them
Content collections
Typed content for blog posts, case-study projects, legal documents, and docs themselves — all locale-aware, all with frontmatter schemas.
src/content.config.tsdefines the Zod schemas- One folder per locale (e.g.
src/content/blog/en/,src/content/blog/es/) - Cross-locale links resolved by collection id
Forms & email
A working contact form built on Astro Actions, Zod validation, and your choice of Resend or SMTP at scaffold time.
src/actions/index.tsfor the server actionsrc/lib/email/for the provider adapter- Spam protection is intentionally out of scope — add Turnstile or hCaptcha to taste
Where to next
- Quick start — install and start editing
- Components — every primitive, rendered live
- Benchmarks — the Lighthouse story