Skip to content
New: Customize your theme with an AI assistant. Read the guide

Deployment Guide

npm run build makes a static site in the dist/ folder, which any static host can serve. Settings are included for Netlify, Vercel, and Cloudflare Pages. To use another host, see Astro’s deployment guides.

Before You Deploy

Set your site’s address in baseUrl under [site] in src/config/config.toml. It ships with a sample address. Canonical links, the sitemap, robots.txt, llms.txt, and social previews use it. A SITE_URL environment variable overrides it for a build.

Use the Node.js version listed under engines in package.json.

Netlify

The included netlify.toml sets the build command (npm run build), the dist folder, Node.js 22, cache headers, and a “page not found” rule for each language.

  1. Create a new site on Netlify.
  2. Connect your Git repository.
  3. Netlify reads its settings from netlify.toml and deploys your site.

Vercel

The included vercel.json sets the trailing slash and the sitemap redirect. The included vercel.sh script builds your site with your Vercel project’s address, which overrides baseUrl.

  1. Create a new project on Vercel.
  2. Connect your Git repository.
  3. Vercel reads its settings from vercel.json and deploys your site.

Cloudflare Pages

  1. Create a new project on Cloudflare Pages.
  2. Connect your Git repository.
  3. Set the build command to npm run build and the output folder to dist.
  4. Set the Node.js version with a NODE_VERSION environment variable, using the version in package.json.

The included wrangler.toml names the project after the theme, so change its name if you deploy with Wrangler.

Headers And Missing Pages

The included public/_headers, vercel.json, and public/.htaccess serve the .md and llms files as text, and keep the .md copies out of search results. On any other host, set the same headers yourself. See AI Links & llms.

Only netlify.toml includes a “page not found” rule for each language. On other hosts, a missing /fr/ or /ar/ address may show the default language’s 404 page unless you add a rule.

Tina Edition

The site builds and works with no account and no variables. To edit online, add PUBLIC_TINA_CLIENT_ID and TINA_TOKEN to your host. See Tina.

Sanity Edition

Add PUBLIC_SANITY_PROJECT_ID and PUBLIC_SANITY_DATASET to your host, plus PUBLIC_SANITY_STUDIO_URL once your Studio is online. Without them, the site builds from the bundled demo content. The site must rebuild to show content you publish. See Sanity.

Type something to search...