A changelog that gives the newest version a split of its own, pairing a checked highlight list and two actions with an image tile floating live post-release figures, over the earlier versions as hairline rows.
A changelog that gives the newest version a split of its own, pairing a checked highlight list and two actions with an image tile floating live post-release figures, over the earlier versions as hairline rows.
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.
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
npx shadcn add "https://ui.beste.co/r/changelog27?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/changelog27?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/changelog27.tsx, the dashboard33 metrics piece it floats on the tile (installed to components/beste/piece/dashboard33.tsx), and the badge23 and button21 components it uses for the eyebrow and the actions.
The installed file exports changelog27Demo alongside the block: the exact props behind the preview above. Spread it to get a working changelog in one line.
import { Changelog27, changelog27Demo } from "@/components/beste/block/changelog27";
export default function ChangelogPage() {
return <Changelog27 {...changelog27Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Changelog27 } from "@/components/beste/block/changelog27";
import { Dashboard33 } from "@/components/beste/piece/dashboard33";
export default function ChangelogPage() {
return (
<Changelog27
badge={{ label: "Latest release" }}
version="v3.4.0"
date="14 May 2026"
heading="One waiting list across every site"
description="The largest change we have shipped since billing."
highlights={[
"Capacity is now modelled at group level while rooms stay per site",
"Cancellations are offered to the whole waiting list in order",
]}
media={
<Dashboard33
title="Since the release"
range="14 to 31 May"
items={[{ label: "Refilled", value: "84%", delta: "+46", direction: "up" }]}
/>
}
image={{ src: "/backdrops/blue.jpg", alt: "Soft blue gradient backdrop" }}
buttons={[
{ label: "Read the release note", href: "/changelog/3-4-0" },
{ label: "See what changed for you", href: "/changelog/diff" },
]}
previousTitle="Before this"
previous={[
{
version: "v3.3.2",
date: "02 May 2026",
title: "Faster invoice export for large groups",
summary: "Month-end exports went from ninety seconds to under four.",
href: "/changelog/3-3-2",
},
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string } | – | Eyebrow at the top left, rendered through Badge23 |
version | string | – | Version token, paired with the date on the right |
date | string | – | Release date, shown beside the version |
heading | string | – | What the release is, in plain language |
description | string | – | Supporting paragraph, capped at max-w-md |
highlights | string[] | [] | Checked list of what changed |
media | ReactNode | – | Live asset on the tile, dashboard33 in the demo |
image | { src: string; alt: string } | – | Backdrop behind the media tile |
buttons | ActionLink[] | [] | Actions, first solid and the rest outlined |
previousTitle | string | – | Heading above the earlier releases |
previous | Previous[] | [] | Earlier versions as linked hairline rows |
className | string | – | Extra classes for the outer section |
type ActionLink = {
label: string;
href: string;
};
type Previous = {
version: string;
date: string;
title: string;
summary: string;
href: string;
};version and date are joined into one line with a middle dot at the top right of the header, opposite the eyebrow. Both are plain strings and neither is parsed or formatted, so the block stays free of server and client locale differences.Link elements laid out as a three-track grid from md: version, date, then title and summary. Below md they stack in that same order.md:px-4 alongside the hover fill, so the highlight extends slightly past the text on wider screens.tabular-nums so the column stays aligned across different version lengths.lg:items-center, so the tile stays centered against a copy column whose height varies with the number of highlights.primary, later ones are outline.changelog8
Latest release highlighted in a featured card with full details, followed by a compact list of previous releases.
changelog24
Release feed with prominent callout blocks highlighting the most impactful change per release.
changelog18
Full-width hero images with rich release content below. Marketing-focused changelog for major product announcements.
changelog10
Compact single-line release rows with color-coded type dots, version tags, and a legend footer. Optimized for dense, scannable API changelogs.