Great article! I am currently working on a team where we help product teams adopt new technologies, and we are currently seriously looking at server components with Next.js. Server components offer a lot of advantages in terms of both composition patterns and performance. Server actions are a great way to encapsulate fetching behavior and offer a better pattern than using custom React hooks. Custom hooks, while useful violate basic software design principles because all consumers must depend on the implementation, not the interface of a hook, meaning you can't pass them in as properties and such.