¿Por qué la lista pública se renderiza en el servidor y el panel no?
Una lista de nacimiento se comparte por WhatsApp y se abre desde el móvil de gente que nunca ha oído hablar de Pekke. Eso obliga a que el HTML llegue montado desde el servidor: si los regalos los pintara el navegador después de descargar y ejecutar JavaScript, ni el buscador vería el contenido al indexar, ni WhatsApp podría componer la tarjeta con título e imagen al pegar el enlace, porque el robot que la genera no ejecuta JavaScript. La tarjeta no es un detalle estético: es lo primero que ve la familia a la que le llega el enlace.
El panel de los padres es el caso contrario. Está detrás de un login, no hay nada que indexar y todo su valor está en la interacción. Se monta como isla client:only: el servidor no lo renderiza siquiera. Renderizarlo también en servidor solo añadiría latencia y el descuadre clásico entre lo que pinta el servidor y lo que pinta el cliente en una vista que depende de la sesión.
Astro permite tomar esa decisión página a página en lugar de para toda la aplicación, y ese es exactamente el motivo de haberlo elegido: la parte pública va renderizada en servidor y la privada va en el navegador, dentro del mismo proyecto y con el mismo código de dominio. Las piezas interactivas de la lista —los filtros, el diálogo de reserva— son islas de Vue que se hidratan sobre un HTML que ya es correcto sin ellas.
Compruébalo Abre el código fuente de pekke.es/gonzalo, una lista real: los 21 regalos, con su nombre, su tienda y su precio, están en el HTML de la primera respuesta.