The app currently has no error handling on its data layer: across the ~45 useQuery calls in routes/ there are zero isError checks, __root.tsx defines no errorComponent/pendingComponent, and there is no ErrorBoundary anywhere. A failed query renders exactly like empty data — routes/index.tsx shows a "…" placeholder forever, and routes/factory.tsx treats a failed flows load as "no flows". With a backend that can legitimately be down or mid-restart (see #75), the user can't tell a broken app from an empty factory.
What to do
- Add a root-level
errorComponent (and a default pendingComponent) on the router so thrown loader/render errors get a real fallback with a retry affordance instead of a blank page.
- Introduce a small shared "query state" wrapper (or convention) that renders distinct loading / error-with-retry / empty states, and apply it to the data-bearing pages: factory, block list + block page, browse, coherence, turd, whatif, tasks, index.
- Make loading states consistent — some pages show
"loading…"/"solving…" text (routes/turd.tsx, routes/coherence.tsx), others render nothing while loading.
- The assistant's ad-hoc
"idle"|"error" string state in routes/assistant.tsx should surface failures through the same visual language.
Part of the polish epic #35.
The app currently has no error handling on its data layer: across the ~45
useQuerycalls inroutes/there are zeroisErrorchecks,__root.tsxdefines noerrorComponent/pendingComponent, and there is no ErrorBoundary anywhere. A failed query renders exactly like empty data —routes/index.tsxshows a"…"placeholder forever, androutes/factory.tsxtreats a failed flows load as "no flows". With a backend that can legitimately be down or mid-restart (see #75), the user can't tell a broken app from an empty factory.What to do
errorComponent(and a defaultpendingComponent) on the router so thrown loader/render errors get a real fallback with a retry affordance instead of a blank page."loading…"/"solving…"text (routes/turd.tsx,routes/coherence.tsx), others render nothing while loading."idle"|"error"string state inroutes/assistant.tsxshould surface failures through the same visual language.Part of the polish epic #35.