nextui.dev
Home
Docs
Saved
Pricing
Components37
  • Forms & inputs7
  • Cards13
  • Buttons, badges & avatars8
  • Feedback & display6
  • Effects3
Agents17
  • Chat inputNew
  • Task checklistNew
  • ReasoningNew
  • Tool callNew
  • Tool approvalNew
  • SourcesNew
  • Agent timelineNew
  • Artifact panelNew
  • Streaming messageNew
  • Conversation shellNew
  • Voice agentNew
  • Voice orbNew
  • Thinking ring
  • Thinking waveNew
  • Thinking sparkle
  • Thinking bot
  • Prompt deckNew
Blocks20
  • Agent chatNew
  • Pill heroNew
  • Grid hero
  • Moodboard generatorNew
  • Waitlist heroNew
  • Intro bannerNew
  • Creative home heroNew
  • Chat heroNew
  • App shelfNew
  • Usage card
  • Design resultsNew
  • Pricing tiers
  • Dashboard home
  • The shiftNew
  • Launch perksNew
  • Testimonials
  • Quote
  • Team
  • Leads tableNew
  • Sign in
Pages10
  • ASCII workspace$49
  • CRM overviewNew
  • Marketing dashboardNew
  • Developer portfolio$49
  • Particle landing$49
  • Particle story$49
  • Statement converter$49
  • AI photo studio$49
  • Group card launch$49
  • Month-end storyNew
Themes9
  • Default
  • Ember
  • Ocean
  • Forest
  • Grape
  • Rose
  • Amber
  • Clay
  • Brutal
Upgrade
nextui.dev

nextui components, blocks and themes you install with one command.

Product

  • Components
  • Blocks
  • Themes
  • Pricing

Resources

  • Docs
  • Roadmap
  • GitHub

Legal

  • License
  • Privacy
  • Terms
  • Refunds

nextUI

[ 200 OK ] · nextUI

© 2026 NEXTUI • All rights reserved.

Upgrade
ComponentsForms & inputsWaitlist
Copy promptCopy prompt

Customize

Placeholder text of the email field

Text of the submit button

Button text after joining

Text beside the counter

Starting count when uncontrolled

180

How many avatars stay in the stack

5

Add a fake joiner on a timer while in view

Milliseconds between simulated joiners

2200ms

JSX · copied with Copy prompt

<Waitlist />

WaitlistNew

Email signup with a live avatar stack: new people slide in, the last one tucks under a rolling join counter.

Installation

Set your access key from API keys as NEXTUI_TOKEN in .env.local and add the @nextui namespace below to components.json once. Then every item installs by name. Each install counts as a copy on a free account.

$pnpm dlx shadcn@latest add @nextui/waitlist
1{
2 "registries": {
3 "@nextui": {
4 "url": "https://nextui.dev/r/{name}.json",
5 "headers": { "Authorization": "Bearer ${NEXTUI_TOKEN}" }
6 }
7 }
8}

Usage

1"use client";
2
3import { Waitlist } from "@/components/nextui/waitlist";
4
5export function LaunchWaitlist({ signups }: { signups: number }) {
6 return (
7 <Waitlist
8 buttonLabel="Get early access"
9 joinedLabel="See you soon"
10 countLabel="Makers on the list"
11 defaultCount={signups}
12 simulate={false}
13 avatars={[
14 { initials: "AN", photo: "/team/an.jpg" },
15 { initials: "BL", photo: "/team/bl.jpg" },
16 { initials: "CT" },
17 ]}
18 visibleAvatars={3}
19 onSubmit={(email) => fetch("/api/waitlist", { method: "POST", body: JSON.stringify({ email }) })}
20 />
21 );
22}

API reference

Edit props live in the preview above, or see all 14 props
PropTypeDefaultDescription
placeholderstring"Enter your email"Placeholder text of the email field
buttonLabelReactNode"Join Waitlist"Text of the submit button
joinedLabelReactNode"You're in"Button text after joining
countLabelReactNode"People joined today"Text beside the counter
countnumber–Controlled count shown in the badge
defaultCountnumber180Starting count when uncontrolled
avatarsWaitlistAvatar[]12 sample facesFaces for the stack, cycled in order: initials and an optional photo
visibleAvatarsnumber5How many avatars stay in the stack
selfInitialsstring"You"Initials of the avatar added when the visitor joins
simulatebooleantrueAdd a fake joiner on a timer while in view
intervalnumber2200Milliseconds between simulated joiners
idstring"waitlist-email"Id of the email field
onSubmit(email: string) => void–Called with the email when the form is submitted
classNamestring–Extra classes on the wrapper

Related

All components

Labeled input

Subscribe input

Settings list

Sign in to see the code

Preview it freely. A free account copies code and prompts a few times a day.

Sign in