--- title: Next.js description: Install and configure shadcn/ui for Next.js. --- Choose the setup that matches your starting point.
Use shadcn/create
Build your preset and generate a Next.js project command.
Use the CLI
Scaffold a new Next.js project directly from the terminal.
Existing Project
Configure shadcn/ui manually in an existing Next.js project.
## Use shadcn/create ### Build Your Preset Open [shadcn/create](/create?template=next) and build your preset visually. Choose your style, colors, fonts, icons, and more. ### Create Project Click `Create Project`, choose your package manager, and copy the generated command. The generated command will look similar to this: ```bash npx shadcn@latest init --preset [CODE] --template next ``` The exact command will include your selected options such as `--base`, `--monorepo`, or `--rtl`. ### Add Components Add the `Card` component to your project: ```bash npx shadcn@latest add card ``` If you created a monorepo, run the command from `apps/web` or specify the workspace from the repo root: ```bash npx shadcn@latest add card -c apps/web ``` The command above will add the `Card` component to your project. You can then import it like this: ```tsx showLineNumbers title="app/page.tsx" import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card" export default function Home() { return ( Project Overview Track progress and recent activity for your Next.js app. Your design system is ready. Start building your next component. ) } ``` If you created a monorepo, update `apps/web/app/page.tsx` and import from `@workspace/ui/components/card` instead.
## Use the CLI ### Create Project Run the `init` command to scaffold a new Next.js project. Follow the prompts to configure your project: base, preset, monorepo, and more. ```bash npx shadcn@latest init -t next ``` **For a monorepo project, use `--monorepo` flag:** ```bash npx shadcn@latest init -t next --monorepo ``` ### Add Components Add the `Card` component to your project: ```bash npx shadcn@latest add card ``` If you created a monorepo, run the command from `apps/web` or specify the workspace from the repo root: ```bash npx shadcn@latest add card -c apps/web ``` The command above will add the `Card` component to your project. You can then import it like this: ```tsx showLineNumbers title="app/page.tsx" import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card" export default function Home() { return ( Project Overview Track progress and recent activity for your Next.js app. Your design system is ready. Start building your next component. ) } ``` If you created a monorepo, update `apps/web/app/page.tsx` and import from `@workspace/ui/components/card` instead.
## Existing Project ### Create Project If you need a new Next.js project, create one with `create-next-app`. Otherwise, skip this step. ```bash npx create-next-app@latest ``` Choose the recommended defaults so Tailwind CSS, the App Router, and the default `@/*` import alias are configured for you. If you prefer a `src/` directory, use `--src-dir` or choose `Yes` when prompted: ```bash npx create-next-app@latest --src-dir ``` With `--src-dir`, Next.js places your app in `src/app` and configures the `@/*` alias to point to `./src/*`. ### Configure Tailwind CSS and Import Aliases If you created your project with the recommended `create-next-app` defaults, you can skip this step. If you're adding shadcn/ui to an older or custom Next.js app, make sure Tailwind CSS is installed first. You can follow the official [Next.js installation guide](https://nextjs.org/docs/app/getting-started). Then make sure your `tsconfig.json` includes the `@/*` import alias: ```json title="tsconfig.json" showLineNumbers { "compilerOptions": { "paths": { "@/*": ["./*"] } } } ``` If you used `--src-dir`, point the alias to `./src/*` instead. ### Run the CLI Run the `shadcn` init command to set up shadcn/ui in your project. ```bash npx shadcn@latest init ``` ### Add Components You can now start adding components to your project. ```bash npx shadcn@latest add button ``` The command above will add the `Button` component to your project. You can then import it like this: ```tsx showLineNumbers title="app/page.tsx" import { Button } from "@/components/ui/button" export default function Home() { return (
) } ``` If you used `--src-dir`, add the component to `src/app/page.tsx` instead.