Most React apps still spell out `if (loading) … if (error) … if (data)` in every component. Suspense + an error boundary collapses all three into the JSX tree above. Here is the working pattern with React Query / SWR, the streaming SSR story, and the trap that makes Suspense look slow.
React Server Components confuse most developers because the mental model is unfamiliar. The fix is to think of the boundary as “where in the tree does this code need to be reactive?”. With that lens, every component decides itself whether it is a server or client component.