Web Programming.

Edición #1 ·

Read in English

El mapa de actualizaciones full-stack: qué parchear, planificar y vigilar (septiembre 2026)

Por Karlen Trimino

Bienvenido a la primera edición de Web Programming. Cada semana leo las notas de versión, los avisos de seguridad y los changelogs del stack con el que la mayoría de nosotros trabaja (PHP, Laravel, React, TypeScript y Node.js) y los convierto en decisiones: qué parchear ya, qué planificar y qué puede esperar. Cada dato enlaza a su fuente original al final.

Fue un mes intenso. Next.js publicó tres actualizaciones de seguridad desde el 20 de julio, npm dejó de ejecutar scripts de instalación por defecto, TypeScript pasó a ser nativo y PHP 8.6 lanza su primer release candidate mañana.

TL;DR: tu checklist de esta semana

  • ¿Next.js entre 16.2.0 y 16.3.5? Actualiza hoy a 16.3.6 (RCE crítico en ImageResponse de next/og, 22 de septiembre).
  • ¿PHP anterior a las versiones de seguridad del 30 de julio? Actualiza. CVE-2026-17543 es una inyección SQL en pg_insert, pg_update, pg_select y pg_delete.
  • Composer: ejecuta composer self-update para obtener la 2.10.3 (corrige dos CVE más, incluida una inyección de comandos vía Perforce).
  • Laravel 12 dejó de recibir corrección de bugs el 13 de agosto. Planifica el paso a 13.
  • Node.js 20 está sin soporte (EOL) desde el 30 de abril. Node 26 pasa a LTS el 28 de octubre.
  • npm 12 ya no ejecuta los scripts de instalación de las dependencias por defecto. Revisa tu CI antes de que te sorprenda.

1. Parchea ya: seguridad

Next.js. La versión del 22 de septiembre corrige una ejecución remota de código (RCE) crítica en la implementación de ImageResponse para Node.js de next/og, causada por un escape incorrecto en el SVG que genera Satori (GHSA-vcvr-r3jv-pc5j). Afectadas: de 16.2.0 a 16.3.5. Corregido en 16.3.6. Next.js 15.x no está afectado por el RCE (15.5.26 añade refuerzos) y el ImageResponse de Edge tampoco. Llega después de las actualizaciones de seguridad del 20 de julio y del 25 de agosto: si te saltaste esas, tienes tres pendientes.

PHP. CVE-2026-17543 (alta): las funciones pg_* envuelven los valores en cadenas E'...', pero con el valor por defecto de PostgreSQL standard_conforming_strings = on, las barras invertidas no se escapaban, así que una entrada manipulada podía romper la cadena e inyectar SQL. Corregido en 8.2.33, 8.3.33, 8.4.24 y 8.5.9 (30 de julio). Si usas PostgreSQL con esas funciones en lugar de PDO, trátalo como urgente. Las versiones actuales son 8.5.10 y 8.4.25.

Composer. Las versiones 2.10.2 (1 de julio) y 2.10.3 (27 de agosto) corrigieron una serie de CVE: path traversal a través de las rutas bin de los paquetes (incluso con symlinks), escritura de archivos fuera de vendor/, tokens filtrados en los logs detallados e inyección de comandos mediante URLs de Perforce maliciosas.

Laravel. Este verano se publicaron tres avisos de seguridad del framework: una inyección CRLF de severidad alta en la regla de validación de email por defecto (1 de junio), una confusión de rutas en las URLs firmadas temporales (8 de junio) y un XSS de severidad baja en la página de depuración (10 de septiembre). Actualiza al último parche de Laravel 13.x o 12.x.

Node.js. Las versiones de seguridad del 29 de julio (26.5.1, 24.18.1, 22.23.2) corrigieron 11 CVE, tres de ellas de severidad alta. Cualquier versión posterior de una línea con soporte ya incluye las correcciones.

2. npm acaba de cambiar las reglas de tu CI

npm v12 pasó a ser la versión por defecto ("latest") el 8 de julio. Tres comportamientos que antes eran automáticos ahora requieren aprobación:

  • Los scripts del ciclo de vida de las dependencias (preinstall, install, postinstall y las compilaciones implícitas con node-gyp) no se ejecutan si no los apruebas.
  • Las dependencias desde Git se bloquean salvo que las permitas (--allow-git).
  • Las dependencias por URL remota, como tarballs por https, se bloquean salvo que las permitas (--allow-remote).

Para volver a habilitar paquetes concretos, ejecuta npm approve-scripts --allow-scripts-pending y haz commit de la lista resultante.

Publicar también cambia. Los tokens que se saltan el 2FA ya perdieron las operaciones sensibles de la cuenta a principios de agosto y, alrededor de enero de 2027, perderán la capacidad de publicar. Las alternativas son trusted publishing (OIDC) o la publicación por etapas, donde una persona aprueba cada release con 2FA.

