--- key: spa.spa-rebuild-decision title: 2026-06 — UI rebuild is a React SPA (ChicoryTV) on the REST API, not a Blazor reskin status: active since: 2026-06 supersedes: none superseded-by: none rule: The UI is a full React SPA (ChicoryTV) rebuild over the REST API, not a Blazor Server reskin. signals: 'Blazor removal phases (a)/(b), root-flip, legacy-route redirects · paths: `ErsatzTV/LegacyUiRedirects.cs`, `docs/blazor-route-parity.md` · issues: #59, #91, #148' mechanics: '`docs/blazor-route-parity.md`' --- #59 committed to a full SPA rebuild rather than reskinning Blazor Server pages. Blazor removal is split into two phases under #91: **(a)** root-flip (SPA becomes `/`) + legacy-route redirects — DONE, merged via PR #148 (`ErsatzTV/LegacyUiRedirects.cs`, `feat/91-cutover` → main). **(b)** full Blazor removal — gated on every route having an SPA equivalent; tracked route-by-route in `docs/blazor-route-parity.md`.