2.4.0
Changelog feed
BlockVersioned release notes with typed changes.
pnpm dlx shadcn@latest add https://caliperui.site/r/changelog-feed.jsonWhen to use #
Use it for
- Telling customers what has shipped.
Skip it when
- Notes are internal only.
Installation #
terminal
pnpm dlx shadcn@latest add https://caliperui.site/r/changelog-feed.json
Adds its 3 files to components/ui/, each with its own stylesheet, and installs their packages. No account needed. The first part also adds Caliper UI’s tokens; import them once as in Installation.
Usage #
This is the code behind the preview above.
example.tsx
import { ChangelogFeed } from "@/components/ui/changelog-feed" export function ChangelogFeedDemo() { return ( <ChangelogFeed description="What shipped and what changed." entries={[ { id: "e2", version: "2.4.0", date: "2025-10-14", title: "Faster tables", summary: "Large tables now scroll without dropping frames.", changes: [{ type: "new", text: "Column pinning" }, { type: "improved", text: "Row virtualisation" }, { type: "fixed", text: "Sorting kept stale rows" }] }, { id: "e1", version: "2.3.0", date: "2025-09-30", title: "Webhook retries", changes: [{ type: "new", text: "Retry from the delivery log" }, { type: "removed", text: "The legacy signing header" }] }, ]} /> ); }
API reference #
ChangelogFeed
component
PropTypeDefault
entries *readonly ChangelogEntry[]—
titlestring"Changelog"
descriptionstring—
hasMoreboolean—
loadingboolean—
onLoadMore(() => void)—
classNamestring—
Accessibility #
It exposes group and status semantics, with aria-label, aria-pressed and aria-hidden kept in step with state. Changes that matter are announced through a live region.
No custom key handling; Tab and the native activation keys do the work.
Motion #
It declares no animation in its component source. Any transition comes from its stylesheet, which uses the duration tokens that collapse to instant under prefers-reduced-motion.