Think in boundaries
The key shift is deciding where the server ends and the client begins. Keep the boundary as deep in the tree as possible and pass serializable props across it.
Colocate data fetching
Fetching inside the components that need data removes prop drilling and enables streaming with Suspense, giving users meaningful content faster.
Avoid accidental waterfalls
Sequential awaits quietly slow pages. We parallelize independent requests and preload data to keep time-to-content low.