root@construct:~/logs/react-server-components-realmente-bom-ou-sindrome-de-estocolmo$
<-- voltar para /logs
2026-02-22//LOG

React Server Components: Realmente Bom ou Síndrome de Estocolmo?

Tô usando React Server Components faz uns meses. O blog roda em Next.js App Router, e uns componentes na Yooga tão migrando pra RSC. Ainda tô dividido sobre a experiência.

A mudança de modelo mental foi brutal. Por anos, React era uma biblioteca client-side: tudo renderizava no browser, e data fetching ficava por conta do client. Aí vem RSC com componentes que rodam no servidor e nunca mandam JavaScript pro client. Gosto do conceito, mas a curva de aprendizado foi terrível.

A fronteira do "use client" é onde mora a dor. Tu tá escrevendo um componente de boa até precisar de useState ou useEffect ou qualquer hook que implique interatividade. Aí tu precisa quebrar teu componente numa parte server e uma parte client, conectadas pela diretiva "use client." Na teoria não é difícil. Na prática, tu acaba com uma estrutura de arquivo que parece que alguém jogou uma granada na pasta de componentes. ServerWrapper importa ClientButton que recebe dado do ServerDataFetcher que é filho do ClientLayout. O grafo de dependência vira um jogo de amarelinha entre server e client. PQP.

As partes boas me fazem continuar. Componente puramente de apresentação não manda JavaScript pro client, então tua página de blog manda basicamente zero JS. Pra buscar dado inicial, tu faz async/await no componente, sem useEffect, loading state ou race condition. O componente roda no servidor, busca o dado e manda o HTML renderizado. Pra página pesada em leitura, era assim que sempre deveria ter sido.

Streaming é a killer feature que ninguém fala o suficiente. Com Suspense boundary, tua página começa a renderizar na hora e vai preenchendo as seções mais lentas conforme resolvem. O usuário vê conteúdo rápido mesmo se algum dado leva 2 segundos pra buscar. Não é tecnologia nova mas RSC torna trivial de implementar. Envolve componente lento em Suspense, bota fallback, pronto.

Os problemas de DX são reais. Mensagem de erro críptica demais. "Você está importando um componente que precisa de useState. Só funciona em Client Component mas nenhum dos pais está marcado com use client." Valeu, obrigado. Agora preciso reestruturar três arquivos porque coloquei um hover effect. TypeScript tá melhorando mas ainda tem aresta nos async server components. E o overhead mental de ficar o tempo todo pensando "isso é server ou client?" bota fricção em cada decisão.

Meu veredito depois de uns meses: RSC é a direção certa. A execução ainda tá tosca. Se tu tá buildando site com muito conteúdo e ilhas de interatividade, RSC é ótimo agora. Se tá buildando dashboard super interativo, o gerenciamento constante de fronteira server/client vai te fazer questionar tuas escolhas de carreira.

Não tenho Síndrome de Estocolmo. Acho. Mas eu também disse isso sobre Redux em 2019, então leva com o ceticismo adequado.

The Broad Way | Kinho.dev