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.
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.
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.
comingsoon6
Coming soon section with an email waitlist input, stacked subscriber avatars, and a live join count. Perfect for building early traction and social proof before launch.
comingsoon12
Coming soon section with a side-by-side comparison table showing current limitations versus upcoming improvements. Perfect for SaaS upgrades and product relaunches.
comingsoon8
Coming soon section with a status dashboard displaying service readiness with color-coded indicators for ready, in-progress, and planned states. Perfect for transparent launch communication.