useState initializers read localStorage synchronously, which produced a different render on client (with persisted filterStatus='blocked') than on server (which has no localStorage and rendered 'all'). The chip-buttons that surface active filters caused a structural DOM mismatch next to the Popover trigger, raising a hydration error. Move the localStorage read into a post-mount useEffect, defaulting state to the SSR-compatible 'all'/'priority' on first render. Add a prefsLoaded flag so persist effects skip the initial render and don't overwrite saved values with defaults. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| backlog-card.tsx | ||
| pbi-dialog.tsx | ||
| pbi-list.tsx | ||
| story-dialog.tsx | ||
| story-panel.tsx | ||