Severity: Medium
backgroundLogo (persisted to localStorage via settings-store.ts:105-111) is read directly during render of the top-level Layout client component (src/components/layout/layout.tsx:40-59), which Next.js still server-renders. Server sees the default sanAndreasSeal; after rehydration it becomes the stored value, so <Image src> differs between server and client.
Impact: React hydration warning + a logo flash for any user who changed the setting.
Fix: Gate on a mounted flag (render default until mounted), or use Zustand persist skipHydration + manual rehydrate.
Filed from a code audit of the current master. Line numbers are approximate.
Severity: Medium
backgroundLogo(persisted to localStorage viasettings-store.ts:105-111) is read directly during render of the top-levelLayoutclient component (src/components/layout/layout.tsx:40-59), which Next.js still server-renders. Server sees the defaultsanAndreasSeal; after rehydration it becomes the stored value, so<Image src>differs between server and client.Impact: React hydration warning + a logo flash for any user who changed the setting.
Fix: Gate on a
mountedflag (render default until mounted), or use Zustand persistskipHydration+ manual rehydrate.Filed from a code audit of the current
master. Line numbers are approximate.