Frontend frameworks
Alchemy deploys frontends to Cloudflare with a family of
Cloudflare.Website resources. Each one builds your project
programmatically and deploys it as a Worker — server bundle plus
static assets — with no Cloudflare-specific configuration: no
wrangler.json, no adapter setup. Your framework’s own config file
(vite.config.ts, astro.config.*, nuxt.config.ts, …) loads
natively; Alchemy layers its Cloudflare integration on top.
Vite— any pure-Vite app: SPAs and Vite-plugin frameworks like TanStack Start, React Router, Vue, and SolidStart; yourvite.config.tsloads natively.Astro— Astro sites, server-rendered or fully static, with an auto-provisioned session KV namespace; yourastro.config.*loads natively.Nextjs— Next.js apps built through the OpenNext pipeline, with writable ISR on KV; yournext.config.*is honored as-is.Nuxt— Nuxt apps built through nitro’scloudflare_modulepreset; yournuxt.config.tsloads natively.SvelteKit— SvelteKit apps with a wrangler-free in-memory Cloudflare adapter; yourvite.config.tsloads natively.Waku— Waku (React Server Components) apps.Octane— OctaneJS fullstack apps built through Octane’s own Cloudflare adapter.StaticSite— any build command’s output directory, for static generators like Zola and Hugo.
Every resource returns a plain Worker, so everything a Worker
supports applies: domain, env bindings (KV, R2, Durable Objects,
secrets), compatibility flags, and asset routing config. All builds
are memoized by content-hashing the input files — an unchanged
project skips the build and deploy entirely.
What’s supported
Section titled “What’s supported”| Framework | Resource | Guide |
|---|---|---|
| React / Vite SPA | Vite |
Vite SPA |
| TanStack Start (React & Solid) | Vite |
TanStack Start |
| React Router (incl. RSC) | Vite |
React Router |
| Vue | Vite |
Vue |
| Foldkit | Vite |
Foldkit |
| SolidStart / SolidJS SSR | Vite |
SolidStart |
| Astro | Astro |
Astro |
| Next.js | Nextjs |
Next.js |
| Nuxt | Nuxt |
Nuxt |
| SvelteKit | SvelteKit |
SvelteKit |
| Waku | Waku |
Waku |
| OctaneJS (fullstack) | Octane |
Octane |
| OctaneJS (SPA) | Vite |
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 runs any build command that produces a directory, so any static generator works the same way.
How to choose
Section titled “How to choose”Use the resource named after your framework. Astro, Nextjs,
Nuxt, SvelteKit, Waku, and Octane each drive their
framework’s own programmatic build and know its output layout, config
surface, and dev server.
Use Vite when the framework is a plugin in your vite.config.ts
and a single vite build produces the whole app — TanStack Start,
React Router, Vue, SolidStart, or a plain SPA. See
what “pure Vite” means.
Use StaticSite when the build is an arbitrary shell command that
emits a directory of files — Zola, Hugo, or any other generator
without a dedicated resource.
Where next
Section titled “Where next”- The Vite resource — build model, env inlining, runtime bindings, dev mode.
- The StaticSite resource — build commands, custom Workers in front of assets, framework-native dev servers.
- Framework guides: Vite SPA, TanStack Start, React Router, Vue, SolidStart, Astro, Next.js, Nuxt, SvelteKit, Waku, Octane.