TanStack Start
Install and configure TanStack Start.
Note: This guide is for TanStack Start and Tailwind v4. If you are using
Tailwind v3, consider the Basic Starter template. TanStack
Start works with the canary version of shadcn.
TanStack Start + Tailwind v4
Create project
Start by creating a new TanStack Start project by following the Build a Project from Scratch guide on the TanStack Start website.
Add Tailwind
Install tailwindcss and its dependencies.
pnpm add tailwindcss @tailwindcss/postcss postcss
Create postcss.config.ts
Create a postcss.config.ts file at the root of your project.
export default {
plugins: {
"@tailwindcss/postcss": {},
},
}Create app/styles/app.css
Create an app.css file in the app/styles directory and import tailwindcss
@import "tailwindcss" source("../");Import app.css
import type { ReactNode } from "react"
import { Outlet, createRootRoute } from "@tanstack/react-router"
import { Meta, Scripts } from "@tanstack/start"
import appCss from "@/styles/app.css?url"
export const Route = createRootRoute({
head: () => ({
meta: [
{
charSet: "utf-8",
},
{
name: "viewport",
content: "width=device-width, initial-scale=1",
},
{
title: "TanStack Start Starter",
},
],
links: [
{
rel: "stylesheet",
href: appCss,
},
],
}),
component: RootComponent,
})Edit tsconfig.json file
Add the following code to the tsconfig.json file to resolve paths.
{
"compilerOptions": {
"jsx": "react-jsx",
"moduleResolution": "Bundler",
"module": "ESNext",
"target": "ES2022",
"skipLibCheck": true,
"strictNullChecks": true,
"baseUrl": ".",
"paths": {
"@/*": ["./app/*"]
}
}
}Run the CLI
Run the shadcn init command to setup your project:
pnpm dlx shadcn@canary init -d
This will create a components.json file in the root of your project and configure CSS variables inside app/styles/app.css.
That's it
You can now start adding components to your project.
pnpm dlx shadcn@canary add button
The command above will add the Button component to your project. You can then import it like this:
import { Button } from "@/components/ui/button"
function Home() {
const router = useRouter()
const state = Route.useLoaderData()
return (
<div>
<Button>Click me</Button>
</div>
)
}Basic Starter
The Basic Starter template has Tailwind v3 already configured.
Run the CLI
Run the shadcn init command to setup your project:
pnpm dlx shadcn@canary init -d
This will create a components.json file in the root of your project and configure CSS variables inside app/styles/app.css.
That's it
You can now start adding components to your project.
pnpm dlx shadcn@canary add button
The command above will add the Button component to your project. You can then import it like this:
import { Button } from "@/components/ui/button"
function Home() {
const router = useRouter()
const state = Route.useLoaderData()
return (
<div>
<Button>Click me</Button>
</div>
)
}