We're working hard to bring you something special. Stay tuned for the big reveal.
Coming soon section with a live countdown timer showing days, hours, minutes, and seconds until launch. Perfect for product launches, event announcements, or building anticipation for new features.
Coming-soon hero with a real, ticking countdown: a useCountdown hook recomputes days, hours, minutes, and seconds against a target launchDate every second via setInterval, rendering four tabular-number tiles that count down live in the browser rather than showing a static snapshot.
Free block
This block is free. No license or account is required: install it with the CLI and use it in unlimited projects.
Radix flavor
npx shadcn add "https://ui.beste.co/r/comingsoon1"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/comingsoon1"This installs the block to components/beste/block/comingsoon1.tsx, plus the badge shadcn/ui primitive it uses for the eyebrow badge.
The installed file exports comingsoon1Demo alongside the block: the exact props behind the preview above. Spread it to get a working countdown in one line.
import { ComingSoon1, comingsoon1Demo } from "@/components/beste/block/comingsoon1";
export default function ComingSoonPage() {
return <ComingSoon1 {...comingsoon1Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { ComingSoon1 } from "@/components/beste/block/comingsoon1";
export default function ComingSoonPage() {
return (
<ComingSoon1
badge={{ label: "Coming Soon", variant: "secondary" }}
heading="Something amazing is on the way"
description="We're working hard to bring you something special."
launchDate="2026-08-01T09:00:00.000Z"
showCountdown
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string; variant?: "default" | "secondary" | "outline" } | – | Section eyebrow badge |
heading | string | – | Section heading |
description | string | – | Section intro text |
launchDate | string | – | ISO date string the countdown ticks toward |
showCountdown | boolean | true | Whether the countdown tiles render at all |
className | string | – | Extra classes for the outer <section> |
useCountdown calls calculateTimeLeft once immediately on mount, then again every 1000ms via setInterval, computing the difference between new Date(launchDate) and new Date() on each tick; the interval is cleared on unmount or whenever launchDate changes.showCountdown is true and launchDate is set; omitting either hides the countdown entirely while badge, heading, and description still render.launchDate is in the past (the computed difference is zero or negative), the hook clamps every field to zero and the tiles stay at 00.padStart(2, "0")) and rendered with tabular-nums so the digits don't shift width as they tick down.launchDate is computed once at module load (Date.now() + 30 days), so the countdown always starts near 30 days remaining as of whenever the page or module was first evaluated, not relative to each individual page view.comingsoon7
Coming soon section with a vertical timeline showing launch phases, dates, and status indicators. Perfect for communicating a clear release plan and keeping users informed about upcoming milestones.
comingsoon36
A centered pre-launch section with a square eyebrow, an accent-highlighted heading, a large colon-separated live countdown clock, a working email-capture form with a success state, and an avatar social-proof row.
comingsoon14
Coming soon section with tiered early access plans showing benefits, features, and availability for each level. Perfect for building a monetized waitlist with founding member perks.
comingsoon2
Coming soon section with a progress bar and milestone tracker showing development stages like Design, Backend, Frontend, and Testing. Perfect for keeping users informed about product development progress.