Episode 2 — React Frontend Architecture NextJS / 2.12 — Server State and API Integration

2.12.c — Server state vs client state

<< 2.12 Overview


Learning outcomes

  1. Classify a piece of state as server-owned, client-owned, or derived.
  2. Avoid two sources of truth for the same entity.
  3. 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 13 ms 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 26 ms 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 39 ms 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 52 ms 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 65 ms 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 78 ms 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 91 ms 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 104 ms 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 117 ms 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 130 ms 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 143 ms 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 156 ms 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 169 ms 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 182 ms 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 195 ms 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 8 ms 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 21 ms 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 34 ms 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 47 ms 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 60 ms 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 73 ms 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 86 ms 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 99 ms 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 112 ms 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 125 ms 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 138 ms 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 151 ms 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 164 ms 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 177 ms 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 190 ms 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 3 ms 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 16 ms 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 29 ms 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 42 ms 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 55 ms 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 68 ms 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 81 ms 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 94 ms 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 107 ms 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 120 ms 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 133 ms 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 146 ms 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 159 ms 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 172 ms 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 185 ms 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 198 ms 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 11 ms 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 24 ms 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 37 ms 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 50 ms 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 63 ms 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 76 ms 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 89 ms 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 102 ms 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 115 ms 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 128 ms 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 141 ms 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 154 ms 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 167 ms 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 180 ms 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 193 ms 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 6 ms 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 19 ms 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 32 ms 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 45 ms 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 58 ms 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 71 ms 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 84 ms 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 97 ms 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 110 ms 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 123 ms 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 136 ms 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 149 ms 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 162 ms 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 175 ms 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 188 ms 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 1 ms 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 14 ms 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 27 ms 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 40 ms 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 53 ms 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 66 ms 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 79 ms 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 92 ms 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 105 ms 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 118 ms 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 131 ms 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 144 ms 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 157 ms 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 170 ms 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 183 ms 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 196 ms 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 9 ms 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 22 ms 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 35 ms 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 48 ms 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 61 ms 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 74 ms 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 87 ms 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 100 ms 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 113 ms 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 126 ms 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 139 ms 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 152 ms 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 165 ms 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 178 ms 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 191 ms 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 4 ms 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 17 ms 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 30 ms 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 43 ms 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 56 ms 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 69 ms 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 82 ms 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 95 ms 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 108 ms 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 121 ms 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 134 ms 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 147 ms 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 160 ms 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 173 ms 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 186 ms 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 199 ms 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 12 ms 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 25 ms 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 38 ms 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 51 ms 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 64 ms 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 77 ms 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 90 ms 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 103 ms 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 116 ms 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 129 ms 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 142 ms 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 155 ms 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 168 ms 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 181 ms 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 194 ms 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 7 ms 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 20 ms 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 33 ms 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 46 ms 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 59 ms 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 72 ms 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 85 ms 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 98 ms 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 111 ms 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 124 ms 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 137 ms 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 150 ms 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 163 ms 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 176 ms 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 189 ms 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 2 ms 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 15 ms 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 28 ms 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 41 ms 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 54 ms 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.

<< 2.12 Overview