WDI Marketplace
Multi-vendor e-commerce · Next.js web, Flutter app, Odoo 18 API

Live Monitoring Dashboard

CASE STUDY · 2026
A real-time monitoring dashboard that stays smooth and bounded in memory at 1,000 messages per second, and treats every byte from the stream as untrusted.
React 19
TypeScript
Vite
useSyncExternalStore
uPlot
TanStack Virtual
Vitest
GitHub Actions
THE STORY
A monitoring screen has to keep up with a fast, unreliable stream without freezing the browser. Naive React re-renders on every message, memory grows without limit, and a single malformed or hostile frame can break the page or inject markup.
A React 19 dashboard on a simulated socket that emits raw JSON frames, including drops, malformed frames and XSS payloads.
useSyncExternalStore with referentially stable slices: the chart does not re-render when only a counter moves.innerHTML, and a test proves hostile payloads stay literal.Unit and component tests sit beside the code they cover, CI runs lint, type checks, tests and the build on every push, and a stress run at 1,000 msg/s went from 1,868 dropped events to zero after moving queue draining onto the flush timer.
USER FLOWS
01Live streamKPIs, a latency chart and a virtualized event list, fed by a live stream of raw JSON frames.
021,000 messages per secondAt 1,000 msg/s the UI still renders about four times a second, with nothing dropped.
03SettingsBuffer size, update throttle and stream rate, validated and clamped.
04Filter and searchCritical events from one source, found with a debounced search.
05PausedThe view freezes while the stream keeps counting what arrives.
06ReconnectingA dropped connection retries with backoff and shows the attempt number.
07Dark themeFollows the system colour scheme.
08Phone layoutStatus, controls and KPI cards stacked for one-handed use.
09Latency chartA canvas chart downsampled to 500 points with LTTB.
10Recent eventsOnly the visible rows are in the DOM.
11Dark themeThe same layout in the dark theme.
CONTACT
Have a role or a project in mind? Send me a message and I'll get back to you the same day.