Programacion & Dev

Deja de arriesgar tu frontend: la arquitectura definitiva de Angular 22

Angular 22 ya está aquí. Descubre cómo los últimos cambios arquitectónicos y las primitivas de reactividad nativa lo convierten en la opción ideal.

Deja de arriesgar tu frontend: la arquitectura definitiva de Angular 22

Guía técnica · Framework empresarial · Angular 22 · Junio de 2026 Estable actual: Angular 22.0 (lanzado el 3 de junio de 2026)


La decisión estratégica

Angular no es una elección del desarrollador. Es una elección organizacional.

Cuando un equipo de 5 personas elige Angular, en la práctica están decidiendo cómo trabajará un equipo de 50 dentro de tres años. Pocas decisiones de stack conllevan ese peso.

Angular es opinado por diseño. Prescribe cómo estructurar módulos (o componentes standalone), cómo inyectar dependencias, cómo manejar el enrutamiento, formularios, pruebas, HTTP e internacionalización. Para los equipos que valoran la flexibilidad, esto suena a restricción. Para los equipos que valoran la consistencia, suena a libertad de no tener que decidir todas esas cosas cada vez.

Esa es la verdadera división. Angular no compite con React en velocidad de aprendizaje o tamaño del ecosistema, y no debería hacerlo. Compite en algo diferente: la capacidad de que una base de código Angular de 100K líneas sea navegable por un ingeniero que nunca la ha visto antes, porque las convenciones son impuestas por el framework, no por la disciplina del equipo.

El contexto de 2026: Angular 22 (junio de 2026) estabilizó Signal Forms y Angular Aria, hizo que zoneless fuera el valor predeterminado para todos los proyectos nuevos y promovió el servidor MCP a estable. Tras años de críticas sobre la curva de aprendizaje y Zone.js, Angular experimentó una transformación arquitectónica que cerró aproximadamente el 80% de la brecha de rendimiento en tiempo de ejecución frente a vanilla JS en el krausest js-framework-benchmark. La pregunta ya no es "¿Sigue siendo relevante Angular?", sino "¿Se ajusta mi problema a lo que Angular resuelve mejor?"

"La arquitectura es lo que queda cuando la funcionalidad está terminada." Angular es para equipos que se toman eso en serio.


Los pilares del framework

Angular ofrece un framework completo, no una biblioteca. Todo lo que otros stacks ensamblan a partir de piezas externas, Angular lo entrega integrado y probado en conjunto.

Inyección de dependencias

DI jerárquica integrada en el núcleo del framework. Servicios, repositorios, guards, interceptors: todos declarados con @Injectable y resueltos automáticamente. Permite la sustitución en pruebas sin mocks manuales y una modularización genuina de responsabilidades.

Signals (Estables desde la v20)

signal(), computed(), y effect() son estables para producción. Seguimiento automático de dependencias sin arrays manuales. Signal Forms (experimental en la v21, estable en la v22) reemplaza el patrón RxJS/FormControl con una API más simple y de mayor rendimiento.

Detección de cambios Zoneless (Predeterminada desde la v21)

Los proyectos nuevos generados con ng new excluyen Zone.js por defecto. El cambio reduce el tamaño del bundle, limpia los stack traces y mejora la interoperabilidad. Los proyectos existentes migran gradualmente mediante schematics usando la onpush_zoneless_migration herramienta del servidor Angular MCP.

Componentes Standalone (Predeterminados desde la v17)

Componentes, pipes y directivas se autodeclaran sin NgModule. Elimina el boilerplate que fue la crítica más común a Angular durante años. Permite lazy loading por componente, tree-shaking más eficiente y una composición más explícita.

Enrutamiento

Enrutamiento declarativo con lazy loading, guards, resolvers y modo de renderizado a nivel de ruta (SSR, CSR, prerender por ruta; estable desde la v20). No se requiere elección de biblioteca: el router oficial funciona con SSR, animaciones y el Angular CDK por diseño.

Formularios

Dos modelos de formulario incluidos. Reactive Forms (basado en RxJS) es el estándar actual para la complejidad. Signal Forms (@angular/forms/signals) es estable en la v22 — elimina el valueChanges.pipe(…takeUntil(this.destroy$)) patrón que todo desarrollador Angular ha escrito docenas de veces.


Sintaxis de plantilla moderna: @if, @for, @switch

Angular 17 reemplazó *ngIf, *ngFor, y *ngSwitch con una sintaxis de bloque nativa. Las directivas antiguas fueron marcadas como obsoletas en la v20 y serán eliminadas en versiones futuras.

