Live Breakdown shows how a total splits into parts, live. It renders a donut chart and a table in a block, and updates them in the browser within about a second of new data arriving, without page reloads or Ajax calls on a timer.
It works for any "share of total" data: traffic by source, votes by option, tickets by status, sales by region, or market share by venue.
How it works
A small companion service written in Go (standard library only) holds the current data and pushes updates to browsers with Server-Sent Events. Drupal provides the block, the settings, and a publish form. The live stream goes straight from the Go service to the browser, so open tabs never hold a PHP-FPM worker.
Features
- Live updates over SSE. One long-lived connection per browser replaces repeated polling requests.
- Handles bad networks. The widget reconnects automatically. It detects proxies that accept the stream but never send data, falls back to polling, and switches back to live streaming when it can.
- Cache-friendly. The block is fully cacheable. The snapshot route sends
public, max-age=2, so
Varnish or a CDN can absorb the polling traffic. - Saves resources. Updates pause when a tab is in the background, and several blocks on one page share a single connection.
- Publish form. Admins can enter names and values by hand and push them to every open page right away.
- Accessible and themeable. Colors use the Okabe-Ito palette, which is safe for colorblind readers, and the
chart has a text summary for screen readers. Every color is a CSS custom property (--lb-*) that your theme can
override. - Clear status. A badge tells readers whether the data is live, reconnecting, polling, paused, or offline.
Requirements
- Drupal 11
- The bundled Go service (Go 1.22 or later), reachable by both PHP and browsers
Getting started
- Install the module:
composer require 'drupal/live_breakdown:^1.0@alpha', thendrush en live_breakdown. - Start the Go service, which ships inside the module: from
web/modules/contrib/live_breakdown/go-service, rungo run . - Set the service URL and stream URL at Configuration › Web services › Live Breakdown.
- Place the Live Breakdown: live share chart block.
The README covers running the service inside DDEV, the publish token, and deploying to production.
Connecting your own data
The Go service ships with a simulator so you can see it working right away. For real data, replace the simulator with a
reader for your feed, or push updates from Drupal or any other system to the POST /publish endpoint. The hub and HTTP layer don't change.
Ask your assistant about Live Breakdown
Check compatibility with your Drupal and PHP version, maintenance and security coverage, from current release data. How it works
Depends on
Dependencies of the latest stable release
No dependencies recorded for this project.
Required by
Tracked projects that depend on this one
No tracked projects depend on this one yet.
Activity
Release Timeline
Releases
| Version | Type | Core | PHP | Release date | |
|---|---|---|---|---|---|
| 1.0.0-alpha2 | Pre-release | 11 | Nov 2, 2026 | ||
| 1.0.0-alpha1 | Pre-release | 11 | Nov 2, 2026 | ||
| 1.0.x-dev | Dev | 11 | Nov 2, 2026 |