1---
2title: TanStack Start
3description: Package TanStack Start SSR and client assets for Neon Functions, with native Vite development.
4sidebar:
5 order: 8
6---
7
8`Neon.Website.TanStackStart` builds the application's client and server output,
9then wraps the server Fetch handler for Node 24 on Neon Functions. It packages a
10Function ZIP, not a listening Bun server, container, or S3 hosting stack.
11
12## Prepare the app
13
14Use an existing TanStack Start app or the
15[runnable TanStack Start example](https://github.com/alchemy-run/alchemy/tree/main/examples/neon-website-tanstack-start).
16Configure [deployment credentials](/neon/setup), then install in the app directory:
17
18Install [Alchemy and its matching Effect dependencies](/getting-started) first;
19use Node 24 for this build toolchain.
20
21```sh
22pnpm add -D @alchemy.run/frontend-frameworks @vercel/nft
23```
24
25Keep the `tanstackStart()` and React plugins in `vite.config.*`; no deployment
26preset is needed. Keep Vite's default `dist` output directory for this integration.
27Application routes and the router remain normal TanStack Start code.
28
29## Define the stack
30
31```typescript
32// alchemy.run.ts
33import * as Alchemy from "alchemy";
34import * as Neon from "alchemy/Neon";
35import * as Effect from "effect/Effect";
36
37export default Alchemy.Stack(
38 "NeonTanStackStart",
39 { providers: Neon.providers(), state: Alchemy.localState() },
40 Effect.gen(function* () {
41 const site = yield* Neon.Website.TanStackStart("Web", {
42 rootDir: ".",
43 });
44 return { url: site.url };
45 }),
46);
47```
48
49Client files are served from the artifact; unmatched requests reach the framework
50handler for SSR and server routes. Private server-side `env` values are process
51environment. `VITE_*` values are compiled into client code; keep privileged tokens
52out of them and out of server-function responses.
53
54## Develop and deploy
55
56```sh
57pnpm exec alchemy dev
58pnpm exec alchemy deploy
59pnpm exec alchemy destroy
60```
61
62Run separately, destroying when finished. Dev uses the native Vite server and
63HMR, returns a local URL, and creates no implicit Project or Function. Append
64`.pipe(Alchemy.remote())` to the Website Effect to opt into live deployment during dev.
65
66Omitting scope creates an Ohio Project on deploy. Supply either `project` or
67`branch` for an existing backend, and use Ohio when adding storage. Read
68[scope and credentials](/neon/frontend/vite#scope-and-credentials) before sharing
69backend credentials with application code.
70
71:::caution[Deployment limits]
72Complete live framework acceptance remains unverified. Neon probes have served
73old code/env despite new active deployment IDs. This integration provisions no
74CDN or durable server cache, and registering a domain does not validate TLS.
75See the [shared deployment limits](/neon/frontend/vite#environment-and-deployment-limits).
76:::
77
78## Reference
79
80- [TanStackStart API](/providers/neon/website/tanstackstart)
81- [Runnable TanStack Start example](https://github.com/alchemy-run/alchemy/tree/main/examples/neon-website-tanstack-start)