Version history cards with version badges, dates, and update type labels (Feature, Improvement, Fix). Perfect for product update pages and release notes.
Static changelog/release-notes list: a centered header sits above a stack of version cards, each showing a version badge, optional type badge, date, title, and description.
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/saas16"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/saas16"This installs the block to components/beste/block/saas16.tsx and the badge shadcn/ui primitive it depends on.
The installed file exports saas16Demo alongside the block: the exact props behind the preview above. Spread it to get a working changelog in one line.
import { Saas16, saas16Demo } from "@/components/beste/block/saas16";
export default function ChangelogPage() {
return <Saas16 {...saas16Demo} />;
}Then replace the demo with your own props. Written out, the same setup looks like this:
import { Saas16 } from "@/components/beste/block/saas16";
export default function ChangelogPage() {
return (
<Saas16
heading="Release notes"
description="Every update, in one place."
items={[
{
version: "1.4.0",
date: "Jan 9, 2026",
title: "Faster search indexing",
description: "Search results now update within seconds of a catalog change.",
badge: { label: "Improvement", variant: "secondary" },
},
{
version: "1.3.0",
date: "Dec 20, 2025",
title: "Dark mode",
description: "The dashboard now follows your system theme.",
badge: { label: "Feature", variant: "default" },
},
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string; icon?: React.ReactNode; variant?: "default" | "secondary" | "outline" } | – | Small badge above the heading |
heading | string | – | Section heading |
description | string | – | Section intro text |
items | ChangelogItem[] | [] | Version cards rendered in order |
className | string | – | Extra classes for the outer <section> |
type ChangelogItem = {
version: string;
date: string;
title: string;
description: string;
badge?: { label: string; variant?: "default" | "secondary" | "outline" };
};items array; there's no sorting by version or date, so the caller is responsible for ordering newest-first.Badge for its version string; the per-item badge field (e.g. "Feature"/"Improvement"/"Fix") is a separate, optional second badge shown next to it.max-w-xl, narrower than the section's max-w-5xl container, so cards stay readable even though the header block above spans wider.items renders fully at once.saas87
Metric cards grid showing key stats (users, revenue, conversion, sessions) with trend indicators and time range selector. Perfect for admin dashboards and analytics overviews.
saas55
Integration management card showing connected apps with logos, sync status, and connect/disconnect actions. Perfect for settings pages managing third-party integrations.
saas34
Media mentions list with publication source badges, headlines, and dates. Perfect for showcasing company press coverage and news articles.
saas23
Bento-style grid layout with feature cards in small and large sizes, each with icon, title, and description. Perfect for showcasing product capabilities on landing pages.
saas15
Team member cards with circular photos, names, roles, and social media links (Twitter, LinkedIn, GitHub). Perfect for about pages showcasing company leadership.
saas13
Comparison table showing features across Starter, Pro, and Enterprise tiers with checkmarks. Perfect for pricing pages that need clear feature differentiation.