<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>NextJS on Commentary of Takao</title><link>https://takao.blog/es/categories/nextjs/</link><description>Recent content in NextJS on Commentary of Takao</description><generator>Hugo -- gohugo.io</generator><language>es</language><copyright>Commentary of Takao</copyright><lastBuildDate>Sun, 12 Jul 2026 04:12:51 +0900</lastBuildDate><atom:link href="https://takao.blog/es/categories/nextjs/index.xml" rel="self" type="application/rss+xml"/><item><title>Partial Prerendering (PPR) en Next.js</title><link>https://takao.blog/es/web/nextjs-partial-prerendering-ppr/</link><pubDate>Tue, 10 Feb 2026 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/nextjs-partial-prerendering-ppr/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/nextjs-partial-prerendering-ppr-es.png" alt="Featured image of post Partial Prerendering (PPR) en Next.js" /&gt;&lt;p&gt;Partial Prerendering (PPR) combina contenido estático prerenderizado con contenido dinámico transmitido vía streaming en una misma página.&lt;/p&gt;
&lt;h2 id="el-problema"&gt;El problema
&lt;/h2&gt;&lt;p&gt;SSG: rápido pero contenido obsoleto. SSR: contenido fresco pero más lento. PPR ofrece lo mejor de ambos: HTML estático inmediato + partes dinámicas en streaming.&lt;/p&gt;
&lt;h2 id="cómo-funciona"&gt;Cómo funciona
&lt;/h2&gt;&lt;p&gt;Next.js prerenderiza el shell estático de la página. Los componentes dinámicos (con &lt;code&gt;cookies()&lt;/code&gt;, &lt;code&gt;headers()&lt;/code&gt;, &lt;code&gt;searchParams&lt;/code&gt;) se renderizan bajo demanda.&lt;/p&gt;
&lt;h2 id="configuración"&gt;Configuración
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;experimental.ppr = 'incremental'&lt;/code&gt; en next.config.js. Los componentes dinámicos se envuelven en Suspense. PPR solo aplica donde se detectan datos dinámicos.&lt;/p&gt;</description></item><item><title>Next.js 15 Stable: Mejores prácticas en producción</title><link>https://takao.blog/es/web/nextjs-15-stable-features-overview/</link><pubDate>Sun, 05 Oct 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/nextjs-15-stable-features-overview/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/nextjs-15-stable-features-overview-es.png" alt="Featured image of post Next.js 15 Stable: Mejores prácticas en producción" /&gt;&lt;h2 id="introducción"&gt;Introducción
&lt;/h2&gt;&lt;p&gt;Next.js 15 llega con soporte para React 19, un modelo de caché rediseñado y mejoras importantes en APIs asíncronas. Por defecto, las solicitudes fetch NO se cachean, simplificando la previsibilidad del comportamiento.&lt;/p&gt;
&lt;h2 id="react-19-estable"&gt;React 19 estable
&lt;/h2&gt;&lt;p&gt;Next.js 15 se empareja con React 19 estable, permitiendo el React Compiler para memoización automática. Soporte completo para &lt;code&gt;use()&lt;/code&gt; y Server Actions.&lt;/p&gt;
&lt;h2 id="cambios-en-caché-por-defecto"&gt;Cambios en caché por defecto
&lt;/h2&gt;&lt;p&gt;En Next.js 14, fetch se cacheaba por defecto. En Next.js 15 NO se cachea — debes optar explícitamente con &lt;code&gt;cache: 'force-cache'&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Descifrando los mecanismos de caché del App Router de Next.js</title><link>https://takao.blog/es/web/nextjs-app-router-caching/</link><pubDate>Thu, 10 Apr 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/nextjs-app-router-caching/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/nextjs-app-router-caching-es.png" alt="Featured image of post Descifrando los mecanismos de caché del App Router de Next.js" /&gt;&lt;h2 id="introducción"&gt;Introducción
&lt;/h2&gt;&lt;p&gt;El App Router de Next.js tiene cuatro capas de caché que pueden causar confusión. Este artículo explica cada una y cómo configurarlas.&lt;/p&gt;
&lt;h2 id="las-cuatro-capas"&gt;Las cuatro capas
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Router Cache&lt;/strong&gt; (cliente): Cache de navegación en el navegador, basada en sesión.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Request Memoization&lt;/strong&gt; (servidor): Desduplica fetch dentro de un mismo ciclo de renderizado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Cache&lt;/strong&gt; (servidor): Persiste respuestas de API entre solicitudes y usuarios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full Route Cache&lt;/strong&gt; (servidor): HTML estático y payloads RSC en tiempo de build.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="request-memoization"&gt;Request Memoization
&lt;/h2&gt;&lt;p&gt;Si la misma URL se fetch múltiples veces en el mismo árbol de componentes, solo la primera ejecuta la llamada API. Las siguientes leen de la caché de memoización.&lt;/p&gt;</description></item><item><title>Routing i18n en Next.js App Router</title><link>https://takao.blog/es/web/nextjs-i18n-routing/</link><pubDate>Tue, 08 Oct 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/nextjs-i18n-routing/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/nextjs-i18n-routing-es.png" alt="Featured image of post Routing i18n en Next.js App Router" /&gt;&lt;p&gt;Next.js App Router ofrece routing internacionalizado con detección de idioma, redirecciones y Middleware. Soporta subpath y dominio.&lt;/p&gt;
&lt;h2 id="configuración"&gt;Configuración
&lt;/h2&gt;&lt;p&gt;Define &lt;code&gt;locales&lt;/code&gt; en next.config.js. &lt;code&gt;defaultLocale&lt;/code&gt;. Middleware detecta el idioma preferido del navegador y redirige. El path incluye &lt;code&gt;/es&lt;/code&gt;, &lt;code&gt;/ja&lt;/code&gt;, etc.&lt;/p&gt;
&lt;h2 id="estrategias-de-routing"&gt;Estrategias de routing
&lt;/h2&gt;&lt;p&gt;Subpath: &lt;code&gt;/es/about&lt;/code&gt;, &lt;code&gt;/ja/about&lt;/code&gt;. Dominio: &lt;code&gt;es.example.com&lt;/code&gt;, &lt;code&gt;ja.example.com&lt;/code&gt;. Subdominio. El Middleware maneja la detección y redirección.&lt;/p&gt;
&lt;h2 id="next-intl"&gt;next-intl
&lt;/h2&gt;&lt;p&gt;Biblioteca recomendada para internacionalización en Next.js. Mensajes en JSON, formateo de fechas/números, plurales. Integración con App Router.&lt;/p&gt;</description></item><item><title>Middleware en Next.js: Redirects, rewrites y protección</title><link>https://takao.blog/es/web/nextjs-middleware/</link><pubDate>Tue, 18 Jun 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/nextjs-middleware/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/nextjs-middleware-es.png" alt="Featured image of post Middleware en Next.js: Redirects, rewrites y protección" /&gt;&lt;p&gt;El Middleware de Next.js se ejecuta antes de cada solicitud, permitiendo redirecciones, reescrituras, autenticación y geolocalización en el edge.&lt;/p&gt;
&lt;h2 id="creación"&gt;Creación
&lt;/h2&gt;&lt;p&gt;Archivo &lt;code&gt;middleware.ts&lt;/code&gt; en la raíz del proyecto. Exporta &lt;code&gt;middleware(request)&lt;/code&gt; que retorna &lt;code&gt;NextResponse.next()&lt;/code&gt;, &lt;code&gt;redirect()&lt;/code&gt; o &lt;code&gt;rewrite()&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="matcher"&gt;Matcher
&lt;/h2&gt;&lt;p&gt;Configura las rutas donde se ejecuta el middleware: &lt;code&gt;export const config = { matcher: ['/dashboard/:path*'] }&lt;/code&gt;. Optimizado para ejecución en edge.&lt;/p&gt;
&lt;h2 id="casos-de-uso"&gt;Casos de uso
&lt;/h2&gt;&lt;p&gt;Autenticación (redirigir a login), localización (detectar idioma), A/B testing (cookies), geobloqueo, mantenimiento (rewrite a página de mantenimiento).&lt;/p&gt;</description></item><item><title>Optimización de imágenes con Next.js Image</title><link>https://takao.blog/es/web/nextjs-image-optimization/</link><pubDate>Tue, 26 Mar 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/nextjs-image-optimization/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/nextjs-image-optimization-es.png" alt="Featured image of post Optimización de imágenes con Next.js Image" /&gt;&lt;p&gt;Next.js Image component optimiza imágenes automáticamente: formatos modernos (WebP, AVIF), lazy loading, y dimensiones responsive.&lt;/p&gt;
&lt;h2 id="nextimage"&gt;next/image
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;import&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Image&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;from&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;next/image&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;Image&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;/hero.jpg&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;width&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;{&lt;span style="color:#ae81ff"&gt;1200&lt;/span&gt;} &lt;span style="color:#a6e22e"&gt;height&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;{&lt;span style="color:#ae81ff"&gt;600&lt;/span&gt;} &lt;span style="color:#a6e22e"&gt;alt&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Hero&amp;#34;&lt;/span&gt; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Optimización en tiempo de build o bajo demanda (servidor de optimización).&lt;/p&gt;
&lt;h2 id="formatos-y-calidad"&gt;Formatos y calidad
&lt;/h2&gt;&lt;p&gt;Next.js sirve WebP o AVIF si el navegador lo soporta. &lt;code&gt;quality&lt;/code&gt; (1-100, default 75). &lt;code&gt;sizes&lt;/code&gt; para imágenes responsive. &lt;code&gt;priority&lt;/code&gt; para LCP.&lt;/p&gt;
&lt;h2 id="remote-patterns"&gt;Remote patterns
&lt;/h2&gt;&lt;p&gt;Configura &lt;code&gt;remotePatterns&lt;/code&gt; en next.config.js para permitir imágenes de dominios externos. Protege contra abusos del optimizador.&lt;/p&gt;</description></item></channel></rss>