Launch Roadmap Timeline

Roadmap

Our path to launch

We're building in public. Here's our timeline so you know exactly when to expect each milestone.

Foundation

Completed

Core infrastructure, authentication, and API layer

Q1 2025

Beta Release

Completed

Invite-only access for early adopters and feedback collection

Q2 2025

Public Preview

In Progress

Open access with core features and integrations

Q3 2025

Enterprise Launch

Upcoming

Team features, SSO, and advanced admin controls

Q4 2025

Platform Expansion

Upcoming

Marketplace, third-party plugins, and developer API

Q1 2026
About this block

Launch Roadmap TimelinePRO

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.

ComingSoon7: Launch Roadmap Timeline

A centered coming-soon section that stacks a badge, heading, and description above a vertical connected timeline, where each phase renders a status-styled icon node, a title with a status pill, a description, and a date.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/comingsoon7?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/comingsoon7?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/comingsoon7.tsx.

Quick start

The installed file exports comingsoon7Demo alongside the block: the exact props behind the preview above. Spread it to get a working roadmap timeline in one line.

tsx
import { ComingSoon7, comingsoon7Demo } from "@/components/beste/block/comingsoon7";

export default function Page() {
  return <ComingSoon7 {...comingsoon7Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { ComingSoon7 } from "@/components/beste/block/comingsoon7";

export default function Page() {
  return (
    <ComingSoon7
      badge={{ label: "Roadmap", variant: "secondary" }}
      heading="Our path to launch"
      description="We're building in public, so you know exactly when to expect each milestone."
      phases={[
        {
          title: "Foundation",
          description: "Core infrastructure, authentication, and API layer",
          date: "Q1 2025",
          status: "completed",
        },
        {
          title: "Public preview",
          description: "Open access with core features and integrations",
          date: "Q3 2025",
          status: "current",
        },
        {
          title: "Enterprise launch",
          description: "Team features, SSO, and advanced admin controls",
          date: "Q4 2025",
          status: "upcoming",
        },
      ]}
      labels={{
        completed: "Completed",
        current: "In progress",
        upcoming: "Upcoming",
      }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }–Eyebrow badge rendered above the heading via shadcn Badge
headingstring–Section heading
descriptionstring–Supporting paragraph under the heading
phasesPhase[][]Ordered timeline entries
labels{ completed?: string; current?: string; upcoming?: string }–Status-pill text for each phase state
classNamestring–Extra classes for the outer <section>
ts
type PhaseStatus = "completed" | "current" | "upcoming";

interface Phase {
  title: string;
  description: string;
  date: string;
  status: PhaseStatus;
}

Behavior notes

  • Each phase looks up a statusConfig entry keyed by its status to pick the node icon (Check, Clock, or Circle), the node color classes, and the connector-line color.
  • The connector line renders under every node except the last: isLast is computed as index === phases.length - 1 and suppresses the trailing segment.
  • The status pill text comes from getStatusLabel, which maps each status to the matching labels string with "Completed", "In Progress", and "Upcoming" fallbacks.
  • The timeline block renders only when phases.length > 0; the badge, heading, and description each render only when their prop is present.
  • Completed and current pills share a bg-primary/10 text-primary treatment while upcoming pills use a muted style, and every string is plain text with no inline markup parsing, so HTML passed in shows as escaped text.
  • Uses the shadcn Badge primitive for the eyebrow and lucide icons for the per-phase status nodes.

More Coming Soon blocks

View all Coming Soon
PRO

comingsoon78

Public Roadmap Coming Soon

FREE

comingsoon1

Countdown Timer Launch

FREE

comingsoon2

Development Progress Milestones

Get Pro access