Feature Voting Roadmap

Help Us Prioritize

You decide what we build first.

These are the features on the table for launch. Vote for the ones you need most and we'll ship in the order you set.

  • Offline mode

    Keep working when the connection drops, sync the moment it returns.

  • Native mobile app

    A full companion app for iOS and Android, not just a shrunken website.

  • Public API and webhooks

    Wire your data into the tools your team already runs on.

  • Dark theme

    An easy-on-the-eyes theme for the late shifts.

About this block

Feature Voting RoadmapPRO

A pre-launch feature-voting section with a centered square eyebrow and heading, and a list of upcoming feature cards each with a title, description, and an interactive upvote control that updates the count.

ComingSoon39: Feature Voting Roadmap

A pre-launch feature-voting section built on a single accent color, with a centered square eyebrow and heading, and a list of upcoming feature cards below, each with a title, a description, and an interactive upvote control that updates the visible count.

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

Base UI flavor

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

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

Quick start

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

tsx
import { ComingSoon39, comingsoon39Demo } from "@/components/beste/block/comingsoon39";

export default function Page() {
  return <ComingSoon39 {...comingsoon39Demo} />;
}

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

tsx
import { ComingSoon39 } from "@/components/beste/block/comingsoon39";

export default function Page() {
  return (
    <ComingSoon39
      label="Help Us Prioritize"
      heading="You decide what we build first."
      description="Vote for the features you need most and we'll ship in the order you set."
      features={[
        {
          title: "Offline mode",
          description: "Keep working when the connection drops, sync when it returns.",
          votes: 312,
        },
        {
          title: "Native mobile app",
          description: "A full companion app for iOS and Android, not a shrunken website.",
          votes: 268,
        },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
labelstringCentered square eyebrow rendered above the heading via Badge6
headingstringCentered section heading
descriptionstringSupporting paragraph under the heading
featuresFeatureItem[][]Upcoming feature cards, each with its own upvote control
classNamestringExtra classes for the outer <section>
ts
type FeatureItem = {
  title: string;
  description: string;
  votes: number;
};

Behavior notes

  • Each feature card has an interactive upvote button, not a form: clicking it toggles that card's index in local voted state, sets aria-pressed, and restyles the button with the accent color.
  • The displayed count is derived, not stored: it renders feature.votes plus one while the card is voted, so toggling adds or removes a single vote against the base votes number and nothing is persisted or sent anywhere.
  • The feature list renders only when features is non-empty, mapping each entry into a bordered bg-card row with the vote control on the left and the title and description on the right.
  • The centered eyebrow, heading, and description each render only when their prop is present.
  • The votes value is a number, and the title and description are plain text with no inline markup parsing, so HTML passed in shows as escaped text.

More Coming Soon blocks

View all Coming Soon
PRO

comingsoon78

Public Roadmap Coming Soon

A pre-launch section that publishes remaining work instead of a date, with an image tile floating a live release tracker over hairline rows marked shipped, in testing, or queued.

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

comingsoon27

Launch Roadmap Columns

A pre-launch roadmap laid out as three now-next-later columns with a monospace parenthetical eyebrow, a heading and changelog pill button on top, and ruled entry lists under each column header.

PRO

comingsoon43

Survey Waitlist

A pre-launch survey card with a square eyebrow, a heading, a single-choice question with selectable radio options, and a working rounded email-capture form with a success state.

PRO

comingsoon50

Launch Readiness Progress

A coming-soon section on a soft muted card with a monospace parenthetical eyebrow, a heading, a launch-readiness percentage that counts up with an animated progress bar, a build-status row, and a working email notify form.

PRO

comingsoon15

Waitlist Coming Soon

A centered pre-launch section with an eyebrow, a large light heading, a paragraph, an image tile holding a working email-capture form with a success state, and a social-proof note.