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:
npx shadcn@latest add @clerk/nextjs-quickstart
pnpm dlx shadcn@latest add @clerk/nextjs-quickstart
yarn dlx shadcn@latest add @clerk/nextjs-quickstart
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.
npx shadcn@latest add @clerk/nextjs-sign-in-page
pnpm dlx shadcn@latest add @clerk/nextjs-sign-in-page
yarn dlx shadcn@latest add @clerk/nextjs-sign-in-page
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.
npx shadcn@latest add @clerk/nextjs-sign-up-page
pnpm dlx shadcn@latest add @clerk/nextjs-sign-up-page
yarn dlx shadcn@latest add @clerk/nextjs-sign-up-page
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.
npx shadcn@latest add @clerk/nextjs-waitlist-page
pnpm dlx shadcn@latest add @clerk/nextjs-waitlist-page
yarn dlx shadcn@latest add @clerk/nextjs-waitlist-page
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.
npx shadcn@latest add @clerk/nextjs-clerk-provider
pnpm dlx shadcn@latest add @clerk/nextjs-clerk-provider
yarn dlx shadcn@latest add @clerk/nextjs-clerk-provider
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.
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.
npx shadcn@latest add @clerk/nextjs-middleware
pnpm dlx shadcn@latest add @clerk/nextjs-middleware
yarn dlx shadcn@latest add @clerk/nextjs-middleware
bun x shadcn@latest add @clerk/nextjs-middleware
Feedback
Last updated on