| 1 | --- |
| 2 | title: Websites |
| 3 | description: Deploy Vite, Astro, Next.js, vinext, Nuxt, React Router, SvelteKit, TanStack Start, Waku, Octane, or any static build to AWS with first-class Website resources. |
| 4 | sidebar: |
| 5 | label: Overview |
| 6 | order: 1 |
| 7 | --- |
| 8 | |
| 9 | Alchemy deploys frontends to AWS with a family of `AWS.Website` |
| 10 | resources. Each one builds your project programmatically and deploys |
| 11 | it as a serverless site — the SSR server on a streaming Lambda |
| 12 | Function URL, static assets in a private S3 bucket, and a CloudFront |
| 13 | distribution whose edge router serves uploaded files from S3 and |
| 14 | forwards everything else to the server — with no AWS-specific |
| 15 | configuration: no CDK, no CloudFormation, no adapter setup. Your |
| 16 | framework's own config file (`astro.config.*`, `nuxt.config.ts`, |
| 17 | `vite.config.ts`, ...) loads natively; Alchemy layers its AWS |
| 18 | integration on top. |
| 19 | |
| 20 | - [`Vite`](/aws/frontend/vite) — any client-only Vite project (React, |
| 21 | Vue, Solid, or a plain SPA): assets-only, no Lambda; your |
| 22 | `vite.config.*` loads natively. |
| 23 | - [`Foldkit`](/aws/frontend/foldkit) — Foldkit apps; `Vite` with SPA |
| 24 | deep links on by default. |
| 25 | - [`Astro`](/aws/frontend/astro) — Astro sites, server-rendered or |
| 26 | fully static; your `astro.config.*` loads natively. |
| 27 | - [`Nextjs`](/aws/frontend/nextjs) — Next.js apps built through the |
| 28 | OpenNext (`@opennextjs/aws`) pipeline, with streaming SSR, image |
| 29 | optimization, and ISR wiring; your `next.config.*` is honored |
| 30 | as-is. |
| 31 | - [`Vinext`](/aws/frontend/vinext) — vinext (Next.js API on Vite) |
| 32 | apps on a streaming Lambda; your `vite.config.ts` loads natively. |
| 33 | - [`Nuxt`](/aws/frontend/nuxt) — Nuxt apps built through nitro's |
| 34 | `aws-lambda` preset; your `nuxt.config.ts` loads natively. |
| 35 | - [`ReactRouter`](/aws/frontend/react-router) — React Router v7 in |
| 36 | framework mode, built through your own `vite build`. |
| 37 | - [`SvelteKit`](/aws/frontend/sveltekit) — SvelteKit apps with a |
| 38 | wrangler-free in-memory AWS adapter; your `vite.config.ts` loads |
| 39 | natively. |
| 40 | - [`TanStackStart`](/aws/frontend/tanstack-start) — TanStack Start |
| 41 | (React or Solid), built through your own `vite build`. |
| 42 | - [`Waku`](/aws/frontend/waku) — Waku (React Server Components) |
| 43 | apps. |
| 44 | - [`Octane`](/aws/frontend/octane) — OctaneJS fullstack apps built |
| 45 | through your own `vite build` with the AWS marker adapter. |
| 46 | - [`StaticSite`](/aws/frontend/static-site) — any directory of files, |
| 47 | optionally produced by a build command, for static generators like |
| 48 | Zola and Hugo or pre-built SPAs. |
| 49 | - [`Router`](/aws/frontend/static-site#compose-sites-with-a-router) — |
| 50 | a shared CloudFront front door: one distribution serving several |
| 51 | sites (or a site plus an API), routed at the edge. |
| 52 | |
| 53 | Every resource shares the same surface: `domain` (ACM certificate + |
| 54 | Route 53 records), server configuration (`memorySize`, `timeout`, |
| 55 | `env`), `assets`, `edge` customizations, and `invalidation`. |
| 56 | All builds are memoized by content-hashing the input files — an |
| 57 | unchanged project skips the build and deploy entirely. Under |
| 58 | `alchemy dev`, every resource runs the framework's own dev server |
| 59 | (native HMR) instead of deploying; `Alchemy.remote()` opts back into |
| 60 | the full live deployment. |
| 61 | |
| 62 | ## What's supported |
| 63 | |
| 64 | | Framework | Resource | Guide | |
| 65 | | --- | --- | --- | |
| 66 | | React / Vite SPA | `Vite` | [React SPA](/aws/frontend/vite-spa) | |
| 67 | | Vue | `Vite` | [Vue](/aws/frontend/vue) | |
| 68 | | Foldkit | `Foldkit` | [Foldkit](/aws/frontend/foldkit) | |
| 69 | | TanStack Start (React & Solid) | `TanStackStart` | [TanStack Start](/aws/frontend/tanstack-start) | |
| 70 | | React Router | `ReactRouter` | [React Router](/aws/frontend/react-router) | |
| 71 | | Astro | `Astro` | [Astro](/aws/frontend/astro) | |
| 72 | | Next.js | `Nextjs` | [Next.js](/aws/frontend/nextjs) | |
| 73 | | vinext | `Vinext` | [vinext](/aws/frontend/vinext) | |
| 74 | | Nuxt | `Nuxt` | [Nuxt](/aws/frontend/nuxt) | |
| 75 | | SvelteKit | `SvelteKit` | [SvelteKit](/aws/frontend/sveltekit) | |
| 76 | | Waku | `Waku` | [Waku](/aws/frontend/waku) | |
| 77 | | OctaneJS (fullstack) | `Octane` | [Octane](/aws/frontend/octane) | |
| 78 | | Zola, Hugo, or any static generator | `StaticSite` | [Static sites](/aws/frontend/static-site) | |
| 79 | |
| 80 | Every row is backed by a checked-in example or a live deploy test in |
| 81 | the Alchemy repository. The last row is deliberately open-ended: |
| 82 | `StaticSite` deploys any directory of files (running your build |
| 83 | command first if you give it one), so any generator works the same |
| 84 | way. |
| 85 | |
| 86 | ## How to choose |
| 87 | |
| 88 | Use the resource named after your framework. `Astro`, `Nextjs`, |
| 89 | `Nuxt`, `ReactRouter`, `SvelteKit`, `TanStackStart`, |
| 90 | `Waku`, and `Octane` each drive their framework's own build and know |
| 91 | its output layout, config surface, and dev server. |
| 92 | |
| 93 | Use `Vite` when the app is client-only and a single `vite build` |
| 94 | produces the whole thing — a React or Vue SPA, or any Vite project |
| 95 | with no server. It creates no Lambda. |
| 96 | |
| 97 | Use `StaticSite` when the output is plain files from an arbitrary |
| 98 | build command that emits a directory (Zola, Hugo, or any other |
| 99 | generator without a dedicated resource). |
| 100 | |
| 101 | Use `Router` when several sites (or a site plus an API) should share |
| 102 | one CloudFront distribution and one domain — distributions take |
| 103 | minutes to create, and each custom domain can only attach to one. |
| 104 | |
| 105 | ## Where next |
| 106 | |
| 107 | - [The Vite resource](/aws/frontend/vite) — build model, env |
| 108 | inlining, SPA fallback, dev mode. |
| 109 | - [The StaticSite resource](/aws/frontend/static-site) — build |
| 110 | commands, SPA/404 handling, Router composition, invalidation. |
| 111 | - Framework guides: |
| 112 | [React SPA](/aws/frontend/vite-spa), |
| 113 | [Vue](/aws/frontend/vue), |
| 114 | [Foldkit](/aws/frontend/foldkit), |
| 115 | [TanStack Start](/aws/frontend/tanstack-start), |
| 116 | [React Router](/aws/frontend/react-router), |
| 117 | [Astro](/aws/frontend/astro), |
| 118 | [Next.js](/aws/frontend/nextjs), |
| 119 | [Nuxt](/aws/frontend/nuxt), |
| 120 | [SvelteKit](/aws/frontend/sveltekit), |
| 121 | [Waku](/aws/frontend/waku), |
| 122 | [Octane](/aws/frontend/octane). |
| 123 | - [Full-stack RPC + Drizzle](/aws/frontend/full-stack-tanstack-rpc-drizzle) — |
| 124 | a TanStack Start UI driving an Effect RPC Lambda over Aurora DSQL. |
| 125 | - [`StaticSite` reference](/providers/aws/website/staticsite) and |
| 126 | [`Router` reference](/providers/aws/website/router) — every prop |
| 127 | and attribute. |