Back to blog
SaaS/ Feeds

Mar 12, 2026

Real-time activity feeds in your SaaS dashboard

Users log in and want to know what changed since Tuesday. Ship a feed of events, comments, and reactions without writing a second WebSocket tier.

Users log in Monday and want to know what changed since Friday. Who commented. What got shipped. Which alert fired at 3am. A dashboard with ten charts and no story doesn't answer that — a feed does.

The shape of the problem

Every SaaS product gets the same request: "can we see activity?" The team writes a timeline from scratch. Then someone asks for comments on entries. Then reactions. Then filtering by workspace. Then unread badges. Then mobile push. Six months in, the team has a half-built social network and nobody remembers it was supposed to be a change log.

The social-network-shaped hole in your SaaS dashboard is not a new product. It's a feed component.

Feeds scoped per workspace

One feed app per concern — deploys, alerts, releases — and the component merges them by passing a space-separated uid. Scope them per workspace and users only see their own.

<wy-feed
  uid="ws-<%= workspace.id %>-deploys ws-<%= workspace.id %>-alerts ws-<%= workspace.id %>-releases"
></wy-feed>

The server emits events into the relevant feed app. The component renders them in real-time. Users see what's new and the unread count updates live. When they mark the feed as read, it stays read across devices.

Comments on events, not just a timeline

"The staging deploy failed at 2am — did someone look?" That conversation used to live in the oncall Slack channel and disappear by Thursday. Attach it to the feed entry and it persists next to the event itself. New engineers join the team, scroll the feed, see both the incident and how it was handled.

AI summaries of the unread

Back from PTO with 142 unread entries. The Feeds component summarizes them with a pluggable model — deploys, alerts, and the three comments you were actually @-mentioned in.

What you don't have to build

  • A second WebSocket tier just to push activity to the dashboard.
  • Per-user unread state that survives reconnects and browser restarts.
  • A comments layer grafted onto a timeline that wasn't designed for one.

The dashboard stays a dashboard. The feed is a component next to it. The users actually open the app on Monday.

Ship the collaboration layer today

Free to start. No credit card. Your first component running in under ten minutes.

Talk to us

Questions, integrations, or just kicking the tires. Real answers from real engineers.