Remove unnecessary SSR prefetch for user subscriptions

Problem

server-side-layout.tsx:22 prefetches user subscriptions on every feed page (/trending, /hot, etc.), but for non-logged-in users this fetches the hive.blog account's subscriptions which are never used.

Root Cause

  1. SSR prefetch uses observer from cookies, which falls back to DEFAULT_OBSERVER = 'hive.blog':

    // server-side-layout.tsx:21-24
    await queryClient.prefetchQuery({
      queryKey: ['subscriptions', observer],  // observer = 'hive.blog' for non-logged-in
      queryFn: () => getSubscriptions(observer)
    });
  2. Client-side query uses a different key and is disabled for non-logged-in users:

    // main-page-layout.tsx:26-30
    const { data } = useQuery({
      queryKey: ['subscriptions', user.username],
      queryFn: () => getSubscriptions(user.username),
      enabled: user.isLoggedIn && !!user?.username  // DISABLED for non-logged-in
    });
  3. Result for non-logged-in users:

    • SSR caches ['subscriptions', 'hive.blog'] - never used
    • Client query disabled - shows CommunitiesSidebar instead
    • API call is completely wasted

Impact

  • 1 extra API call per feed page visit by non-logged-in users
  • Contributes to API load (relevant to 503 errors during high traffic)
  • Query key mismatch means SSR data can't hydrate properly

Proposed Fix

Skip the prefetch for non-logged-in users:

// server-side-layout.tsx
import { DEFAULT_OBSERVER } from '@/blog/lib/utils';

// Only prefetch if logged in (observer is actual username, not default)
if (observer && observer !== DEFAULT_OBSERVER) {
  await queryClient.prefetchQuery({
    queryKey: ['subscriptions', observer],
    queryFn: () => getSubscriptions(observer)
  });
}

Files to Modify

  • apps/blog/features/layouts/sorts/server-side-layout.tsx (line 21-24)
  • API call comparison analysis: /home/dev/workspace/hive/denser/NOTES/03-api-call-comparison.md
  • See also: #764 (API call optimization meta-issue)