shadcn.io is not affiliated with official shadcn/ui
Waitlist Signup Hero Block for React
A compact waitlist hero: the copy beside a card-in-card email form that turns into a confirmation in place, with a closing band of three features coming at launch.
Installation
Overview
Build anticipation before launch with a waitlist hero. On the start side, an announcement pill links to your roadmap above a headline, a sentence and an avatar row with the waitlist count. On the end side, a card in card (a tinted shell with + marks on its corners, a raised panel inside it) holds an email field and a full-width Shine Button. Submitting checks the address, shows the button's spinner while the request runs, then fades the form out and a confirmation in, in the same space, so nothing on the page moves. Below, a closing band of three cells previews what's coming at launch, ruled across the page's side rails. It's built from Field, Input, Shine Button, Avatar, Announcement, Status and Guides, with Lucide icons, Tailwind CSS and a CSS entrance that stays still under reduced motion. Made for pre-launch pages, private betas and early-access programs.
FAQ
How do I connect the form to my waitlist?
The request is simulated in submit: once the address passes the check, state goes to "loading" and a timer (LATENCY, 1.2 seconds) sets it to "done". Replace the timer with a request to your endpoint or your email provider's API, keep "loading" while it runs and set "done" when it succeeds. If it fails, set state back to "idle" and put the message in error: it shows under the field like a validation error. The timer is cleared if the hero unmounts first; cancel a real request there too.
Why doesn't the page move when the confirmation appears?
The form and the confirmation sit in the same grid cell, both always rendered. The one not shown is invisible (hidden from view, from the keyboard and from screen readers alike) and faded out, so the card is always as tall as the taller of the two and the band below never jumps. The swap is a short fade and scale, which reduced motion turns into an instant change.
What do keyboard and screen reader users get?
The field has a visually hidden label, "Work email", and autoComplete="email", so browsers offer the visitor's address. A missing or malformed address shows its message under the field, marks the input invalid and returns focus to it. While the request runs, the button keeps its name and is disabled, and the field turns read-only. When it succeeds, focus moves to the confirmation's heading, "You're on the list", so it's read aloud and the keyboard carries on from there instead of from the top of the page. The page's h1 is the headline; the card's heading is an h2.
The label's htmlFor, the input's id and its aria-describedby link them, from one useId.
How do I show the real waitlist count?
The count is text in the sentence beside the avatars, so render it from your data where the page is built. Format it with a fixed locale, such as Intl.NumberFormat("en-US"), so the server and the browser print the same digits, or round it ("3,200+"), which reads as well and doesn't need updating after every signup. The avatars are decorative: they're hidden from screen readers and their images have an empty alt, since the sentence carries the meaning.
How does the hero fit on a phone?
Below the lg breakpoint the copy comes first and the card under it, full width, and the card drops its one-line description so the field and the button stay on the first screen. The three feature cells stack below the md breakpoint, divided by hairlines, and sit in a row above it. An error message wraps under the field, and the confirmation fits in the room the form leaves.
When should I use a waitlist hero instead of a sign-up hero?
Use a waitlist before the product is open: the count and the features coming at launch give visitors a reason to leave their address now. Once people can sign up and use the product straight away, switch to a sign-up hero that asks for an account, or a newsletter form for ongoing updates.
Related
- Pro
Centered Inline Email Signup Hero
Signup and waitlistA short centered waitlist hero with an email field and a Shine Button on one row inside a framed box, a confirmation in place, an avatar row and two trust points.
- Pro
Centered Email Signup Hero
Signup and waitlistA compact centred hero built around one email field and a Shine Button, between solid rails, with a proof band below: the people on the list, when invites go out and what it connects to.
- Pro
Centered Email Capture Form Hero
Signup and waitlistA compact centered newsletter hero with the email field in a full-width band between two hairlines: a Shine Button subscribes, then a confirmation replaces the form, over a row of subscriber proof.
- Pro
Split Signup Form Hero
Signup and waitlistA split hero with a sign-up form on the page: copy and ticks at the start, and a card in card form at the end with a work email, a password and a Shine Button that shows a spinner, then a confirmation.
- Pro
Centered Countdown Timer Hero
Signup and waitlistA compact centred launch hero on solid rails with a live countdown as a full-width band of four cells and an email form whose Shine Button shows its loading and success states.
- Pro
Left-Aligned Social Proof Bar Hero
Logos and social proofA compact start-aligned hero closed by a three-cell social proof bar on its own rule: an avatar stack with the user count, a five-star rating with the review count and a compliance mark.