Hipótesis y alcance
Dos releases de Next.js el mismo día, 22 de septiembre de 2026: v16.3.6 y v15.5.26. La pregunta que me interesa responder no es cuál es "mejor", sino algo más operativo: ¿la rama 15.x sigue recibiendo sólo parches de seguridad, o también features y fixes generales? Si la respuesta es "sólo seguridad", el criterio para decidir cuándo migrar cambia por completo.
Esto no es un benchmark ni una medición de performance. Es una lectura directa de los release notes oficiales en GitHub, comparando el contenido textual de cada tag. Alcance acotado: un solo par de releases, un solo día. No puedo generalizar sobre el ciclo de vida completo de las ramas 15.x y 16.x a partir de una sola muestra — eso queda marcado como límite más abajo.
Qué dice cada release note
Fuente primaria, sin interpretación de por medio:
v16.3.6 — publicado el 22 de septiembre de 2026 a las 17:15 UTC por el mantenedor eps1lon. El texto completo del release dice:
"This release contains a security fix for GHSA-vcvr-r3jv-pc5j: Remote Code Execution in next/og ImageResponse"
Nada más. Un solo ítem, una vulnerabilidad identificada por su código GHSA, componente afectado: next/og ImageResponse.
v15.5.26 — publicado el mismo día, un minuto antes (17:14 UTC), mismo mantenedor. El texto completo:
"This release contains additional security hardening for next/og. For more information, check out https://nextjs.org/blog/nextjs-security-update-september-22-2026"
También un solo ítem. Mismo componente (next/og), mismo día, pero la redacción es distinta: "security hardening" en lugar de "security fix" con un GHSA puntual. El release note de 15.5.26 remite a un blog post de Next.js para más contexto, que no está en el material que pude verificar para este análisis — no voy a especular sobre su contenido.
Comparación directa
| v16.3.6 | v15.5.26 | |
|---|---|---|
| Fecha de publicación | 22 sep 2026, 17:15 UTC | 22 sep 2026, 17:14 UTC |
| Componente afectado | next/og ImageResponse | next/og |
| Naturaleza del cambio | Fix puntual con GHSA identificado (RCE) | "Hardening" adicional, sin GHSA propio en el texto |
| Cantidad de ítems en el changelog | 1 | 1 |
| Features nuevas en este tag | No mencionadas | No mencionadas |
| Commits desde este tag hasta canary | 858 | 5556 |
El último dato de la tabla — commits desde el tag hasta canary — no mide velocidad de desarrollo ni actividad futura: es sólo la distancia actual entre ese tag puntual y la punta de canary en el momento en que se consultó GitHub. Lo incluyo porque es un dato público visible en la página del release, no porque prediga nada sobre el ritmo de cada rama.
Qué NO puedo concluir con esta evidencia
Este par de releases no alcanza para decir si 15.x recibe sólo parches de seguridad como política general. Los dos textos que tengo delante son específicamente sobre next/og, el mismo día, probablemente coordinados como respuesta a la misma vulnerabilidad reportada en distintas ramas. Eso es consistente con "15.x recibe backports de seguridad", pero no prueba que sea lo único que recibe: haría falta revisar varios releases anteriores de la serie 15.5.x para ver si en algún momento entraron bugfixes generales sin componente de seguridad.
Tampoco puedo afirmar, con estos dos tags, qué features nuevas trae 16.3.6 frente a 15.5.26 en términos de producto: ninguno de los dos textos menciona features. Si la rama 16.x acumula funcionalidad nueva en otros patches de la serie 16.3.x, no está documentado en este release puntual — sería necesario revisar el changelog de 16.3.0 a 16.3.6 completo, no sólo el último tag.
Qué implica para un equipo que no migró a App Router 16
Con la evidencia que tengo — sólo estos dos releases — el criterio prudente es este: si el equipo sigue en 15.5.x y aplicó el parche de next/og, está cubierto para esta vulnerabilidad puntual. Eso confirma que Vercel mantiene la rama 15.x viva para seguridad, al menos en este caso concreto. Lo que no confirma es que puedan quedarse ahí indefinidamente esperando la próxima corrección: no hay evidencia en estos dos tags sobre cuánto tiempo más va a recibir soporte la serie 15.5.x, ni sobre si va a incorporar algo más que hardening de seguridad.
La decisión de forzar la migración a App Router 16 no depende de este parche puntual — depende de qué features de 16.x necesita el proyecto y de cuánto tiempo de soporte le quede a 15.x, dato que no está en estos release notes.
Protocolo pendiente para quien quiera profundizar
Esto no lo ejecuté como parte de este análisis, lo dejo como pasos reproducibles para quien quiera ir más allá de los dos tags puntuales:
# Ver el historial completo de releases 15.5.x desde npm
npm view next versions --json | grep '"15\.5\.'
# Comparar el diff de código entre dos tags específicos
git log v15.5.20..v15.5.26 --oneline -- packages/next/src/server/image-optimizer
# Revisar si algún release 15.5.x trae features (no solo fixes)
# buscando el término "Feature" en cada release note de GitHubCriterio para aceptar o descartar la hipótesis "15.x sólo recibe seguridad": si al revisar 5 o 6 releases anteriores de la serie 15.5.x aparece algún ítem que no sea fix de seguridad o bugfix crítico, la hipótesis cae. Con los dos tags de este análisis, no hay evidencia suficiente en ningún sentido — sólo un dato puntual del 22 de septiembre de 2026.
Fuente original:
- Next.js v16.3.6 release: https://github.com/vercel/next.js/releases/tag/v16.3.6
- Next.js v15.5.26 release: https://github.com/vercel/next.js/releases/tag/v15.5.26
¿Buscás este enfoque para tu equipo?
Conocé mis casos técnicos o conversemos sobre un rol senior, arquitectura y liderazgo técnico.
Artículos Relacionados
Claude API key seguridad: por qué el .env no es opcional
Pegar una API key de Claude o DeepSeek directo en el código "para probar rápido" deja rastro en el historial de git y en los logs. Una guía prudente sobre variables de entorno, rotación y qué mirar antes de compartir un repo.
09 sept 2026 · 7′ · Tutoriales · nextjs · anthropic
setQueryData después de una Server Action: el patrón que cierra el gap
La Server Action se resuelve, el toast dice "guardado" y la UI todavía muestra el dato viejo por un instante. Ese instante es el gap que setQueryData cierra sin esperar el roundtrip completo del server.
08 sept 2026 · 7′ · Tutoriales · Next.js · React
revalidatePath es fuerza bruta, revalidateTag es precisión
Confundí revalidatePath con revalidateTag en un proyecto chico y terminé invalidando páginas que no tenían nada que ver con el cambio. Acá está la diferencia real entre las dos granularidades de cache en Next.js 16, con checklist de decisión.
04 sept 2026 · 7′ · Tutoriales · Next.js · React
Comentarios (0)
¿Qué pensás de esto?
Dejá tu comentario en 10 segundos.
Usamos tu login solo para mostrar tu nombre y avatar. Nada de spam.
Todavía nadie comentó. Sé el primero — tu opinión vale oro cuando somos pocos.