Angular 17: fin de soporte y cómo actualizar
Angular 17 introdujo el control flow integrado, las deferrable views y el application builder basado en esbuild. No tiene soporte desde mayo de 2025.
Fechas de lanzamiento y soporte
Angular 17 se publicó en noviembre de 2023. El soporte activo terminó en mayo de 2024 y el soporte de largo plazo terminó en mayo de 2025. 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 17
- Control flow integrado en developer preview. Los bloques
@if,@fory@switchreemplazan a las directivas estructurales, con una migración automática:ng generate @angular/core:control-flow. - Deferrable views en developer preview. Los bloques
@defercargan de forma diferida partes de un template. - Hidratación estable y el paquete
@angular/ssr, que toma el lugar del express engine de Angular Universal. - El application builder, basado en esbuild y Vite, estable y activado por defecto en proyectos nuevos.
- Standalone por defecto en proyectos nuevos.
ng generatecrea componentes, directivas y pipes standalone. - Signals fuera de developer preview, con
effecttodavía en preview. - Nuevos lifecycle hooks:
afterRenderyafterNextRender. - El sitio de documentación angular.dev, lanzado en beta.
Qué revisar al actualizar
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. - Los guards y resolvers pueden devolver un
RedirectCommand, yredirectTopuede ser una función. El código que lee objetosRoutedirectamente debe manejar ambos casos. - Las apps que combinaron Angular 17 con Angular Material 16 deben terminar el paso a los componentes MDC.
De 18 a 19:
- Se requiere TypeScript 5.5 o posterior.
standalonepasa a sertruepor defecto.ng updateagregastandalone: falsea cada declaración que pertenece a un NgModule.- Las variables de referencia de template ya no se pueden leer con el prefijo
this.. Router.errorHandlerse reemplaza porwithNavigationErrorHandlerenprovideRouter, o porerrorHandlerenRouterModule.forRoot.fakeAsyncvacía los timers pendientes por defecto, y las pruebas que dependen de los tiempos de la detección de cambios pueden necesitar ajustes.- Se elimina
BrowserModule.withServerTransition(). Configura el tokenAPP_ID. - Se elimina el builder de Protractor del CLI.
Un plan corto de actualización
- Actualiza al último parche de 17.3.x, confirma que el build y las pruebas pasan, y haz commit.
- Ejecuta
ng update @angular/core@18 @angular/cli@18y luegong update @angular/material@18. - Corrige las pruebas que fallan por los cambios en los tiempos de la detección de cambios.
- Reemplaza las pruebas e2e de Protractor antes del paso a la v19.
- 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 18.
Las migraciones opcionales, como el control flow, los componentes standalone y el application builder, pueden esperar. Ejecútalas como cambios separados cuando la actualización de versión esté estable.
Cuándo conviene pedir ayuda
Cinco versiones mayores separan a la v17 de la versión actual, y cada una tiene un camino con ng update. Conviene pedir ayuda si la suite de pruebas es grande y frágil, si la app todavía corre pruebas e2e en Protractor, o si el equipo quiere llegar rápido a una versión con soporte y modernizar después con un plan claro. El orden de trabajo está en Estrategia para actualizar versiones antiguas de Angular.
Más en esta sección
- 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
- Cómo actualizar una app Angular con muchas versiones de atraso
¿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