¿Por qué ahora? 2026 ha sido un año brutal para la cadena de suministro de npm:

  • 11 de mayo: se publicaron 84 versiones maliciosas en 42 paquetes @tanstack/* en seis minutos. El atacante encadenó un workflow pull_request_target, envenenamiento de la caché de GitHub Actions y un token OIDC con permisos de publicación extraído de la memoria del runner de CI. Un investigador externo lo detectó unos 26 minutos después.
  • 4 de agosto: el gusano "ChainDrop" comprometió más de 400 paquetes, entre ellos keyv, flat-cache y cache-manager. Robó credenciales de npm, GitHub, AWS, Kubernetes y Vault, y dejó persistencia en .claude/settings.json y .vscode/tasks.json.

Ese último detalle importa. Los atacantes ya tratan la configuración de tu editor y de tus herramientas de IA como un lugar donde ejecutar código. Mi recomendación: revisa los cambios en .claude/, .vscode/tasks.json y la configuración de MCP en los pull requests con el mismo cuidado que los workflows de CI, y audita esta semana todos los workflows pull_request_target que tengas.

3. TypeScript 7 ya está aquí. Es rápido, pero no es un cambio directo.

TypeScript 7.0, el port nativo escrito en Go, salió el 8 de julio. Microsoft reporta builds completos entre 8 y 12 veces más rápidos; el código de VS Code pasó de 125,7 segundos a 10,6.

Antes de actualizar:

  • La 7.0 todavía no tiene una API programática estable, lo que afecta a las herramientas de Vue, Svelte, Angular, MDX y Astro. La API está prevista para la 7.1.
  • Las herramientas que aún necesitan la API anterior pueden usar TypeScript 6 en paralelo con el paquete @typescript/typescript6.
  • Nuevos valores por defecto: strict: true, module: esnext y types: [] (ahora debes listar los paquetes @types que necesitas).
  • Eliminados: target es5, downlevelIteration, baseUrl, moduleResolution classic y la salida AMD/UMD/SystemJS.

Mi recomendación: los proyectos de React y Node con un tsconfig limpio pueden probarlo ya (Next.js 16.3 ya puede usar TypeScript 7 para el chequeo de tipos en next build). Los equipos con Vue, Inertia con Vue o Angular deberían quedarse en la 6.0 hasta la 7.1. En cualquier caso, el trabajo real de migración está en los nuevos valores por defecto, sobre todo la eliminación de baseUrl y la lista de types vacía.

4. React 19.3 y Next.js 16.3

React 19.3 (9 de septiembre) estabiliza dos APIs: <ViewTransition>, que anima elementos que entran, salen, se actualizan o se mueven usando la View Transition API del navegador, y los refs en <Fragment>, que te dan métodos del DOM sobre un grupo de elementos hermanos sin un div envolvente. Novedades en React DOM: use(browser()) excluye un componente del renderizado en servidor (útil para código con localStorage o zonas horarias), además de soporte para Trusted Types. Los Server Components ahora pueden renderizar directamente un Context de un módulo 'use client'.

Next.js 16.3 (3 de agosto) es una mejora de rendimiento gratuita: hasta un 90% menos de memoria en sesiones largas de desarrollo, caché de build activada por defecto y hasta un 22% más de peticiones renderizadas en servidor bajo carga tras pasar a streams nativos de Node.js. Las "Instant Navigations" opcionales (cacheComponents más partialPrefetching) adelantan hacia dónde va la próxima versión mayor. Un port experimental en Rust del React Compiler dentro de Turbopack redujo el tiempo hasta página lista en v0 un 34% en frío y un 46% en caliente.

5. Node.js: apunta estas fechas

  • Node 20: sin soporte desde el 30 de abril de 2026. Si sigue en producción, es tu mayor riesgo.
  • Node 22: LTS en mantenimiento hasta el 30 de abril de 2027.
  • Node 24: pasa de LTS activo a mantenimiento el 20 de octubre de 2026.
  • Node 26: versión Current hoy; pasa a LTS el 28 de octubre de 2026.
  • Desde Node 27: una versión mayor al año y todas pasan a LTS. La 27.0.0 está prevista para abril de 2027.

También conviene saber: el type stripping de TypeScript es estable en Node.js (desde 25.2.0 y 24.12.0), y Node 26 activa Temporal por defecto.

6. PHP 8.6: el RC1 llega mañana

El calendario: RC1 el 24 de septiembre, más RC el 8 de octubre, el 22 de octubre y el 5 de noviembre, y la versión final el 19 de noviembre de 2026.

La novedad que más se va a notar es la aplicación parcial de funciones (aprobada 33 a 0). Pon ? o ... en lugar de argumentos y obtienes un closure:

$f = foo(1, ?, 3);   // closure que espera $b
$g = foo(1, ...);    // closure que espera el resto
$out = array_map(str_replace('hello', 'hi', ?), $lines);

Encaja de forma natural con el operador pipe que llegó en PHP 8.5. PHP 8.6 también añade una función nativa clamp().

El calendario de soporte que debería guiar tu plan de actualización:

  • PHP 8.2: las correcciones de seguridad terminan el 31 de diciembre de 2026.
  • PHP 8.3: solo correcciones de seguridad, hasta el 31 de diciembre de 2027.
  • PHP 8.4: el soporte activo termina el 31 de diciembre de 2026; seguridad hasta finales de 2028.
  • PHP 8.5: soporte activo hasta finales de 2027; seguridad hasta finales de 2029.

Mi recomendación: apunta hoy a 8.4 u 8.5 y añade el RC de 8.6 a tu matriz de CI esta semana para que noviembre no te pille por sorpresa.

7. Laravel: 13 es la versión en la que hay que estar

  • Laravel 13 (17 de marzo de 2026) soporta PHP 8.3 a 8.5, con corrección de bugs hasta el tercer trimestre de 2027 y de seguridad hasta el 17 de marzo de 2028.
  • Laravel 12: la corrección de bugs terminó el 13 de agosto de 2026; seguridad hasta el 24 de febrero de 2027.
  • Laravel 11: ya sin soporte.

De Laracon US (29 de julio), lo que vale la pena: una API para manipular imágenes, Laravel LSP para cualquier editor, formateo de Blade en Pint, chequeos de salud con artisan doctor, jobs con debounce, locks renovables, CPX (piensa en npx para PHP) y aprobación humana de las llamadas a herramientas en el AI SDK. En Laravel Cloud: colas gestionadas que escalan a cero, MySQL que escala a cero, un gestor de secretos y cumplimiento HIPAA para Private Cloud.

El 11 de septiembre salió Laravel MCP 1.0 con catálogos de herramientas con búsqueda. En lugar de anunciar todas las herramientas en cada petición, el servidor expone search_tools y execute_tools. Con 100 herramientas, las definiciones pasan de 58.585 bytes a 1.431 (un 97,6% menos), así que más contexto del modelo se dedica a tu tarea real.

8. Herramientas de IA para programar: los números, no el hype

  • Adopción: JetBrains encuestó a más de 15.000 desarrolladores profesionales entre mayo y julio de 2026. El 90% usa agentes de IA para programar en el trabajo al menos una vez por semana y el 68% a diario. Adopción en el trabajo por herramienta: Claude Code 39%, GitHub Copilot 21%, Codex 16%, Cursor 12%.
  • Precios: GitHub Copilot pasó a facturación por uso el 1 de junio. Los "AI Credits" sustituyen a las premium requests, cada plan incluye créditos por el valor de su precio y el autocompletado de código sigue siendo gratis.
  • Protocolo: la especificación MCP 2026-07-28 hace que el protocolo sea stateless. Sin handshake de inicialización ni IDs de sesión, los servidores MCP pueden estar detrás de un balanceador de carga normal. La autorización pasa de Dynamic Client Registration a Client ID Metadata Documents.

Un aviso: los resultados de la Stack Overflow Developer Survey 2026 todavía no se han publicado. Si ves publicaciones con cifras "de 2026" como 84% de uso de IA y 3% de alta confianza, son los resultados de 2025.

9. El mercado laboral en dos números

  • El índice de ofertas de empleo de desarrollo de software de Indeed en EE. UU. estaba en 76,62 el 11 de septiembre de 2026 (febrero de 2020 = 100), alrededor de un 23% por debajo del nivel prepandemia.
  • La BLS ahora proyecta un crecimiento del 10% para los desarrolladores de software entre 2025 y 2035 (unos 174.700 empleos nuevos), por debajo del 15,8% que proyectaba para 2024 a 2034. El salario mediano era de 135.980 dólares en mayo de 2025.

El mercado se está recuperando, pero no está en auge. Los ingenieros que mantienen su stack parcheado y actualizado son en quienes los equipos confían la producción.

10. En breve

  • ES2026 se aprobó el 30 de junio: getOrInsert en Map (upsert), Iterator.concat, acceso al texto fuente en JSON.parse, conversión base64/hex en Uint8Array, Math.sumPrecise, Error.isError, Array.fromAsync y RegExp.escape. Temporal y la gestión explícita de recursos (using) están previstos para ES2027.
  • Vite 8 (marzo) convirtió a Rolldown en su único bundler; Vite 8.1 (23 de junio) añadió un modo de desarrollo empaquetado experimental.
  • Vitest 5 (3 de septiembre) requiere Node 22.12+ y ahora hace fallar los tests que olvidan hacer await de resolves o rejects.
  • Bun 1.4 (20 de agosto) es la primera versión reescrita de Zig a Rust.

Una cosa para hacer esta semana

Busca en tus repositorios pull_request_target y next/og en el runtime de Node.js. Esas dos búsquedas corresponden a dos de los problemas más caros del verano.

Esa fue la edición #1. Si te ahorró una hora, sigue a Web Programming para que la próxima edición llegue a tu feed. Y cuéntame en los comentarios: ¿cuál es el runtime más antiguo que sigue corriendo en tu producción?

Fuentes