State Management Patterns
1. Server-to-Client State Flow
sequenceDiagram
participant Server
participant Context
participant Client
Server->>Context: Fetch initial data
Server->>Context: Pass as props
Context->>Client: Provide via Context
Client->>Client: Use state
Client->>Context: Update state (if mutable)
Context->>Client: Re-render with new state
Pattern:
- Server Component fetches data
- Data passed to Context Provider as props
- Context Provider initializes state
- Client Components consume via hooks
2. Form State Flow
sequenceDiagram
participant Form
participant RHF
participant Zod
participant Action
Form->>RHF: User input
RHF->>RHF: Update state
RHF->>Zod: Validate on submit
Zod->>RHF: Validation result
RHF->>Action: Submit if valid
Action->>Form: Success/Error
Pattern:
- React Hook Form manages form state
- Zod validates on submit
- Server Action processes submission
- Form handles success/error states
3. Table State Flow
sequenceDiagram
participant Table
participant Context
participant Hook
participant Supabase
participant URL
Table->>Context: Update filters/sort
Context->>Hook: Trigger refetch
Hook->>URL: Update search params
Hook->>Supabase: Fetch data
Supabase->>Hook: Return data
Hook->>Context: Update state
Context->>Table: Re-render
Pattern:
- User interacts with table (filter, sort, paginate)
- Context updates state
- Hook fetches data from Supabase
- URL updated for shareability
- Table re-renders with new data