Full Release Notes By MonthFREE

A complete changelog grouped by month, each version on a hairline row beside its entries, every line tagged added, changed, fixed, or removed with its own tone.

Changelog28: Full Release Notes By Month

A complete changelog grouped by month, each version on a hairline row beside its entries, every line tagged added, changed, fixed or removed with its own tone.

Free block

This block is free. No license or account is required: install it with the CLI and use it in unlimited projects.

Installation

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/changelog28"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/changelog28"

This installs the block to components/beste/block/changelog28.tsx plus the badge23 component it uses for the eyebrow.

Quick start

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

tsx
import { Changelog28, changelog28Demo } from "@/components/beste/block/changelog28";

export default function ReleaseNotesPage() {
  return <Changelog28 {...changelog28Demo} />;
}

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

tsx
import { Changelog28 } from "@/components/beste/block/changelog28";

export default function ReleaseNotesPage() {
  return (
    <Changelog28
      badge={{ label: "Release notes" }}
      heading="Everything that changed, line by line"
      description="The full log rather than the highlights."
      kindLabels={{ added: "Added", changed: "Changed", fixed: "Fixed", removed: "Removed" }}
      months={[
        {
          label: "May 2026",
          releases: [
            {
              version: "3.4.0",
              date: "14 May",
              href: "/changelog/3-4-0",
              entries: [
                { kind: "added", text: "Shared waiting list across every site in a group" },
                { kind: "removed", text: "Per-site waiting list settings" },
              ],
            },
          ],
        },
      ]}
      footnote="Nothing is ever quietly edited after publication."
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Eyebrow above the hairline rule, rendered through Badge23
headingstringSection heading in the left column of the header
descriptionstringSupporting paragraph, right-aligned from md up
kindLabelsRecord<Kind, string>The word shown on each entry chip
monthsMonth[][]Month groups, each holding its releases
footnotestringCorrection policy under the log
classNamestringExtra classes for the outer section
ts
type Kind = "added" | "changed" | "fixed" | "removed";

type Entry = {
  kind: Kind;
  text: string;
};

type Release = {
  version: string;
  date: string;
  entries: Entry[];
  href: string;
};

type Month = {
  label: string;
  releases: Release[];
};

Behavior notes

More Changelog blocks

View all Changelog
PRO

changelog4

Grouped Changelog Board

Month-grouped changelog board with aligned labels, release details, and optional links.

PRO

changelog7

Categorized Release Notes

Release notes with changes grouped by type — Added, Changed, Fixed — using color-coded category labels.

PRO

changelog12

Large Version Changelog

Poster-style changelog with oversized version numbers as visual anchors, followed by date, heading, and description text.

PRO

changelog10

Dense Inline Release Log

Compact single-line release rows with color-coded type dots, version tags, and a legend footer. Optimized for dense, scannable API changelogs.

PRO

changelog14

Year-Grouped Accordion Changelog

Releases grouped by year in collapsible accordion panels with release count indicators.

PRO

changelog11

Two-Column Date Changelog

Minimal two-column layout with fixed-width date column on the left and version heading with change list on the right.