Before vs After Comparison

What's Changing

A massive leap forward

See how the new version compares to what you're using today. Every limitation you've reported — we've addressed it.

API Rate Limit
Now100 req/min
ComingUnlimited
Collaboration
NowSingle user only
ComingReal-time, up to 50 users
Custom Domains
Now1 domain
ComingUnlimited domains
Analytics
NowBasic metrics
ComingAdvanced dashboards + AI insights
Authentication
NowEmail & password only
ComingSSO, SAML & passwordless
Support
NowEmail, 48h response
Coming24/7 priority with SLA

All improvements included in existing plans at no extra cost

About this block

Before vs After ComparisonPRO

Coming soon section with a side-by-side comparison table showing current limitations versus upcoming improvements. Perfect for SaaS upgrades and product relaunches.

ComingSoon12: Before vs After Comparison

A centered coming-soon section that stacks an eyebrow badge, heading, and description above a stacked list of improvement rows, each pairing a feature name with a struck-through current value and an arrow pointing to its upcoming replacement, closed by an optional footer note.

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/comingsoon12?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

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

Quick start

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

tsx
import { ComingSoon12, comingsoon12Demo } from "@/components/beste/block/comingsoon12";

export default function Page() {
  return <ComingSoon12 {...comingsoon12Demo} />;
}

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

tsx
import { ComingSoon12 } from "@/components/beste/block/comingsoon12";

export default function Page() {
  return (
    <ComingSoon12
      badge={{ label: "What's changing", variant: "secondary" }}
      heading="A massive leap forward"
      description="See how the new version compares to what you use today."
      improvements={[
        { feature: "API rate limit", before: "100 req/min", after: "Unlimited" },
        { feature: "Collaboration", before: "Single user", after: "Up to 50 users" },
        { feature: "Support", before: "Email, 48h", after: "24/7 priority with SLA" },
      ]}
      labels={{
        before: "Now",
        after: "Coming",
        footerText: "Every improvement is included in existing plans at no extra cost.",
      }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }Eyebrow badge rendered above the heading via the shadcn Badge, defaulting to the default variant
headingstringSection heading
descriptionstringSupporting paragraph under the heading
improvementsImprovement[][]Comparison rows, each pairing a feature with its before and after values
labels{ before?: string; after?: string; footerText?: string }Text for the before pill, after pill, and footer note
classNamestringExtra classes for the outer <section>
ts
interface Improvement {
  feature: string;
  before: string;
  after: string;
}

Behavior notes

  • Each improvement renders as a bordered card row: the feature name sits in a fixed-width column, then a struck-through before value, an arrow icon, and the emphasized after value.
  • The before and after pill captions fall back to Now and Coming when labels.before or labels.after is omitted.
  • The improvements list only renders when the array is non-empty, and the footer paragraph only renders when labels.footerText is set.
  • The before and after values are truncated on overflow within their flex columns, so long strings clip rather than wrap.
  • There are no interactive elements or callbacks; the block is purely presentational.
  • Every string is rendered as plain text with no inline markup parsing, so HTML passed into any field shows as escaped text.

More Coming Soon blocks

View all Coming Soon
PRO

comingsoon7

Launch Roadmap Timeline

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.

PRO

comingsoon14

Early Access Tiers

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.

FREE

comingsoon1

Countdown Timer Launch

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.

PRO

comingsoon9

Bento Stats Dashboard

Coming soon section with a bento-grid of live build stats like commits, test coverage, uptime, and team size. Perfect for building in public with transparent engineering metrics.

PRO

comingsoon6

Waitlist with Avatars

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.

PRO

comingsoon56

Restaurant Opening Soon

A hospitality coming-soon section with an interior image beside a venue name, a square eyebrow, a heading, an opening details grid with icons, and a working email list form with a success state.