Member-only story
Backstage Signals: Real-Time Updates Without Polling
The signals plugin brings WebSocket-based push updates to Backstage. Here is what it enables and how to use it.
TL;DR: The signals plugin (@backstage/plugin-signals, @backstage/plugin-signals-backend) provides a WebSocket channel between Backstage backend plugins and the frontend. Backend plugins publish signals, frontend plugins subscribe to them. No polling needed.
Our pipeline status widget refreshed every 30 seconds. Not because 30 seconds was the right interval, but because polling was the only option and we didn’t want to hammer the Jenkins API any harder. Developers watched deployments happen in other tools and checked Backstage after the fact.
The Backstage signals plugin changes this. Instead of clients polling for updates, the backend pushes messages over WebSockets when something changes. The UI updates immediately.
The Architecture
The signals system has three parts:
- A backend plugin that manages WebSocket connections and routes messages
- A frontend plugin that maintains the WebSocket connection and exposes a subscription API
- An API that lets backend plugins publish signals to…
