Skip to content

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; your vite.config.ts loads natively.
  • Astro — Astro sites, server-rendered or fully static, with an auto-provisioned session KV namespace; your astro.config.* loads natively.
  • Nextjs — Next.js apps built through the OpenNext pipeline, with writable ISR on KV; your next.config.* is honored as-is.
  • Nuxt — Nuxt apps built through nitro’s cloudflare_module preset; your nuxt.config.ts loads natively.
  • SvelteKit — SvelteKit apps with a wrangler-free in-memory Cloudflare adapter; your vite.config.ts loads 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.

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.

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.