Antes — directivas antiguas (obsoletas):

HTML
<div *ngIf="user; else loading">  <div *ngFor="let item of items; trackBy: trackFn">    {{ item.name }}  </div></div><ng-template #loading>  Loading...</ng-template>

Después — sintaxis de bloque (v17+):

HTML
@if (user) {  @for (item of items; track item.id) {    <div>{{ item.name }}</div>  }} @else {  <div>Loading...</div>}

Signals: De Zone.js a la reactividad de grano fino

TYPESCRIPT
// BEFORE: Zone.js + ChangeDetectorRef@Component({ changeDetection: ChangeDetectionStrategy.OnPush })export class CounterComponent {  counter = 0;  constructor(private cdr: ChangeDetectorRef) {}  increment() {    this.counter++;    this.cdr.detectChanges(); // manual trigger  }}// AFTER: Signals (Angular 20+ stable)@Component({ standalone: true })export class CounterComponent {  counter = signal(0);                      // signal primitive  double  = computed(() => this.counter() * 2); // derived, lazy  increment() {    this.counter.update(v => v + 1);       // no manual trigger    // Angular detects automatically via reactive graph  }}// Zoneless — app.config.ts (default in new Angular 22 projects)export const appConfig: ApplicationConfig = {  providers: [    provideZonelessChangeDetection(),    provideBrowserGlobalErrorListeners(),    provideRouter(routes),  ]};

httpResource: HTTP reactivo con Signals

