Version Rail Release Timeline

Changelog

What shipped, and what it changed

Every release is written by the team that built it, with the detail you need before you tell your staff what moved.

v4.2April 12, 2026NewScheduling

Waitlists that fill their own gaps

When an appointment is cancelled inside the notice window, the slot now reopens to the waitlist in order and closes itself as soon as someone takes it.

  • Per-service waitlist rules with a maximum offer window
  • Automatic notice by email or SMS, in the member's language
  • A cancelled slot never sits empty waiting for the front desk
Read the release note
v4.1March 28, 2026ImprovedBilling

Claims reconcile against payments

Submitted claims now match themselves to incoming payments and surface only the ones that need a human, so month end stops being a spreadsheet exercise.

  • Batch submission with per-insurer templates
  • Unmatched payments collected in a single review queue
  • Export the whole ledger in one file
v4.0March 09, 2026NewRecords

One member directory across every site

Groups can now share a single member record between locations while each site keeps its own calendars, rooms, and templates.

  • Records follow the member, not the location
  • Role-scoped access stays per site
  • Merge tool for duplicates created before the rollout
See the migration guide
v3.9February 21, 2026FixedPerformance

Faster records, quieter mornings

Opening a member file is now roughly three times faster on large practices, and the daily agenda loads before the first appointment of the day.

  • Record timelines render in under 200ms on large accounts
  • Fixed duplicate reminders on rescheduled appointments

Older releases, plus the API and webhook history, live in the full archive.

Browse all releases
About this block

Version Rail Release TimelinePRO

A release feed with a sticky version rail that filters the list, and hairline entries carrying a version and date line, tone-coded tags, an accent-bulleted highlight list, and an optional release note link.

Changelog26: Version Rail Release Timeline

Release feed with a sticky version rail on the left that filters the list to a single release, beside hairline entries carrying a version and date line, tone-coded tags, an accent-bulleted highlight list, and an optional link into the full note.

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

Base UI flavor

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

This installs the block to components/beste/block/changelog26.tsx plus the badge23 and button21 components it uses for the eyebrow, the tags, and the archive action.

Quick start

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

tsx
import { Changelog26, changelog26Demo } from "@/components/beste/block/changelog26";

export default function ChangelogPage() {
  return <Changelog26 {...changelog26Demo} />;
}

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

tsx
import { Changelog26 } from "@/components/beste/block/changelog26";

export default function ChangelogPage() {
  return (
    <Changelog26
      badge={{ label: "Changelog" }}
      heading="What shipped, and what it changed"
      allLabel="Everything"
      items={[
        {
          version: "v4.2",
          date: "April 12, 2026",
          title: "Waitlists that fill their own gaps",
          description: "A cancelled slot now reopens to the waitlist in order.",
          tags: [{ label: "New", tone: "primary" }, { label: "Scheduling" }],
          highlights: ["Per-service waitlist rules", "Notice by email or SMS"],
          link: { label: "Read the release note", href: "/changelog/4-2" },
        },
        {
          version: "v4.1",
          date: "March 28, 2026",
          title: "Claims reconcile against payments",
          description: "Submitted claims match themselves to incoming payments.",
          tags: [{ label: "Improved", tone: "foreground" }],
        },
      ]}
      footnote={{
        label: "Older releases live in the full archive.",
        button: { label: "Browse all releases", href: "/changelog/archive" },
      }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Monospace eyebrow above the hairline rule, rendered via Badge23
headingstringSection heading in the left column
descriptionstringSupporting paragraph, right-aligned from md up
allLabelstringLabel of the rail entry that clears the version filter
itemsRelease[][]Releases, in the order they should read
footnote{ label: string; button: ActionLink }Closing line and outline button under the feed
classNamestringExtra classes for the outer <section>
ts
type ActionLink = { label: string; href: string };

type Tag = {
  label: string;
  tone?: "muted" | "foreground" | "primary";
};

type Release = {
  version: string;
  date: string;
  title: string;
  description: string;
  tags?: Tag[];
  highlights?: string[];
  link?: ActionLink;
};

Behavior notes

  • The rail filters rather than scrolls. Clicking a version sets local state and the feed renders only the release whose version matches, so nothing is anchored and no scroll position is manipulated.
  • Filtering compares the raw version string, so two releases sharing a version string would both survive the filter. Keep the strings unique.
  • The rail is a real <nav> with an <ul>, and every entry is a <button> carrying aria-pressed, so the current filter is announced rather than only coloured.
  • Layout changes shape at md: the rail is a wrapping row of pills on mobile and becomes a sticky hairline column at lg (lg:sticky lg:top-24), which is why the pill borders are dropped in the desktop rail.
  • Tags run through Badge23 with the tone passed straight through, so primary reads as the accent for new work, foreground for changes, and the default muted for the quieter ones.
  • Highlights are a plain list with an accent dot as the marker, sized and offset to sit on the first line of each entry rather than an icon that would shift with the text.
  • The version and date line inside each entry sits on one wrapping row, separated by a small dot, so the version token still reads as an identifier without pulling a second typeface into the block.

More Changelog blocks

View all Changelog
PRO

changelog5

Milestone Changelog Timeline

Timeline-style changelog with version badges, dates, and color-coded change types. Ideal for release notes and version history.

PRO

changelog15

Stacked Release Cards

Stacked release cards with heading, description, change list, and version footer. Clean vertical feed for product updates.

PRO

changelog3

Changelog Release Feed

Release feed cards with aligned change labels, summaries, and optional CTA buttons.

FREE

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.

PRO

changelog24

Callout Highlight Changelog

Release feed with prominent callout blocks highlighting the most impactful change per release.

PRO

changelog12

Large Version Changelog

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