Websites
Alchemy deploys frontends to AWS with a family of AWS.Website
resources. Each one builds your project programmatically and deploys
it as a serverless site — the SSR server on a streaming Lambda
Function URL, static assets in a private S3 bucket, and a CloudFront
distribution whose edge router serves uploaded files from S3 and
forwards everything else to the server — with no AWS-specific
configuration: no CDK, no CloudFormation, no adapter setup. Your
framework’s own config file (astro.config.*, nuxt.config.ts,
vite.config.ts, …) loads natively; Alchemy layers its AWS
integration on top.
Vite— any client-only Vite project (React, Vue, Solid, or a plain SPA): assets-only, no Lambda; yourvite.config.*loads natively.Foldkit— Foldkit apps;Vitewith SPA deep links on by default.Astro— Astro sites, server-rendered or fully static; yourastro.config.*loads natively.Nextjs— Next.js apps built through the OpenNext (@opennextjs/aws) pipeline, with streaming SSR, image optimization, and ISR wiring; yournext.config.*is honored as-is.Nuxt— Nuxt apps built through nitro’saws-lambdapreset; yournuxt.config.tsloads natively.ReactRouter— React Router v7 in framework mode, built through your ownvite build.SvelteKit— SvelteKit apps with a wrangler-free in-memory AWS adapter; yourvite.config.tsloads natively.TanStackStart— TanStack Start (React or Solid), built through your ownvite build.Waku— Waku (React Server Components) apps.Octane— OctaneJS fullstack apps built through your ownvite buildwith the AWS marker adapter.StaticSite— any directory of files, optionally produced by a build command, for static generators like Zola and Hugo or pre-built SPAs.Router— a shared CloudFront front door: one distribution serving several sites (or a site plus an API), routed at the edge.
Every resource shares the same surface: domain (ACM certificate +
Route 53 records), server configuration (memorySize, timeout,
env), assets, edge customizations, and invalidation.
All builds are memoized by content-hashing the input files — an
unchanged project skips the build and deploy entirely. Under
alchemy dev, every resource runs the framework’s own dev server
(native HMR) instead of deploying; Alchemy.remote() opts back into
the full live deployment.
What’s supported
Section titled “What’s supported”| Framework | Resource | Guide |
|---|---|---|
| React / Vite SPA | Vite |
React SPA |
| Vue | Vite |
Vue |
| Foldkit | Foldkit |
Foldkit |
| TanStack Start (React & Solid) | TanStackStart |
TanStack Start |
| React Router | ReactRouter |
React Router |
| Astro | Astro |
Astro |
| Next.js | Nextjs |
Next.js |
| Nuxt | Nuxt |
Nuxt |
| SvelteKit | SvelteKit |
SvelteKit |
| Waku | Waku |
Waku |
| OctaneJS (fullstack) | Octane |
Octane |
| Zola, Hugo, or any static generator | StaticSite |
Static sites |
Every row is backed by a checked-in example or a live deploy test in
the Alchemy repository. The last row is deliberately open-ended:
StaticSite deploys any directory of files (running your build
command first if you give it one), so any generator works the same
way.
How to choose
Section titled “How to choose”Use the resource named after your framework. Astro, Nextjs,
Nuxt, ReactRouter, SvelteKit, TanStackStart,
Waku, and Octane each drive their framework’s own build and know
its output layout, config surface, and dev server.
Use Vite when the app is client-only and a single vite build
produces the whole thing — a React or Vue SPA, or any Vite project
with no server. It creates no Lambda.
Use StaticSite when the output is plain files from an arbitrary
build command that emits a directory (Zola, Hugo, or any other
generator without a dedicated resource).
Use Router when several sites (or a site plus an API) should share
one CloudFront distribution and one domain — distributions take
minutes to create, and each custom domain can only attach to one.
Where next
Section titled “Where next”- The Vite resource — build model, env inlining, SPA fallback, dev mode.
- The StaticSite resource — build commands, SPA/404 handling, Router composition, invalidation.
- Framework guides: React SPA, Vue, Foldkit, TanStack Start, React Router, Astro, Next.js, Nuxt, SvelteKit, Waku, Octane.
- Full-stack RPC + Drizzle — a TanStack Start UI driving an Effect RPC Lambda over Aurora DSQL.
StaticSitereference andRouterreference — every prop and attribute.