Alex Rivera interviews Maya Lin, Staff Engineer, Vercel
What was the biggest challenge when adopting RSC at scale?
Cache invalidation across server and client boundaries. We had to rethink our entire data fetching strategy because stale closures in server components behave differently than in traditional SPAs. It took about three months to build the right abstractions.
How do you handle shared state between server and client components?
We use a thin serialization layer that passes only the minimal props needed. Anything interactive lives in a client component island. The key insight was treating the server-client boundary like an API contract with strict typing.
What advice would you give teams starting with RSC today?
Start with your data-heavy pages first, not your interactive ones. The biggest wins come from moving database queries to server components and eliminating client-side waterfalls. Build a small proof of concept before migrating your entire app.