SvelteKit can deploy as a Node server, serverless functions, or static files depending on the adapter. This lesson covers adapters, environment variables, and deploying to Vercel and Cloudflare Pages.
Adapters transform your SvelteKit build for a specific deployment target. Choose based on where you're hosting.
# Vercel (auto-detected)
npm install -D @sveltejs/adapter-vercel
# Netlify
npm install -D @sveltejs/adapter-netlify
# Cloudflare Pages
npm install -D @sveltejs/adapter-cloudflare
# Static (no server — SSG only)
npm install -D @sveltejs/adapter-staticimport adapter from '@sveltejs/adapter-vercel';
export default {
kit: {
adapter: adapter({
runtime: 'nodejs20.x'
})
}
};# Variables starting with PUBLIC_ are exposed to the browser
PUBLIC_API_URL=https://api.example.com
# Private: server-only
DATABASE_URL=postgres://...
SECRET_KEY=abc123// In server-side code (+page.server.js, +server.js)
import { DATABASE_URL, SECRET_KEY } from '$env/static/private';
// In both server and client code
import { PUBLIC_API_URL } from '$env/static/public';# Option 1: Vercel CLI
npm i -g vercel
vercel
# Option 2: Connect GitHub repo at vercel.com
# Vercel auto-detects SvelteKit and configures everything# Connect your GitHub repo at pages.cloudflare.com
# Build command: npm run build
# Output directory: .svelte-kit/cloudflare
# Add environment variables in the Pages dashboard@sveltejs/adapter-vercel and update svelte.config.js.npm run build locally and confirm no errors.$env/static/private for server-only secrets. $env/static/public for browser-safe vars.