Episode 2 — React Frontend Architecture NextJS / 2.12 — Server State and API Integration
2.12.c — Server state vs client state
Learning outcomes
- Classify a piece of state as server-owned, client-owned, or derived.
- Avoid two sources of truth for the same entity.
- Choose URL state when shareability matters.
Definitions
- Server state: remote records, authoritative validation, may be stale the instant you receive it.
- Client state: UI control, ephemeral panels, animation toggles, optimistic drafts until commit.
Anti-pattern: mirror server entities in global store
If you also cache the same entity in React Query (or SWR), you now must keep them in sync. Prefer one cache owner.
When useState is still correct
A modal open flag does not belong in the server cache. Keep it local—or in a tiny UI store if many distant components must open the same dialog intentionally.
Appendix — Scenario bank (basic → advanced)
Flashcard rhythm: symptom → cause → fix → phrase for interviews.
API2-001 — server vs client #1
- Level: Beginner
- Symptom: stale UI or spinner stuck after
13ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-002 — server vs client #2
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
26ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-003 — server vs client #3
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
39ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-004 — server vs client #4
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
52ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-005 — server vs client #5
- Level: Advanced
- Symptom: stale UI or spinner stuck after
65ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-006 — server vs client #6
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
78ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-007 — server vs client #7
- Level: Beginner
- Symptom: stale UI or spinner stuck after
91ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-008 — server vs client #8
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
104ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-009 — server vs client #9
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
117ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-010 — server vs client #10
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
130ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-011 — server vs client #11
- Level: Advanced
- Symptom: stale UI or spinner stuck after
143ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-012 — server vs client #12
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
156ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-013 — server vs client #13
- Level: Beginner
- Symptom: stale UI or spinner stuck after
169ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-014 — server vs client #14
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
182ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-015 — server vs client #15
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
195ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-016 — server vs client #16
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
8ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-017 — server vs client #17
- Level: Advanced
- Symptom: stale UI or spinner stuck after
21ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-018 — server vs client #18
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
34ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-019 — server vs client #19
- Level: Beginner
- Symptom: stale UI or spinner stuck after
47ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-020 — server vs client #20
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
60ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-021 — server vs client #21
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
73ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-022 — server vs client #22
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
86ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-023 — server vs client #23
- Level: Advanced
- Symptom: stale UI or spinner stuck after
99ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-024 — server vs client #24
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
112ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-025 — server vs client #25
- Level: Beginner
- Symptom: stale UI or spinner stuck after
125ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-026 — server vs client #26
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
138ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-027 — server vs client #27
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
151ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-028 — server vs client #28
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
164ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-029 — server vs client #29
- Level: Advanced
- Symptom: stale UI or spinner stuck after
177ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-030 — server vs client #30
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
190ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-031 — server vs client #31
- Level: Beginner
- Symptom: stale UI or spinner stuck after
3ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-032 — server vs client #32
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
16ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-033 — server vs client #33
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
29ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-034 — server vs client #34
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
42ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-035 — server vs client #35
- Level: Advanced
- Symptom: stale UI or spinner stuck after
55ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-036 — server vs client #36
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
68ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-037 — server vs client #37
- Level: Beginner
- Symptom: stale UI or spinner stuck after
81ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-038 — server vs client #38
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
94ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-039 — server vs client #39
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
107ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-040 — server vs client #40
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
120ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-041 — server vs client #41
- Level: Advanced
- Symptom: stale UI or spinner stuck after
133ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-042 — server vs client #42
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
146ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-043 — server vs client #43
- Level: Beginner
- Symptom: stale UI or spinner stuck after
159ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-044 — server vs client #44
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
172ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-045 — server vs client #45
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
185ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-046 — server vs client #46
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
198ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-047 — server vs client #47
- Level: Advanced
- Symptom: stale UI or spinner stuck after
11ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-048 — server vs client #48
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
24ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-049 — server vs client #49
- Level: Beginner
- Symptom: stale UI or spinner stuck after
37ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-050 — server vs client #50
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
50ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-051 — server vs client #51
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
63ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-052 — server vs client #52
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
76ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-053 — server vs client #53
- Level: Advanced
- Symptom: stale UI or spinner stuck after
89ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-054 — server vs client #54
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
102ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-055 — server vs client #55
- Level: Beginner
- Symptom: stale UI or spinner stuck after
115ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-056 — server vs client #56
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
128ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-057 — server vs client #57
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
141ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-058 — server vs client #58
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
154ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-059 — server vs client #59
- Level: Advanced
- Symptom: stale UI or spinner stuck after
167ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-060 — server vs client #60
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
180ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-061 — server vs client #61
- Level: Beginner
- Symptom: stale UI or spinner stuck after
193ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-062 — server vs client #62
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
6ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-063 — server vs client #63
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
19ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-064 — server vs client #64
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
32ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-065 — server vs client #65
- Level: Advanced
- Symptom: stale UI or spinner stuck after
45ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-066 — server vs client #66
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
58ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-067 — server vs client #67
- Level: Beginner
- Symptom: stale UI or spinner stuck after
71ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-068 — server vs client #68
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
84ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-069 — server vs client #69
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
97ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-070 — server vs client #70
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
110ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-071 — server vs client #71
- Level: Advanced
- Symptom: stale UI or spinner stuck after
123ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-072 — server vs client #72
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
136ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-073 — server vs client #73
- Level: Beginner
- Symptom: stale UI or spinner stuck after
149ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-074 — server vs client #74
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
162ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-075 — server vs client #75
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
175ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-076 — server vs client #76
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
188ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-077 — server vs client #77
- Level: Advanced
- Symptom: stale UI or spinner stuck after
1ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-078 — server vs client #78
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
14ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-079 — server vs client #79
- Level: Beginner
- Symptom: stale UI or spinner stuck after
27ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-080 — server vs client #80
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
40ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-081 — server vs client #81
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
53ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-082 — server vs client #82
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
66ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-083 — server vs client #83
- Level: Advanced
- Symptom: stale UI or spinner stuck after
79ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-084 — server vs client #84
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
92ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-085 — server vs client #85
- Level: Beginner
- Symptom: stale UI or spinner stuck after
105ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-086 — server vs client #86
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
118ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-087 — server vs client #87
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
131ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-088 — server vs client #88
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
144ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-089 — server vs client #89
- Level: Advanced
- Symptom: stale UI or spinner stuck after
157ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-090 — server vs client #90
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
170ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-091 — server vs client #91
- Level: Beginner
- Symptom: stale UI or spinner stuck after
183ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-092 — server vs client #92
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
196ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-093 — server vs client #93
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
9ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-094 — server vs client #94
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
22ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-095 — server vs client #95
- Level: Advanced
- Symptom: stale UI or spinner stuck after
35ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-096 — server vs client #96
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
48ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-097 — server vs client #97
- Level: Beginner
- Symptom: stale UI or spinner stuck after
61ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-098 — server vs client #98
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
74ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-099 — server vs client #99
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
87ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-100 — server vs client #100
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
100ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-101 — server vs client #101
- Level: Advanced
- Symptom: stale UI or spinner stuck after
113ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-102 — server vs client #102
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
126ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-103 — server vs client #103
- Level: Beginner
- Symptom: stale UI or spinner stuck after
139ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-104 — server vs client #104
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
152ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-105 — server vs client #105
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
165ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-106 — server vs client #106
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
178ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-107 — server vs client #107
- Level: Advanced
- Symptom: stale UI or spinner stuck after
191ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-108 — server vs client #108
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
4ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-109 — server vs client #109
- Level: Beginner
- Symptom: stale UI or spinner stuck after
17ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-110 — server vs client #110
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
30ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-111 — server vs client #111
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
43ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-112 — server vs client #112
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
56ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-113 — server vs client #113
- Level: Advanced
- Symptom: stale UI or spinner stuck after
69ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-114 — server vs client #114
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
82ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-115 — server vs client #115
- Level: Beginner
- Symptom: stale UI or spinner stuck after
95ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-116 — server vs client #116
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
108ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-117 — server vs client #117
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
121ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-118 — server vs client #118
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
134ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-119 — server vs client #119
- Level: Advanced
- Symptom: stale UI or spinner stuck after
147ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-120 — server vs client #120
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
160ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-121 — server vs client #121
- Level: Beginner
- Symptom: stale UI or spinner stuck after
173ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-122 — server vs client #122
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
186ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-123 — server vs client #123
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
199ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-124 — server vs client #124
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
12ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-125 — server vs client #125
- Level: Advanced
- Symptom: stale UI or spinner stuck after
25ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-126 — server vs client #126
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
38ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-127 — server vs client #127
- Level: Beginner
- Symptom: stale UI or spinner stuck after
51ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-128 — server vs client #128
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
64ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-129 — server vs client #129
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
77ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-130 — server vs client #130
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
90ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-131 — server vs client #131
- Level: Advanced
- Symptom: stale UI or spinner stuck after
103ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-132 — server vs client #132
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
116ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-133 — server vs client #133
- Level: Beginner
- Symptom: stale UI or spinner stuck after
129ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-134 — server vs client #134
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
142ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-135 — server vs client #135
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
155ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-136 — server vs client #136
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
168ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-137 — server vs client #137
- Level: Advanced
- Symptom: stale UI or spinner stuck after
181ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-138 — server vs client #138
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
194ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-139 — server vs client #139
- Level: Beginner
- Symptom: stale UI or spinner stuck after
7ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-140 — server vs client #140
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
20ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-141 — server vs client #141
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
33ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-142 — server vs client #142
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
46ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-143 — server vs client #143
- Level: Advanced
- Symptom: stale UI or spinner stuck after
59ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-144 — server vs client #144
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
72ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-145 — server vs client #145
- Level: Beginner
- Symptom: stale UI or spinner stuck after
85ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-146 — server vs client #146
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
98ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-147 — server vs client #147
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
111ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-148 — server vs client #148
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
124ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-149 — server vs client #149
- Level: Advanced
- Symptom: stale UI or spinner stuck after
137ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-150 — server vs client #150
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
150ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-151 — server vs client #151
- Level: Beginner
- Symptom: stale UI or spinner stuck after
163ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-152 — server vs client #152
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
176ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-153 — server vs client #153
- Level: Intermediate
- Symptom: stale UI or spinner stuck after
189ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-154 — server vs client #154
- Level: Intermediate+
- Symptom: stale UI or spinner stuck after
2ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Keep drafts in local state or sessionStorage until submit.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-155 — server vs client #155
- Level: Advanced
- Symptom: stale UI or spinner stuck after
15ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Pick one owner for server entities: cache library; UI reads via selectors/hooks.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-156 — server vs client #156
- Level: Advanced+
- Symptom: stale UI or spinner stuck after
28ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Single source: URL or store—adapter bridges if needed.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-157 — server vs client #157
- Level: Beginner
- Symptom: stale UI or spinner stuck after
41ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: Model events as patches with timestamps or sequence numbers.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.
API2-158 — server vs client #158
- Level: Beginner+
- Symptom: stale UI or spinner stuck after
54ms of navigation. - Integration smell: server errors surfaced as blank screen without recovery path.
- Root cause class: Duplicated user profile in Redux and React Query diverging after edit.
- Primary remediation: After mutation invalidate or patch query cache; avoid parallel truths.
- Verify: Network tab + React Query Devtools (if used) + user retry path.
- Interview one-liner: Server state is async and shared; client state is synchronous and local until you choose otherwise.