Next.js
Requirements:
- Next.js 12 or later
- React 18 or later
- Tailwind CSS 3.4 or later
- Framer Motion 4 or later
To use NextUI in your Next.js project, you need to follow the steps below, depending on your project structure.
App Directory Setup
Next.js 13 introduces a new app/
directory structure. By default it uses Server Components.
As NextUI components use React hooks, we added the use client;
at build time, so you can import them
directly in your React Server Components (RSC).
NextUI CLI (recommended)
If you are starting a new project, you can use the NextUI CLI to create a new project with NextUI pre-configured:
npm install -g nextui-cli
nextui init -t app
create-next-app
If you are starting a new project, you can run one of the following commands to create a Next.js project pre-configured with NextUI:
npx create-next-app -e https://github.com/nextui-org/next-app-template
Automatic Installation
You can add individual components using the CLI. For example, to add a button component:
nextui add button
This command adds the Button component to your project and manages all related dependencies.
You can also add multiple components at once:
nextui add button input
Or you can add the main library @nextui-org/react
by running the following command:
nextui add --all
If you leave out the component name, the CLI will prompt you to select the components you want to add.
? Which components would you like to add? › - Space to select. Return to submitInstructions:↑/↓: Highlight option←/→/[space]: Toggle selection[a,b,c]/delete: Filter choicesenter/return: Complete answerFiltered results for: Enter something to filter◯ accordion◯ autocomplete◯ avatar◯ badge◯ breadcrumbs◉ button◯ card◯ checkbox◯ chip◯ code
You still need to add the provider to your app manually (we are working on automating this step).
// app/providers.tsximport {NextUIProvider} from '@nextui-org/react'export function Providers({children}: { children: React.ReactNode }) {return (<NextUIProvider>{children}</NextUIProvider>)}
// app/layout.tsximport {Providers} from "./providers";export default function RootLayout({children}: { children: React.ReactNode }) {return (<html lang="en" className='dark'><body><Providers>{children}</Providers></body></html>);}
Manual Installation
Add dependencies
In your Next.js project, run one of the following commands to install NextUI:
npm i @nextui-org/react framer-motion
Tailwind CSS Setup
NextUI is built on top of Tailwind CSS, so you need to install Tailwind CSS first. You can follow the official
installation guide to install Tailwind CSS. Then you need to add
the following code to your tailwind.config.js
file:
// tailwind.config.jsimport {nextui} from "@nextui-org/react";/** @type {import('tailwindcss').Config} */const config = {content: [// ..."./node_modules/@nextui-org/theme/dist/**/*.{js,ts,jsx,tsx}"],theme: {extend: {},},darkMode: "class",plugins: [nextui()]}export default config;
Setup Provider
Go to your app/providers.tsx
or app/providers.jsx
(create it if it doesn't exist) and wrap the Component with the NextUIProvider
:
// app/providers.tsx'use client'import {NextUIProvider} from '@nextui-org/react'export function Providers({children}: { children: React.ReactNode }) {return (<NextUIProvider>{children}</NextUIProvider>)}
Add Provider to Root
Now, Go to your root
layout page and wrap it with the Providers
:
// app/layout.tsximport {Providers} from "./providers";export default function RootLayout({children}: { children: React.ReactNode }) {return (<html lang="en" className='dark'><body><Providers>{children}</Providers></body></html>);}
Note: NextUI automatically adds two themes,
light
anddark
, to your application. You can use any of them by adding thedark
/light
class to thehtml
tag. See the theme docs for more details.
Use NextUI Components
Now you can import any NextUI component directly in your Server Components without needing to use
the use client;
directive:
// app/page.tsximport {Button} from '@nextui-org/button';export default function Page() {return (<div><Button>Click me</Button></div>)}
Important 🚨: Note that you need to import the component from the individual package, not from
@nextui-org/react
.
Setup pnpm (optional)
If you are using pnpm, you need to add the following code to your .npmrc
file:
public-hoist-pattern[]=*@nextui-org/*
After modifying the .npmrc
file, you need to run pnpm install
again to ensure that the dependencies are installed correctly.
Pages Directory Setup
NextUI CLI (recommended)
If you are starting a new project, you can use the NextUI CLI to create a new project with NextUI pre-configured:
npm install -g nextui-cli
nextui init -t pages
If you are using the /pages
Next.js project structure, you need to follow the steps below.
create-next-app
If you are starting a new project, you can run one of the following commands to create a Next.js project pre-configured with NextUI:
npx create-next-app -e https://github.com/nextui-org/next-pages-template
Automatic Installation
You can add individual components using the CLI. For example, to add a button component:
nextui add button
This command adds the Button component to your project and manages all related dependencies.
You can also add multiple components at once:
nextui add button input
Or you can add the main library @nextui-org/react
by running the following command:
nextui add --all
If you leave out the component name, the CLI will prompt you to select the components you want to add.
? Which components would you like to add? › - Space to select. Return to submitInstructions:↑/↓: Highlight option←/→/[space]: Toggle selection[a,b,c]/delete: Filter choicesenter/return: Complete answerFiltered results for: Enter something to filter◯ accordion◯ autocomplete◯ avatar◯ badge◯ breadcrumbs◉ button◯ card◯ checkbox◯ chip◯ code
You still need to add the provider to your app manually (we are working on automating this step).
// app/providers.tsximport {NextUIProvider} from '@nextui-org/react'export function Providers({children}: { children: React.ReactNode }) {return (<NextUIProvider>{children}</NextUIProvider>)}
// app/layout.tsximport {Providers} from "./providers";export default function RootLayout({children}: { children: React.ReactNode }) {return (<html lang="en" className='dark'><body><Providers>{children}</Providers></body></html>);}
Manual Installation
Add dependencies
In your Next.js project, run one of the following commands to install NextUI:
npm i @nextui-org/react framer-motion
Tailwind CSS Setup
NextUI is built on top of Tailwind CSS, so you need to install Tailwind CSS first. You can follow the official
installation guide to install Tailwind CSS. Then you need to add
the following code to your tailwind.config.js
file:
// tailwind.config.jsimport {nextui} from "@nextui-org/react";/** @type {import('tailwindcss').Config} */const config = {content: [// ..."./node_modules/@nextui-org/theme/dist/**/*.{js,ts,jsx,tsx}"],theme: {extend: {},},darkMode: "class",plugins: [nextui()]}export default config;
Setup Provider
Go to pages/_app.js
or pages/_app.tsx
(create it if it doesn't exist) and wrap the Component with the NextUIProvider
:
// pages/_app.jsimport {NextUIProvider} from '@nextui-org/react'function MyApp({ Component, pageProps }) {return (<NextUIProvider><Component {...pageProps} /></NextUIProvider>)}export default MyApp;
Use NextUI Components
Now you can import any NextUI component wherever you want:
import {Button} from '@nextui-org/react'export default function Page() {return (<div><Button>Click me</Button></div>)}
Setup pnpm (optional)
If you are using pnpm, you need to add the following code to your .npmrc
file:
public-hoist-pattern[]=*@nextui-org/*
After modifying the .npmrc
file, you must run pnpm install
again to ensure the dependencies are installed correctly.
Version 2 is only compatible with React 18 or later. If you are using React 17 or earlier, please use version 1 of NextUI.