Launch a trial, no account needed https://diploi.com/component/tanstack-start
Uses the official node Docker image.
A minimal setup to get TanStack Start working in Diploi, with React, file-based routing from TanStack Router and Tailwind CSS. Server-side rendering is handled by Nitro, preconfigured through its Vite plugin in vite.config.ts.
-
In the Dashboard, click Create Project +
-
Under Pick Components, choose TanStack Start
You can add other frameworks from this page if you want to build a monorepo application, eg, TanStack Start for the frontend and Hono for the backend.
-
In Pick Add-ons, select any databases or extra tools you need.
-
Choose Create Repository so Diploi generates a new GitHub repo for your project.
-
Click Launch Stack
Supports Bun, Yarn, npm, and pnpm. The package manager is auto-detected from your lockfile (bun.lock, yarn.lock, package-lock.json, or pnpm-lock.yaml). The install and build steps always use the detected package manager.
When the component is first initialized, dependencies are installed using the detected package manager. The development server is then started with:
npm run dev -- --hostThis can be changed with the containerCommands.developmentStart field in diploi.yaml.
Builds a production-ready image. Image runs npm install & npm run build when being created, using the detected package manager. vite build writes the Nitro server to .output/.
Once the image runs, npm start is called, which starts the Nitro server:
node .output/server/index.mjsThis can be changed with the containerCommands.productionStart field in diploi.yaml.
TanStack Start reads environment variables at two different times:
- When the server runs. Server code, such as server functions (
createServerFn), server routes and middleware, readsprocess.envwhile the server runs. Use it for secrets, and for values that depend on a specific deployment (such as variables imported from other components indiploi.yaml, or configured in the Environment tab). - When the app is built.
import.meta.env.VITE_*is replaced during the build step. Only variables with theVITE_prefix reach code that runs in the browser, and everything they contain is visible there, so never give a secret aVITE_name. The build runs when the image is created, so only use these for values that are not deployment-dependent, and define those indiploi.yamlusing the static import syntax. The values are exposed to theDockerfileasARGvariables.
To use a deployment-dependent value in the browser, read it in a server function and return it from there, as in the runtime client environment variables guide.
To use a variable from another component in your code, import it in diploi.yaml. For example, to call a backend with the api identifier from server code:
- name: TanStack Start
identifier: tanstack-start
env:
include:
- api.APP_INTERNAL_ENDPOINT:API_URLServer code can use the <HOST>_INTERNAL_ENDPOINT address of a component, which stays inside the deployment. Code that runs in the browser needs the public <HOST>_ENDPOINT address.
The component serves on port 5173 in both development and production. If you change it, update all of these so they stay in sync:
hosts[].portindiploi.yamlEXPOSEandENV PORTinDockerfileandDockerfile.dev. The production server readsPORT- The fallback of
server.portinvite.config.ts, which the development server uses whenPORTis not set