Angular 16: fin de soporte y cómo actualizar
Angular 16 trajo Signals en developer preview, la hidratación no destructiva y la eliminación de ngcc. No tiene soporte desde noviembre de 2024.
Fechas de lanzamiento y soporte
Angular 16 se publicó en mayo de 2023. El soporte activo terminó en noviembre de 2023 y el soporte de largo plazo terminó en noviembre de 2024. Hoy no recibe parches de seguridad. Las fechas de cada versión están en Soporte y fin de vida de las versiones de Angular.
Qué introdujo Angular 16
- Signals en developer preview.
signal,computedyeffectllegaron a@angular/core, contoSignal,toObservableytakeUntilDestroyeden@angular/core/rxjs-interop. - Hidratación no destructiva en developer preview para apps con server-side rendering, activada con
provideClientHydration(). - Herramientas para standalone. Un schematic de migración,
ng generate @angular/core:standalone, yng new --standalone. - El sistema de build basado en esbuild en developer preview, con Vite como servidor de desarrollo.
- Soporte experimental para Jest en pruebas unitarias.
- Inputs requeridos con
@Input({ required: true }), y datos de la ruta enlazados a inputs del componente. DestroyRef, etiquetas de cierre automático en templates y un nonce de CSP para estilos inline.- Soporte para TypeScript 5.0, y la eliminación de ngcc.
Qué revisar al actualizar
De 16 a 17:
- Se requieren Node.js 18.13 o posterior, TypeScript 5.2 o posterior y Zone.js 0.14 o posterior.
- Los componentes legacy de Angular Material no forman parte de Material 17. Angular 17 puede correr con Material 16 como opción temporal que termina con la v18.
- Los imports profundos de Zone.js como
zone.js/dist/zonedeben pasar azone.jsyzone.js/testing. - Las opciones del router como
urlUpdateStrategyse configuran conprovideRouteroRouterModule.forRoot. NgSwitchcompara con===.- El código que usaba
mutateen un signal debe usarupdate.
De 17 a 18:
- Se requieren Node.js 18.19 o posterior y TypeScript 5.4 o posterior.
- El helper de pruebas
asyncse reemplaza porwaitForAsync. StateKeyyTransferStatese importan desde@angular/core.- Las pruebas pueden ejecutar rondas adicionales de detección de cambios, y
ComponentFixture.whenStablepuede esperar más que antes. - En server-side rendering,
platformDynamicServerse reemplaza porplatformServery se eliminaServerTransferStateModule. - Angular Material 16 deja de ser una opción, así que los componentes legacy deben estar migrados para entonces.
Un plan corto de actualización
- Actualiza al último parche de 16.2.x, confirma que el build y las pruebas pasan, y haz commit.
- Pasa las máquinas locales y el CI a Node.js 18.13 o posterior.
- Ejecuta
ng update @angular/core@17 @angular/cli@17y luegong update @angular/material@17. - Mantén por ahora el builder basado en webpack. El paso al application builder basado en esbuild es un cambio aparte, con sus propias pruebas.
- Actualiza las librerías de terceros, corrige las deprecaciones, corre las pruebas y publica.
- Repite con la siguiente versión mayor. La siguiente parada es Angular 17.
Cuándo conviene pedir ayuda
Desde la v16, buena parte del trabajo que lista la guía oficial de actualización tiene que ver con pruebas y herramientas. Conviene pedir ayuda si las pruebas unitarias dependen de los tiempos de la detección de cambios, si la app usa server-side rendering con Angular Universal, o si el equipo quiere un plan para adoptar Signals, componentes standalone y el nuevo sistema de build en el orden correcto. El plan está en Estrategia para actualizar versiones antiguas de Angular.
Más en esta sección
- Angular 17: fin de soporte y cómo actualizar
- Angular 18: fin de soporte y cómo actualizar
- Angular 19: fin de soporte y cómo actualizar
- Angular 20: fin de soporte y cómo actualizar
¿Planeas una migración o una plataforma de microfrontends?
En una llamada de 20 minutos me cuentas tu situación y te digo cómo la abordaría. Si todavía no vale la pena, también te lo digo.
Escríbeme por LinkedIn