Fundamentos

1

Desarrollo web con Next.js: Aplicaciones listas para producción

2

Novedades y cambios clave en Next.js 15

3

Migración de Aplicaciones a NextJS 15: Paso a Paso

Haciendo tu proyecto más rápido

4

Refactorización de componentes en Next.js usando React Server Components

5

Conexión Directa a PostgreSQL desde React Server Components

Consumiendo datos de manera eficiente

6

Uso de ORM Drizzle para Gestión de Datos en Next.js

7

Consumo de APIs con React Query en Aplicaciones Next.js

8

Consumo de Datos: Secuencial, Paralelo y Preload en Next.js

9

Optimización de Carga con Suspense en Next.js y React

Escalabilidad y personalización

10

Internacionalización en NextJS: Middleware y Rutas Dinámicas

11

Internacionalización en Next.js: Traducción y Formato de Fechas y Números

12

Autenticación con Middleware en Next.js: Cookies y Redirección

13

Manejo de Cookies con Next.js para Autenticación Segura

14

Integración de Feature Flags en aplicaciones Next.js

15

Manejo de Errores en React Server Actions y Next.js

16

Observabilidad de Errores con Sentry en Aplicaciones Next.js

Características Adicionales y Herramientas

17

Sistema de Caché en Next.js: Opciones y Nuevas Funcionalidades

18

Seguridad en Next.js: Server Actions y Componentes en React

19

Seguridad de Cookies y Encriptación en Aplicaciones Web

20

Optimización del Rendimiento en Next.js: Medición y Mejoras Prácticas

21

Despliegue de Aplicaciones Next.js con Vercel y Docker

22

Despliegue de Next.js en Fly.io con Docker y PostgreSQL

23

Configurar variables de entorno con Docker y Flyo

24

Migración de PHP a Next.js para Mejorar SEO y Performance

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Refactorización de componentes en Next.js usando React Server Components

4/24
Recursos

Explorar las capacidades avanzadas de React Server Components en Next.js nos permite no solo optimizar el rendimiento de nuestras aplicaciones, sino también aprovechar mejor las ventajas que este framework ofrece al trabajar directamente con bases de datos y datos asincrónicos. Este enfoque refuerza la experiencia del usuario desde el primer render.

¿Qué son los React Server Components y por qué son relevantes?

  • Son una funcionalidad avanzada desarrollada en colaboración con Facebook y Next.js.
  • Permiten que ciertos componentes sean renderizados en el servidor, enviando contenido estático optimizado al cliente.
  • Mejoran el rendimiento y la indexación SEO, ya que los datos llegan completos al primer render del navegador.

¿Cómo identificar un componente cliente en Next.js?

  • Un componente cliente se puede reconocer por el uso de hooks como useEffect y useState.
  • Los datos en este caso son cargados dinámicamente desde el cliente, no desde el servidor.
  • La revisión de la pestaña "Network" en el navegador muestra que el HTML inicial no contiene los datos renderizados.

