Concepto A escala multi-equipo, la pregunta de arquitectura deja de ser "cómo estructuro una funcionalidad" y se convierte en "cómo trabajan los equipos en esta aplicación sin pisarse mutuamente" — la estructura de carpetas, UI compartida, y dónde vive la lógica del lado del servidor todos deben codificar límites de equipo.
Ejemplo Carpetas de funcionalidad (features/checkout/, features/search/) cada una dueña de sus componentes, Server Actions, y pruebas. Los Server Actions viven colocados con la funcionalidad que los usa por defecto; solo las acciones genuinamente transversales (auth, analytics) van en un módulo actions/ compartido. Un paquete de UI compartida contiene solo primitivas genuinamente reutilizables (Button, Input, tokens de layout) — los compuestos específicos de funcionalidad permanecen en la carpeta de funcionalidad aunque parezcan reutilizables al principio.
Trampa Un Client Component compartido que envuelve demasiado del árbol (un wrapper cliente <Providers> de nivel superior que contiene todo desde tema hasta analytics hasta una biblioteca de estado) arrastra el bundle de cada página consigo y fuerza a subárboles renderizados por servidor debajo de él a hidratar como código cliente incluso cuando no lo necesitaban. Esta es la versión multi-equipo de un Context Dios — todos lo importan, nadie puede cambiar de forma segura lo que hay dentro.
Respuesta senior Empuja "use client" a las hojas — el componente más pequeño que realmente necesita interactividad, no la parte superior del árbol — para que los Server Components permanezcan el defecto y el crecimiento del bundle del cliente sea atribuible a una funcionalidad específica, no a una raíz compartida. Desde que Next 16 eliminó la métrica "First Load JS" de la compilación, mide el impacto del bundle con conciencia a nivel de ruta vía Lighthouse CI o Vercel Analytics en su lugar, y bloquea PRs por una regresión ahí en lugar de mirar un log de compilación. Dale a cada equipo propiedad a nivel de carpeta (forzada vía code-owners) para que el límite sea estructural, no solo una convención que la gente olvida. Compromiso: colocar Server Actions por funcionalidad significa algo de duplicación entre funcionalidades versus un módulo compartido, a cambio de que los equipos puedan cambiar sus propias acciones sin una revisión entre equipos.