CRITICAL BUG FIX: This was the ACTUAL root cause of infinite loading state!
The Bug:
--------
apiClient.get() already returns response.data (line 494 in apiClient.ts):
```typescript
async get<T>(url: string): Promise<T> {
const response = await this.client.get(url);
return response.data; // Returns data directly
}
```
But hooks were doing:
```typescript
queryFn: async () => {
const response = await apiClient.get('/endpoint');
return response.data; // Bug! Accessing .data on data = undefined
}
```
Flow of the Bug:
----------------
1. API call succeeds with 200 OK
2. apiClient.get() returns: {status: "green", headline: "..."}
3. Hook tries to access .data on that object
4. Returns undefined to React Query
5. Component checks: if (!healthStatus) → true (because undefined)
6. Shows skeleton loader forever
The Fix:
--------
Changed all 5 hooks to:
```typescript
queryFn: async () => {
return await apiClient.get('/endpoint'); // ✅ Returns data directly
}
```
Now:
1. API call succeeds with 200 OK
2. apiClient.get() returns: {status: "green", headline: "..."}
3. Hook returns data to React Query
4. React Query sets data
5. Component receives data → exits loading state
6. Dashboard renders! 🎉
Fixed hooks:
- useBakeryHealthStatus
- useOrchestrationSummary
- useActionQueue
- useProductionTimeline
- useInsights
Previous fixes that were needed but insufficient:
- Added enabled: !!tenantId (prevented queries when tenantId empty)
- Added useTenantInitializer (populated tenantId)
- But data was still undefined due to this .data bug!