One workload · two architectural bets
Does a live operations dashboard need a SPA?
Northstar is a working fulfillment control tower built twice: once with server-rendered HTML, Datastar and htmx; once with React, TypeScript and TanStack Query. Both use the same Go domain model, PostgreSQL data, and continuous warehouse simulator.
The point is not to prove that one framework always wins. It tests a narrower idea: when the server owns the truth and most interactions are filters, mutations and pushed updates, can hypermedia deliver the same operational experience with less browser-side machinery?
Datastar + htmx
Server-rendered views, HTML fragment mutations and Datastar SSE element patches. Minimal handwritten JavaScript.
Open hypermedia control tower →VERSION B · JSON + CLIENT STATEReact + TanStack Query
A conventional TypeScript SPA consuming JSON endpoints and the same coalesced simulator stream over SSE.
Open React control tower →MEASURED RESULTSBenchmark
Compare transferred JavaScript, live network traffic, source complexity and the limits of what was measured.
Read the benchmark →First observation
Hypermedia shipped far less JavaScript. React sent slightly less data during sustained live updates. Architecture is a trade, not a leaderboard.