Model the data, then the UI
We design the data flow and server/client boundary first. Components follow the data, not the other way around.
We build React interfaces that a team can still reason about in year two: typed props, server components where they pay off, and no state-management cargo cult.
Almost everyone can write React. Far fewer write React that does not rot. The hard parts are data flow, render boundaries, and knowing which state belongs on the server. We treat those as design decisions, not afterthoughts.
We design the data flow and server/client boundary first. Components follow the data, not the other way around.
TypeScript from the API contract to the prop. If it compiles, a whole class of runtime bugs is already gone.
Server components and data fetching on the server reduce client bundle and round trips. We use client state only where interaction demands it.
Component and integration tests on the parts that break: forms, data loading, and edge states. Handoff includes the test suite.