¿Cómo refactorizar un componente cliente a servidor?

  1. Transformar el componente en una función asíncrona:
    • Eliminar useEffect y useState.
    • Usar await para obtener los datos directamente desde la API o base de datos.
  2. Definir rutas absolutas para el fetch:
    • Asegurarse de usar la ruta completa del servidor (por ejemplo, http://localhost:3000/api/...).
  3. Ajustar los tipos con TypeScript:
    • Usar inferencia de tipos para garantizar consistencia en los datos.
  4. Probar la funcionalidad:
    • Confirmar que el HTML inicial contiene todos los datos, optimizando así el render inicial y la experiencia del usuario.

¿Qué beneficios aporta esta optimización?

  • Mejora en rendimiento:
    • Datos precargados en el HTML inicial.
    • Menos dependencias de JavaScript en el cliente.
  • SEO mejorado:
    • Los motores de búsqueda indexan contenido completo desde el primer render.
  • Experiencia de usuario optimizada:
    • Los usuarios reciben información inmediata sin depender de llamadas adicionales al servidor.

¿Qué tecnologías complementan este flujo?

  • Base de datos: Postgres:
    • Se utiliza junto con un ORM como Drizzle para gestionar la capa de datos.
  • Setup del proyecto:
    • Next.js en su última versión, TypeScript, Tailwind CSS, Prettier y TurboPack.
  • Herramientas auxiliares:
    • Scripts automatizados para prellenar la base de datos y facilitar el desarrollo.

¿Cómo garantizar la funcionalidad?

  • Verificar el contenido inicial en el HTML para confirmar que los datos vienen desde el servidor.
  • Usar herramientas como PG Web para monitorizar los datos cargados en la base de datos.
  • Configurar correctamente las dependencias para evitar errores comunes.

Aportes 10

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Recuerden que antes de ejecutar los comandos de pnpm es necesario configurar la variable de entorno: ➡️ .env: `POSTGRESQL_ENDPOINT=postgresql://username:password@host:port/dtabase_name` ➡️ Ejecutar comandos: `pnpm bookmarks:db:push` `pnpx tsx ./app/bookmarks/populate.ts` Espero ayudar a alguien, saludos 😎
Si bien son una gran ayuda me gustaria saber que cuidados se deberian tener, que otras cosas afectaria, facturación en infra ? por ejemplo.
El repositorio del proyecto base es este <https://github.com/platzi/curso-next15> Lo pueden bajar con ```js git clone https://github.com/platzi/curso-next15.git ```
Para los que prefieran utilizar un archivo de docker compose para la DB y el visualizador les dejo el código que utilicé: `docker-compose.yml` ```js version: '3.8' services: postgres: image: postgres:15 environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=nextjs_db ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data restart: unless-stopped pgweb: image: sosedoff/pgweb environment: - PGWEB_DATABASE_URL=postgres://postgres:postgres@postgres:5432/nextjs_db?sslmode=disable ports: - "8081:8081" depends_on: - postgres restart: unless-stopped volumes: postgres_data: version: '3.8' services: postgres: image: postgres:15 environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=nextjs_db ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data restart: unless-stopped pgweb: image: sosedoff/pgweb environment: - PGWEB_DATABASE_URL=postgres://postgres:postgres@postgres:5432/nextjs_db?sslmode=disable ports: - "8081:8081" depends_on: - postgres restart: unless-stopped volumes: postgres_data: ``` Una vez agregado ese archivo en la raíz del proyecto, modificamos el `.env` ```js POSTGRESQL_ENDPOINT=postgresql://postgres:postgres@localhost:5432/nextjs_db ```
Hace falta el tutorial para configurar el PostgreSQL, cual me recomiendan? Dejaré en suspenso el curso mientras logro solventar el no tenerlo en mi ambiente...
Consejo si van a usar docker, no instalen la versión de pc en windows 11. A mi se me ocurrió hacerlo y estaban chocando algunos configuraciones. No me detectaba las credenciales bien de drizzle. Solo después de borrar docker de windows comenzo a funcionar... y probe de todo, checar envs, url, subir de version a postgres etc, reinstalar el proyecto.
Estos son los datos cargados en la BD: ![](https://static.platzi.com/media/user_upload/Captura%20desde%202025-03-10%2017-15-05-0a9cea00-1c7d-4a26-a83c-0a34433fb7b3.jpg) ![](https://static.platzi.com/media/user_upload/Captura%20desde%202025-03-10%2017-15-22-eddad2cf-bfd9-46c5-ab5e-f40510afd82c.jpg)
Como se configuran las variables de entorno para postgress. Y tengo problemas con la instalacion ![](https://static.platzi.com/media/user_upload/image-7f2f3439-1554-4d99-9e52-279e27a4da94.jpg)![]()
Para aquellos en IOS que presenten problemas al utilizar "pnpx", parece que este comando esta siendo deprecado. El nuevo seria: pnpm dlx tsx ./app/bookmarks/populate.ts (cambia pnpx por pnpm dlx, o crean un alias si prefieren)
para postgres, puedes instalar directamente en tu maquina o si tienes docker, montar una imagen con volumen para no perder la data, en el segundo caso con chatgpt lo optienes, los comandos a seguir: `pnpm bookmarks:db:push ` `pnpx tsx ./app/bookmarks/populate.ts`