shadcn examples svg logo
487

Command Palette

Search for a command to run...

Sign inGet All Access

Shadcn Activity Feed

Activity Feed is a notification style feed block that groups user events under date headings like a product changelog for your team. Unlike the milestone-focused Timeline, it centers on people, pairing Shadcn UI avatars with entries for status changes, comments, mentions, added tags, file uploads, and ticket assignments, each with colored badges and timestamps. Filter and view controls with a Switch and Button sit above the Tailwind-styled list. Ready for React, Vuejs, and Svelte, with all three versions included.

Premium
Activity Feed preview

Other Timelines Examples

Get Unlimited Access to All Examples & Blocks.
Unlock everything with a single payment. Get lifetime access to all content. You will also receive free access to all new examples.

A People First Activity Log Grouped by Day

Activity Feed is a full page block that presents a team's recent history the way humans recall it: by day, by person, by action. As the component maps over its events, a small currentDate tracker detects when the date changes and injects an uppercase header like SUNDAY, 06 MARCH before the next group. The result reads as a diary of the workspace, with eight demo events spanning status changes, comments, tags, file uploads, mentions, and ticket assignments.

Avatars for People, Icon Bubbles for System Events

Every row leads with a visual anchor chosen by event type. Human actions show a Shadcn UI Avatar with an image when available and an initials fallback on the primary token otherwise, while tag and file events swap in a muted circle holding a lucide Tag or FileText icon. A one pixel border colored line runs down behind the anchors to stitch the rows into a continuous thread, and all sizing steps up from h-6 to h-8 at the md breakpoint for comfortable desktop density.

Status Badges, Tag Dots, and Quote Boxes

Three small systems carry the feed's meaning. Status changes render a Badge whose tint and leading dot come from a getStatusColor helper, green for Completed, blue for In progress. Added tags appear as colored dot plus label pairs via getTagColor. Comments and mentions expand into rounded bg-muted quote boxes beneath the actor line, giving long text room without breaking the rhythm of the timeline. Each pattern is a tiny function or conditional block, easy to extend with new colors or event shapes.

Filtering Affordances in the Header

The Activity log title row ships with two controls: a Show mentioned only Switch and a ghost variant filter Button with an icon. They are intentionally presentation ready rather than prewired, so you decide whether filtering happens client side over the array or server side in your query. On phones the header stacks vertically and the controls stay reachable, thanks to a flex-col to flex-row responsive swap.

Where a Feed Like This Belongs

This block fits products where many actors touch shared objects: project management tools, ticketing systems, CRM records, and admin audit trails. It also pairs naturally with the notifications blocks, the feed being the permanent record and notifications being the interruptive slice of the same event stream. Anywhere the question is who did what, and when, this component is the answer surface.

Premium Tier, Theming, and Setup

Activity Feed is one of the Premium blocks, so an All Access plan opens both the code view and the CLI route. The fastest setup is the shadcn CLI snippet displayed above the demo, offered in npm, pnpm, yarn, and bun forms, though the unlocked code tab supports direct copying too. Styling rests on Tailwind utilities over foreground, muted, and border tokens, so the layout adapts once your app configures dark mode; only the semantic status and tag hues are literal classes you may want to map to your own palette. If your stack is not React, the same feed exists for Vuejs and for Svelte, each built on the respective shadcn-vue and shadcn-svelte component ports.

Frequently Asked Questions

How are events grouped under the day headings?
Each event carries a date string, and during the render loop a currentDate variable compares it against the previous row. Whenever the value changes, an uppercase tracked header is emitted before the row, so grouping costs no extra data structure, just presorted events.
What decides whether a row shows an avatar or an icon circle?
The event type. tag_added and file_added render a muted circle with a matching lucide icon, while every person driven type, comments, mentions, status changes, and assignments, renders an Avatar with an image or initials fallback. The branch is a single conditional in the row markup.
Is the Show mentioned only toggle functional out of the box?
It renders and animates but is not bound to the list, by design. Connecting it is a few lines: hold the Switch state, then filter the array to type mention before mapping. Keeping the block unopinionated lets you filter on the server instead if your feed is paginated.
How does this feed differ from the milestone timeline example?
The milestone block tracks a planned sequence of phases with done, active, and upcoming states, while this feed captures an unplanned chronological stream centered on people, with date grouping, avatars, and comment excerpts. Pick the feed for audit style history and the milestone rail for roadmap style progress.
What does the Premium label on this block mean?
It is the higher of the two paid tiers. The preview is open to everyone, but reading the source and installing through the registry both require an All Access purchase, which also covers every pro block across the site.