shadcn.io is not affiliated with official shadcn/ui
Changelog Feed Dashboard Block for React
A what-is-new feed of nine releases under month headings, topic chips with unread counts, an unread-only toggle, and rows that open to details and mark themselves seen.
Installation
Overview
Follow only the product areas you care about, with this what-is-new feed for React with Base UI. A hairline frame with a plus mark on each corner opens with a band of controls: a multiple Toggle Group of topics (Billing, Editor, API, Mobile), each showing how many unread releases it holds and at least one always on, and a second toggle that limits the feed to the unread ones. Nine Pressdrop releases follow newest first under month headings, each with a type word in a Badge (New, Improved or Fixed), its date, a title and a two-line summary. A dot marks an unseen release; opening a row shows its details and marks it seen, so the dot goes and its topic's count falls. "Mark shown as seen" does the same for everything in view. An Empty state covers a view with nothing unread. It's built from Toggle Group, Badge, Button, Empty and Guides. For product updates pages, release inboxes and customer newsletters.
FAQ
Why must one topic stay on?
With none on there would be nothing to show and no way to tell a filter from a broken feed, so the last topic cannot be switched off. To see a single topic, switch the others off one by one.
What marks a release as seen?
Opening it. A release arrives unseen if its fresh flag is true, and the page keeps the ids you have opened or marked. Closing a release does not bring the dot back, and Mark shown as seen only touches releases that match the topics and the Show toggle.
What stays local, and how do I wire it for real?
Everything: the releases are typed, seen state lives in this tab and nothing is sent. Load releases from your changelog source with their topic and date, and store the seen ids per reader.
Why does opening a release not move the page?
The feed sits in a scroll region of fixed height, so a release growing and the filters shortening the list both happen inside it.