Server Components: a year in
After twelve months of shipping React Server Components in client projects, what works and what is still rough.
We've shipped React Server Components in production for a year now. Verdict: mostly good, occasionally surprising, never the dealbreaker the early discourse made it out to be.
What works
Default-server is the right default. Most page content doesn't need interactivity. Pushing data fetching into the component tree removes a whole class of useEffect bugs. The bundle savings are real.
What's still rough
Mental model for new hires. The "is this server or client?" question gets asked more often than it should. We tag client components with a leading 'use client' line and a brief comment explaining why - the discipline pays back every onboarding.
Library compatibility. Packages that touch hooks-only code still need a thin wrapper. The ecosystem is catching up but not done.
The honest take
Server Components didn't change how we build. They changed how we structure what we already build. That's a quieter win than the launch posts suggested, but it's a real one.