Skip to main content
Docs

Install Clerk with shadcn/ui CLI

The shadcn/ui CLI is a tool that allows you to bootstrap your Next.js app with Clerk. Clerk's shadcn/ui registry enables developers to add pre-built components and configurations to their projects with a single command. You can either get started with the complete quickstart package, or add pages and components individually.

Quickstart

Get started with Clerk authentication in seconds using the complete quickstart package:

terminal
npx shadcn@latest add @clerk/nextjs-quickstart
terminal
pnpm dlx shadcn@latest add @clerk/nextjs-quickstart
terminal
yarn dlx shadcn@latest add @clerk/nextjs-quickstart
terminal
bun x shadcn@latest add @clerk/nextjs-quickstart

This single command will install:

  • App layout with ClerkProvider and theme integration
  • Sign-in and sign-up pages with catch-all routes
  • Clerk middleware for route protection
  • Header component with authentication buttons
  • Theme provider for dark/light mode support

Pages

Sign In

The sign-in page is a dedicated page that allows users to sign in to their account.

terminal
npx shadcn@latest add @clerk/nextjs-sign-in-page
terminal
pnpm dlx shadcn@latest add @clerk/nextjs-sign-in-page
terminal
yarn dlx shadcn@latest add @clerk/nextjs-sign-in-page
terminal
bun x shadcn@latest add @clerk/nextjs-sign-in-page

Sign Up

The sign-up page is a dedicated page that allows users to sign up for a new account which includes a two column layout with a list of selling points and a form to sign up.

terminal
npx shadcn@latest add @clerk/nextjs-sign-up-page
terminal
pnpm dlx shadcn@latest add @clerk/nextjs-sign-up-page
terminal
yarn dlx shadcn@latest add @clerk/nextjs-sign-up-page
terminal
bun x shadcn@latest add @clerk/nextjs-sign-up-page

Waitlist

The following example includes a basic implementation of the <Waitlist /> component hosted on the /waitlist route. You can use this as a starting point for your own implementation.

terminal
npx shadcn@latest add @clerk/nextjs-waitlist-page
terminal
pnpm dlx shadcn@latest add @clerk/nextjs-waitlist-page
terminal
yarn dlx shadcn@latest add @clerk/nextjs-waitlist-page
terminal
bun x shadcn@latest add @clerk/nextjs-waitlist-page

Components

<ClerkProvider />

The <ClerkProvider /> component is required to integrate Clerk into your React application, providing session and user context to Clerk's hooks and components.

terminal
npx shadcn@latest add @clerk/nextjs-clerk-provider
terminal
pnpm dlx shadcn@latest add @clerk/nextjs-clerk-provider
terminal
yarn dlx shadcn@latest add @clerk/nextjs-clerk-provider
terminal
bun x shadcn@latest add @clerk/nextjs-clerk-provider

With the ClerkProvider component installed, you can wrap your app's layout to provide Clerk's authentication context to your app.

app/layout.tsx
import { ClerkProvider } from '@/components/clerk-provider'
import './globals.css'

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode
}>) {
  return (
    <ClerkProvider>
      <html lang="en">
        <body>{children}</body>
      </html>
    </ClerkProvider>
  )
}

Files

Middleware

The clerkMiddleware() helper integrates Clerk authentication into your Next.js application through Middleware.

terminal
npx shadcn@latest add @clerk/nextjs-middleware
terminal
pnpm dlx shadcn@latest add @clerk/nextjs-middleware
terminal
yarn dlx shadcn@latest add @clerk/nextjs-middleware
terminal
bun x shadcn@latest add @clerk/nextjs-middleware

Feedback

What did you think of this content?

Last updated on