Split Layout with Features and Social Proof

Getting Started

Welcome to your new workspace

Set up your account in minutes and start collaborating with your team right away.

  • Unlimited projects and tasks
  • Real-time collaboration
  • Advanced analytics and reporting
  • 24/7 priority support
50,000+ active users
4.9 (2,000+ reviews)
Dashboard preview
About this block

Split Layout with Features and Social ProofPRO

Two-column welcome layout with feature checklist, user count, and star ratings alongside an image. Perfect for SaaS onboarding that highlights key benefits and builds trust.

Onboarding2: Split Layout with Features and Social Proof

Two-column welcome screen that pairs a benefit checklist and user/rating social proof with a hero image. There is no step state anywhere in the component; features, socialProof, and the button row are all static display data rendered once.

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

Base UI flavor

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

This installs the block to components/beste/block/onboarding2.tsx and the badge and button shadcn/ui primitives it depends on.

Quick start

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

tsx
import { Onboarding2, onboarding2Demo } from "@/components/beste/block/onboarding2";

export default function OnboardingPage() {
  return <Onboarding2 {...onboarding2Demo} />;
}

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

tsx
import { Onboarding2 } from "@/components/beste/block/onboarding2";

export default function OnboardingPage() {
  return (
    <Onboarding2
      badge="Getting Started"
      heading="Welcome to your new workspace"
      description="Set up your account in minutes and start collaborating right away."
      features={[
        { id: "1", text: "Unlimited projects and tasks" },
        { id: "2", text: "Real-time collaboration" },
        { id: "3", text: "Advanced analytics and reporting" },
      ]}
      image={{
        src: "https://images.unsplash.com/photo-1531297484001-80022131f5a1?w=1200&h=900&fit=crop",
        alt: "Team workspace",
      }}
      socialProof={{ userCount: "50,000+", rating: 4.9, ratingCount: "2,000+" }}
      buttons={[
        { label: "Continue Setup", href: "/setup" },
        { label: "Skip for now", href: "/dashboard", variant: "ghost" },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
badgestringSmall outline badge above the heading
headingstringMain headline
descriptionstringSupporting copy below the heading
featuresFeature[][]Checklist rendered with a checkmark bullet
image{ src: string; alt: string }Hero image in the second column
socialProofSocialProofUser count and rating row below the features
buttonsButtonConfig[][]CTA row at the bottom of the content column
labels{ users?: string; reviews?: string }{}Trailing words after the user count and rating count
displayPosition"left" | "right""left"Which side the content column sits on
classNamestringExtra classes for the outer <section>
ts
type Feature = { id: string; text: string };

type SocialProof = {
  userCount?: string;
  rating?: number;
  ratingCount?: string;
};

type ButtonConfig = {
  label: string;
  href: string;
  variant?: "default" | "ghost" | "outline";
};

Behavior notes

  • There is no wizard or step state in this component at all: features, socialProof, and image are all static informational content rendered once, and the buttons are plain links with no onClick/callback props.
  • labels is merged with the demo module's own labels object ({ ...onboarding2Demo.labels, ...labels }) before rendering, so a partial labels prop still falls back to the demo's "active users"/"reviews" wording rather than a hardcoded default inside the component body.
  • Only the first button (index 0) gets a trailing ArrowRight icon; every other button renders as plain text, so the primary CTA should be listed first in buttons.
  • displayPosition="right" flips the visual order with an arbitrary Tailwind selector (lg:[&>*:first-child]:order-2) applied to the grid wrapper rather than reordering the JSX, so the DOM order (content, then image) stays the same and only the rendered order at lg and above changes.
  • The social proof row shows the user-count stat and the star-rating stat independently: each renders only when its own field (userCount or rating) is present, so either can be omitted without leaving a gap.

More Onboarding blocks

View all Onboarding
FREE

onboarding1

Welcome Hero with Step Indicator

Centered welcome screen featuring a hero image, step counter, and dual CTAs. Perfect for app onboarding flows that guide users through a multi-step setup process.

FREE

onboarding3

Minimal Welcome with Icon

Clean, centered welcome screen with a branded icon, heading, and single call-to-action. Perfect for simple app introductions that prioritize clarity over complexity.

PRO

onboarding24

Keyboard Shortcuts Cheat Sheet

Onboarding screen displaying essential keyboard shortcuts in a grouped grid layout with key badges. Perfect for productivity tools that want to accelerate user adoption.

PRO

onboarding33

Interactive Setup Checklist

A setup panel pairing a soft progress column, where an oversized percentage and accent bar react to what is ticked, with hairline checklist rows that each carry a description and a jump-in link.

FREE

onboarding43

Guided Workspace Setup

A two-column setup section: the pitch and what each answer changes on the left, and a one-question-at-a-time wizard on the right that ends in a review of everything it is about to create.

PRO

onboarding30

Feature Tour Carousel

Onboarding screen with navigable feature highlight cards, dot indicators, and back/next buttons. Perfect for introducing key platform features during the first-time user experience.