TYPESCRIPT
import { httpResource } from '@angular/common/http';import { signal, Component } from '@angular/core';@Component({ standalone: true })export class UserComponent {  userId = signal(1);  // Automatically re-fetches when userId() changes  user = httpResource<User>(    () => `/api/users/${this.userId()}`  );  // user.value()     → current value  // user.isLoading() → reactive boolean  // user.error()     → reactive error}

Primeros pasos con Angular 22

Angular 22 se lanzó el 3 de junio de 2026 y es la versión recomendada para proyectos nuevos: Signal Forms estable, Angular Aria estable, zoneless por defecto y servidor MCP estable.

Paso 1 — Requisitos del entorno

Angular 22 requiere Node.js v22.22.0+ o v24.13.1+ y TypeScript 6. Verifique antes que nada: las versiones anteriores bloquean la CLI antes de que pueda ejecutarse.

BASH
# Check Node.js (needs v22.22.0+ or v24.x)node --version# Install or update to Node LTS via nvmnvm install --lts && nvm use --lts# Install the latest Angular CLI globallynpm install -g @angular/cli# Confirm CLI versionng version# Angular CLI: 22.x.x  ✓

Paso 2 — Crear el proyecto

BASH
# Create a new project with recommended flags for 2026ng new my-app \  --style=scss \  --routing \  --ssr# The CLI asks about SSR/SSG — answer Y for SSR# Result: project with:#   ✓  Standalone components (no NgModule)#   ✓  Zoneless change detection (no zone.js)#   ✓  Vitest as test runner#   ✓  esbuild + Vite for builds#   ✓  @angular/ssr configured#   ✓  TypeScript 6 strict modecd my-appng serve  # http://localhost:4200

Paso 3 — Estructura del proyecto

TYPESCRIPT
my-app/├── src/│   ├── app/│   │   ├── app.component.ts        # root component (standalone)│   │   ├── app.config.ts           # bootstrap without AppModule│   │   ├── app.routes.ts           # declarative routing│   │   └── app.config.server.ts    # SSR config│   ├── main.ts                     # bootstrapApplication()│   └── main.server.ts              # SSR entry point├── vitest.config.ts                # test runner (no karma.conf)├── angular.json                    # workspace config└── package.json                    # no zone.js in dependencies ✓

Paso 4 — El app.config.ts moderno

TYPESCRIPT
// src/app/app.config.ts — generated by ng new in Angular 22import { ApplicationConfig, provideZonelessChangeDetection } from '@angular/core';import { provideRouter }                from '@angular/router';import { provideClientHydration }       from '@angular/platform-browser';import { provideHttpClient, withFetch } from '@angular/common/http';import { routes }                        from './app.routes';export const appConfig: ApplicationConfig = {  providers: [    // Zoneless: no Zone.js, changes detected by Signals    provideZonelessChangeDetection(),    // Router with lazy loading by default    provideRouter(routes),    // Incremental hydration for SSR — reduces TTI by 40-50%    provideClientHydration(),    // HTTP with native Fetch API (not XMLHttpRequest)    provideHttpClient(withFetch()),  ]};

Paso 5 — Su primer componente basado en Signals

TYPESCRIPT
// src/app/features/user/user.component.tsimport {  Component, signal, computed, input} from '@angular/core';import { httpResource } from '@angular/common/http';import { DatePipe }     from '@angular/common';interface User {  id: number;  name: string;  email: string;}@Component({  selector: 'app-user',  standalone: true,  imports: [DatePipe],  template: `    @if (user.isLoading()) {      <p>Loading...</p>    } @else if (user.error()) {      <p>Error: {{ user.error()?.message }}</p>    } @else {      <article>        <h2>{{ user.value()?.name }}</h2>        <p>{{ user.value()?.email }}</p>        <p>Score: {{ scoreFormatted() }}</p>        <small>Loaded at {{ now | date:'HH:mm:ss' }}</small>      </article>    }    <button (click)="nextId()">Next user</button>  `,})export class UserComponent {  // Signal input — works in zoneless without traditional @Input()  userId = input.required<number>();  // Reactive HTTP: re-fetches when userId() changes  user = httpResource<User>(    () => `/api/users/${this.userId()}`  );  // Lazy derived — only recalculates when user.value() changes  scoreFormatted = computed(() => {    const u = this.user.value();    return u ? `${u.id * 7} pts` : '—';  });  now = new Date();  nextId() {    console.log('current id:', this.userId());  }}// Generate via CLI:// ng generate component features/user --standalone

Paso 6 — Comandos CLI esenciales

BASH
# Developmentng serve                            # server with HMR and template hot reloadng serve --configuration=staging    # with specific environment# Code generationng generate component features/dashboard --standaloneng generate service core/api/userng generate guard core/auth/auth --implements CanActivateng generate pipe shared/pipes/truncateng generate directive shared/directives/highlight# Buildng build                            # production build with esbuildng build --stats-json               # for bundle analysis# Tests (Vitest in Angular 22)ng test                             # runs Vitest in watch modeng test --coverage                  # coverage report# Upgrade and migrationng update @angular/core @angular/cli   # upgrade with automatic schematicsng update                              # shows what can be updated# MCP Server for AI tooling (Angular 22 stable)ng mcp                              # starts the Angular MCP server

Paso 7 — Migración desde versiones anteriores

Importante: Angular requiere actualizaciones secuenciales; no se pueden saltar versiones.

BASH
# v19 → v20ng update @angular/core@20 @angular/cli@20# v20 → v21 (zoneless becomes default for new projects)ng update @angular/core@21 @angular/cli@21# v21 → v22 (Signal Forms stable, Angular Aria stable, MCP stable)ng update @angular/core@22 @angular/cli@22# Check and run additional migrationsng update   # shows available migrations# Automatic migration to zoneless via MCPng mcp  # activates onpush_zoneless_migration for the codebase

Los cinco criterios de evaluación

01 — Escalabilidad

Angular escala equipos, no solo aplicaciones. La DI jerárquica, el tipado estricto de TypeScript y los componentes standalone con contratos de API claros hacen que las bases de código crezcan de forma predecible. Angular posee una cuota de mercado del 48.24% entre los frameworks frontend especializados, con más de 51,737 empresas en todo el mundo. Google, Microsoft Office 365, Deutsche Bank y Samsung utilizan Angular para aplicaciones a gran escala. La adopción de Signals de grano fino (v17) y la migración a la detección de cambios zoneless por defecto (v21) cerraron aproximadamente el 80% de la brecha de rendimiento en tiempo de ejecución frente a vanilla JS.

02 — Curva de aprendizaje

La crítica histórica sigue siendo parcialmente cierta. TypeScript, DI, decoradores, componentes standalone, enrutamiento, formularios: muchos conceptos llegan simultáneamente. Los desarrolladores de Angular obtienen una prima de aproximadamente $10K, con un promedio de $130K/año frente a aproximadamente $120K/año para los desarrolladores de React (Glassdoor, promedios de EE. UU.). La dirección en 2026 es la simplificación: los componentes standalone eliminaron NgModule, los Signals eliminaron la mayor parte de RxJS para la gestión de estado, y Signal Forms (estable en la v22) elimina los patrones verbosos de RxJS.

03 — Rendimiento y throughput

El Angular post-Signals es sustancialmente más rápido que la era de Zone.js. El compilador AOT genera JavaScript altamente optimizado en tiempo de compilación. La hidratación incremental (estable en la v20) reduce el Time to Interactive en un 40-50%, según el roadmap oficial. Con Signals + zoneless, Angular sabe exactamente qué nodos del DOM necesitan actualizarse, sin necesidad de recorrer todo el árbol.

04 — Latencia y SSR

Angular Universal ofrece SSR completo. El modo de renderizado a nivel de ruta (estable en la v20) permite que cada ruta se configure individualmente como SSR, prerender o CSR. El tamaño del bundle base es aproximadamente 2.7 veces mayor que el de React; irrelevante para aplicaciones empresariales internas, pero una consideración real para aplicaciones de consumo móvil.

05 — Soporte de la comunidad

El respaldo de Google es la ventaja más subestimada de Angular: Gmail, Google Cloud Console, AdSense y Google Fonts funcionan con Angular. Las regresiones llegan al equipo antes de que lleguen a su aplicación. Un lanzamiento importante cada 6 meses, versiones LTS con 18 meses de soporte. 92% de retención de uso. Satisfacción: 44.7% 'admirado' (State of JS 2025) frente al 52.1% de React y 50.9% de Vue. La adopción crece un +5% anual, sostenida por el sector empresarial.


Cronología de versiones

Versión

Fecha

Hito clave

v17

Nov 2023

Signals dev preview, @if/@for sintaxis de bloque, standalone por defecto, Vite + esbuild, @defer

v18

May 2024

Zoneless experimental, soporte zoneless para CDK/Material

v19

Nov 2024

Hidratación incremental (dev preview), modo de renderizado a nivel de ruta (dev preview), HMR de plantillas

v20

May 2025

Signals estable, hidratación incremental estable, modo de renderizado a nivel de ruta estable, httpResource experimental

v21

Nov 2025

Zoneless por defecto, Vitest reemplaza a Karma, Signal Forms experimental, Angular Aria dev preview, servidor MCP

v22

Jun 2026

Signal Forms estable, Angular Aria estable, provideWebMcpTools(), servidor MCP estable

⚠ Fin de vida (EOL): Angular 19 alcanzó su EOL en mayo de 2026. CVEs activos (parches solo para v19, v20, v21): CVE-2025-59052 (CVSS 7.1), CVE-2025-66035 (CVSS 7.7), CVE-2025-66412 (XSS en compilador SVG/MathML).


Ecosistema

Angular Material + CDK

Más de 30 componentes de Material Design accesibles. El CDK proporciona primitivas de comportamiento: drag-and-drop, overlay, virtual scroll, accesibilidad, stepper.

BASH
npm install @angular/material @angular/cdk

SSR

BASH
ng add @angular/ssr

Integrado con la CLI. Soporta Node.js, Deno y Cloudflare Workers mediante adaptadores.

Gestión de estado

Opción

Cuándo usar

Signals + computed

Estado local, valores derivados: cubre la mayoría de los componentes en Angular 22

NgRx

Efectos secundarios complejos, DevTools, depuración de viaje en el tiempo, equipos grandes

Akita / Elf

Alternativas más ligeras a NgRx

Pruebas

Angular 22 reemplazó Karma con Vitest como el ejecutor de pruebas predeterminado.

TYPESCRIPT
import { TestBed } from '@angular/core/testing';import { CounterComponent } from './counter.component';describe('CounterComponent', () => {  beforeEach(() => {    TestBed.configureTestingModule({      imports: [CounterComponent], // standalone: imported directly    });  });  it('should increment the signal on click', () => {    const fixture = TestBed.createComponent(CounterComponent);    const comp = fixture.componentInstance;    expect(comp.counter()).toBe(0);    comp.increment();    TestBed.tick();  // replaces deprecated TestBed.flushEffects()    expect(comp.counter()).toBe(1);    expect(comp.double()).toBe(2);  });});

Microfrontends

Module Federation (Webpack 5) es el estándar empresarial de Angular para microfrontends. Nx es el toolchain de monorepo más adoptado para Angular a gran escala.

TYPESCRIPT
// module-federation.config.ts (shell app)import { ModuleFederationConfig } from '@nx/webpack';export const config: ModuleFederationConfig = {  name: 'shell',  remotes: ['checkout', 'catalog', 'user'],};// Each remote is an independent Angular standalone app// Lazy-loaded as a route in the shell

Angular y agentes de IA

Nota agnóstica al SDK: Los SDKs de LLM son TypeScript/JavaScript, agnósticos al framework. Vercel AI SDK (streamText, generateObject), Firebase Genkit, Anthropic SDK y OpenAI SDK funcionan en Angular sin modificaciones. Lo que cambia es la capa de UI: en lugar de React hooks, usas Signals + RxJS + DI.

Cuatro fortalezas principales

1. La DI aísla al cliente LLM. El servicio de IA vive en un @Injectable con una interfaz bien definida. Cambie de Claude a Gemini, o de REST a WebSocket, sin tocar los componentes. En las pruebas, inyecte un mock: la UI nunca nota la diferencia.

2. Signals + RxJS para streaming de tokens. Los tokens llegan vía SSE. RxJS, ya integrado en Angular, es el modelo mental natural: Observable para el stream, pipe(scan()) para acumular tokens, takeUntilDestroyed() para la limpieza automática cuando se destruye el componente.

3. WebMCP: su UI como un conjunto de herramientas invocables por agentes. Angular 22 introdujo provideWebMcpTools() y declareWebMcpTool(). Su aplicación expone capacidades que cualquier agente con acceso al navegador puede descubrir e invocar mediante navigator.modelContext. Inversión de control: el agente llama a la UI.

4. Protocolo AG-UI. El protocolo AG-UI estandariza la comunicación entre agentes (LangGraph, Mastra, CrewAI) y frontends. La implementación de Angular utiliza el Resource API — el mismo patrón que httpResource() — haciendo que el estado del agente (historial de chat, widgets, llamadas a herramientas) sea dato reactivo nativo.

Chat con streaming de tokens

TYPESCRIPT
@Injectable({ providedIn: 'root' })export class ChatAiService {  messages   = signal<Message[]>([]);  streamText = signal('');  loading    = signal(false);  private createStream(payload: object): Observable<string> {    return new Observable(observer => {      const controller = new AbortController();      fetch('/api/chat/stream', {        method: 'POST',        headers: { 'Content-Type': 'application/json' },        body: JSON.stringify(payload),        signal: controller.signal,      })      .then(async res => {        const reader  = res.body!.getReader();        const decoder = new TextDecoder();        while (true) {          const { done, value } = await reader.read();          if (done) { observer.complete(); break; }          const chunk = decoder.decode(value, { stream: true });          for (const line of chunk.split('\n\n')) {            if (!line.startsWith('data: ')) continue;            const data = line.slice(6);            if (data === '[DONE]') { observer.complete(); return; }            observer.next(data);          }        }      })      .catch(err => { if (err.name !== 'AbortError') observer.error(err); });      return () => controller.abort(); // cleanup on unsubscribe    });  }  async send(text: string): Promise<void> {    this.messages.update(m => [...m, { role: 'user', content: text }]);    this.loading.set(true);    this.streamText.set('');    this.createStream({ messages: this.messages() }).subscribe({      next:     token => this.streamText.update(s => s + token),      error:    ()    => this.loading.set(false),      complete: ()    => {        this.messages.update(m => [          ...m, { role: 'assistant', content: this.streamText() }        ]);        this.streamText.set('');        this.loading.set(false);      },    });  }}

Angular vs Next.js para aplicaciones de agentes de IA

Criterio

Angular 22

Next.js 15 (React)

SDKs de LLM

Igual — TypeScript, funcionan en ambos

Igual — TypeScript, funcionan en ambos

Streaming de tokens (SSE)

RxJS + Signal, limpieza automática vía takeUntilDestroyed()

useChat (React hook) o manual ReadableStream

Múltiples agentes paralelos

Signal por agente, aislamiento por DI, cero interferencia

useState por agente, Context o Zustand

UI como herramienta invocable por agente

provideWebMcpTools()nativo en Angular 22

Sin equivalente nativo

Herramientas de IA en IDE

ng mcp estable — RAG + migración automática

Sin servidor MCP oficial

Escalabilidad de equipo en apps de IA

DI + estructura opinada = ubicación predecible del servicio de IA

Dependiente de convenciones

Limpieza automática de stream en navegación

takeUntilDestroyed() — cero configuración

AbortController + limpieza useEffect manual

Server Functions / API Routes

Vía @angular/ssr (en evolución)

Next.js Server Actions — más maduro


Casos de uso

✅ Use Angular

  • SPA empresarial a escala — ERP, CRM, plataformas financieras, salud. 10+ desarrolladores, mantenimiento multianual. La arquitectura opinada asegura la navegabilidad por nuevos ingenieros.

  • Dashboards en tiempo real — IoT, monitoreo financiero, telemetría. Signals + zoneless: solo se actualiza el widget que recibe nuevos datos.

  • Formularios complejos — Seguros, crédito, onboarding regulado. Reactive Forms + Signals para validación granular y reglas de negocio integradas por DI.

  • SaaS empresarial multi-tenant — Módulos lazy por tenant, permisos vía guards, i18n por locale, temas por cliente: todas primitivas nativas de Angular.

  • Dashboards de agentes de IA — Múltiples agentes paralelos, exposición de herramientas WebMCP, servicios de IA aislados por DI. La estructura compensa a medida que crece la capa de IA.

⚠️ Evalúe cuidadosamente

  • Apps de consumo con SEO/móvil crítico — Bundle más grande, herramientas de SSR menos maduras que Next.js.

  • MVPs y proyectos de corta duración — Semanas de preparación antes de la productividad. React o Vue se entregan más rápido.

  • Equipos pequeños sin experiencia en Angular — Pipeline de contratación más largo, mayor costo por ingeniero.


Alineación con los objetivos de negocio

Para el negocio, elegir Angular no es una apuesta tecnológica. Es una apuesta organizacional — que la consistencia compensa el costo de onboarding, que la base de código será mantenible por equipos que aún no existen, y que evitar los debates de "¿qué biblioteca deberíamos usar?" ahorra más horas que el tiempo de configuración.

Esta apuesta tiene un perfil específico: proyectos a medio y largo plazo, equipos en crecimiento, dominios complejos donde la estructura del código es tan importante como su funcionalidad. Con un 18.2% de adopción (Stack Overflow 2025), más de 51,000 empresas globalmente y el respaldo de Google, la relevancia de Angular no está en duda.

La apuesta no tiene sentido para MVPs, aplicaciones de consumo con requisitos de SEO críticos o equipos pequeños donde el overhead de configuración supera los beneficios de escalabilidad.

Elija Angular cuando:

  • Horizonte de 3+ años, equipo en crecimiento

  • Dominio complejo: financiero, salud, gobierno, B2B empresarial

  • Consistencia en la base de código sobre flexibilidad

  • TypeScript estricto es un requisito de ingeniería

  • El aislamiento por DI para servicios de IA o clientes externos importa arquitectónicamente

Considere alternativas cuando:

  • La velocidad del MVP es primordial → React

  • App de consumo con SEO crítico → Next.js

  • Sitio de contenido / blog → Astro

  • Equipo < 5 sin experiencia en Angular → el costo de ramp-up importa más


Fuentes

  • Blog de Angular (angular.dev/blog) — Anunciando Angular v20 (Minko Gechev, mayo de 2025).

  • angular.dev/roadmap (accedido en junio de 2026) — Roadmap oficial de funciones y cronología.

  • FrontendMinds (frontendminds.com, junio de 2026) — Detalles del lanzamiento de Angular 22: Signal Forms estable, Angular Aria estable, MCP estable.

  • Bacancy Technology (bacancytechnology.com, junio de 2026) — Nuevas funciones de Angular 22 y guía de actualización.

  • Cmarix (cmarix.com, marzo de 2026) — "60+ Estadísticas de Angular 2026" — 51,737 empresas, 4.65M descargas/semana, 18.2% Stack Overflow, 48.24% cuota de mercado, 92% retención.

  • mpiric Software (mpiricsoftware.com, junio de 2026) — "React vs Angular vs Vue en 2026: ¿Cuál para empresas?"

  • Scrimba (scrimba.com, abril de 2026) — "React vs Angular 2026" — Datos de Stack Overflow 2025, datos salariales de Glassdoor.

  • HeroDevs (herodevs.com, marzo de 2026) — CVEs de Angular: CVE-2025-59052, CVE-2025-66035, CVE-2025-66412. EOL de Angular 19 en mayo de 2026.

  • Angular Architects (angulararchitects.io, mayo de 2026) — "Implementando AG-UI con Angular."

  • Level Up Coding (mayo de 2026) — "Tu Web App, conoce a tu agente de IA — Angular WebMCP."

  • Blog de Angular (blog.angular.dev, septiembre de 2025) — "Más allá del horizonte: Cómo Angular está adoptando la IA" — Servidor Angular MCP, habilidades de Angular para agentes de codificación.


La versión y los datos reflejan junio de 2026. Angular 22 se lanzó el 3 de junio de 2026. Consulte angular.dev/roadmap para conocer el estado actual de cualquier función. Las cifras salariales son promedios de EE. UU. de Glassdoor y pueden diferir significativamente según la región.