Angular — История версий (от 21 до 2)

Файл создан для быстрого ориентирования по изменениям Angular. Версии расположены от новейшей к старейшей.


Angular 21 (ноябрь 2025)

  • Zoneless по умолчанию — новые проекты создаются без Zone.js из коробки
  • Signal Forms (Experimental) — новый подход к формам на основе сигналов, замена Reactive/Template Forms
  • @angular/aria (Developer Preview) — headless-компоненты для доступности (accessibility)
  • Vitest — становится дефолтным test runner’ом вместо Karma
  • HttpClient по умолчанию — больше не нужно вручную добавлять provideHttpClient()
  • Regex в шаблонах — нативная поддержка регулярных выражений в template-синтаксисе
  • MCP Server — интеграция с AI-инструментами через Model Context Protocol
  • Стрелочные функции в шаблонах (v21.2) — теперь поддерживаются в inline-выражениях
  • ChangeDetectionStrategy.Eager (v21.2) — новая стратегия CD
  • @switch с полной проверкой типов (v21.2)
  • FormRoot и transformedValue (v21.2) — расширения Signal Forms

Angular 20 (май 2025)

  • Signals API — стабильный статусsignal(), computed(), effect() вышли из developer preview в stable
  • Zoneless Change Detection — stable (с v20.2) — ng new my-app --zoneless
  • createComponent() улучшен — поддерживает @Input/@Output биндинги и применение директив
  • Генераторы CLI без суффиксовng g component больше не добавляет .component к имени класса по умолчанию
  • esbuild окончательно закрепился как основной билдер (Webpack убран)

Angular 19 (ноябрь 2024)

  • standalone: true по умолчанию — все компоненты, директивы и пайпы standalone без явного указания
  • input(), output(), model() — stable — сигнальные замены @Input(), @Output(), двустороннего биндинга
  • viewChild(), viewChildren(), contentChild(), contentChildren() — stable
  • resource() и rxResource() — реактивная загрузка данных через сигналы (Async Resource API)
  • @let в шаблонах — локальные переменные прямо в HTML-шаблоне
  • Incremental Hydration (SSR) — частичная регидратация страницы вместо полной
  • Route-level rendering controls — стратегия SSR/SSG/CSR на уровне отдельных роутов
  • Обнаружение неиспользуемых imports — компилятор предупреждает об лишних импортах в standalone-компоненте
  • HMR (Hot Module Replacement) включён по умолчанию — ускоряет разработку

Angular 18 (май 2024)

  • Zoneless Change Detection (Developer Preview) — первая официальная поддержка работы без Zone.js
  • @angular/ssr — SSR объединён с основным пакетом, Angular Universal упразднён
  • inject() — рекомендованный способ DI вместо constructor injection
  • Material 3 (stable) — Angular Material полностью перешёл на Material Design 3
  • Deferrable views (@defer) — stable
  • Built-in control flow (@if, @for, @switch) — stable
  • Улучшенная гидратация — можно проверять статус через DevTools
  • Time-picker компонент в Angular Material

Angular 17 (ноябрь 2023)

  • Новый синтаксис шаблонов@if, @else if, @for, @empty, @switch вместо структурных директив
  • @defer (Developer Preview) — ленивая загрузка блоков шаблона с триггерами idle, viewport, interaction, hover, timer
  • Standalone-проекты по умолчанию при создании через ng new
  • esbuild — stable → сборка в разы быстрее, поддержка Vite
  • Signals продолжают развиваться
  • @for до 90% быстрее по сравнению с *ngFor в некоторых сценариях
  • Новый сайт документации — angular.dev
  • ng e2e — обновление и поддержка Playwright/Cypress вместо Protractor

Angular 16 (май 2023)

  • Signals (Developer Preview) — появились signal(), computed(), effect()
  • @Input() как обязательный@Input({ required: true })
  • @Input() из роут-параметров — привязка к query/route/fragment параметрам без ActivatedRoute
  • esbuild в экспериментальном статусе
  • Удаление ngcc (Angular compatibility compiler) — полный переход на Ivy
  • Jest (experimental) — первая официальная поддержка Jest в CLI
  • SSR: Non-Destructive Hydration — вместо полного уничтожения и перерисовки DOM
  • DestroyRef — новый токен для управления очисткой ресурсов

Angular 15 (ноябрь 2022)

  • Standalone API — stable — компоненты, директивы, пайпы без NgModule
  • Standalone API для Router и HttpClient — уменьшение бандла до 11%
  • Directive Composition API — применение директив к host-элементу компонента из TypeScript-класса
  • NgOptimizedImage — stable — директива для оптимизации изображений (LCP, lazy loading)
  • Улучшенный stack trace — ошибки стали более читаемыми и понятными
  • Рефакторинг Angular Material — упрощённая кастомизация тем
  • CDK Listbox — новый компонент в CDK
  • providedIn: NgModule и providedIn: 'any' — deprecated
  • Функциональные Route GuardscanActivate: [() => inject(AuthGuard).canActivate()]

Angular 14 (июнь 2022)

  • Standalone Components (Developer Preview) — компоненты без NgModule
  • Typed Reactive Forms — строгая типизация FormControl<T>, FormGroup<T>, FormRecord<T>
  • inject() функция — можно внедрять зависимости вне конструктора
  • titlecase и другие утилиты формisFormControl(), isFormGroup(), isFormArray()
  • Extended template diagnostics — компилятор ловит больше ошибок в шаблонах
  • createComponent() — динамическое создание компонентов без ComponentFactoryResolver
  • Angular DevTools — улучшенный профайлер

Angular 13 (ноябрь 2021)

  • Полный переход на Ivy — View Engine окончательно удалён
  • ComponentFactoryResolver deprecated — замена на createComponent()
  • Динамические компоненты без entryComponents
  • isPlatformBrowser() и аналоги — улучшенная поддержка SSR
  • Обновление Angular Material — улучшенный MDC-based Angular Material
  • Поддержка TypeScript 4.4
  • Persistent build cache — кэш сборки включён по умолчанию (ускорение до 68%)

Angular 12 (май 2021)

  • View Engine — deprecated (финальный шаг перед полным удалением)
  • Protractor deprecated — рекомендация перейти на Cypress/WebdriverIO
  • Nullish coalescing ?? в шаблонах
  • Поддержка Tailwind CSS из коробки
  • Strict mode по умолчанию в CLI (ng new создаёт строгие проекты)
  • Поддержка webpack 5
  • Inline Sass в шаблонах компонентов
  • Улучшение Angular DevTools

Angular 11 (ноябрь 2020)

  • Faster builds — улучшение скорости компиляции
  • Hot Module Replacement (HMR) — experimental
  • Stricter types для Router и Forms
  • Автоматическая миграция с tslint на eslint
  • Font inlining — автоматическое встраивание шрифтов Google Fonts для улучшения производительности
  • Улучшенный ng lint с поддержкой ESLint

Angular 10 (июнь 2020)

  • Новый Date Range Picker в Angular Material
  • Предупреждения при использовании CommonJS-зависимостей (влияет на tree-shaking)
  • Optional strict mode в ng new
  • Удалена поддержка устаревших браузеров (IE 9/10, IE Mobile)
  • Поддержка TypeScript 3.9, tslib 2.0
  • Обновление Angular Material и CDK

Angular 9 (февраль 2020)

  • Ivy — стабильный рендерер по умолчанию (был experimental в v8)
  • Уменьшение размера бандла — Ivy-приложения значительно меньше
  • Улучшенная проверка типов в шаблонах
  • TestBed.inject() вместо устаревшего TestBed.get()
  • Internationalization (i18n) улучшения
  • Новые возможности Angular FormsAbstractControl.markAllAsTouched()

Angular 8 (май 2019)

  • Differential Loading — сборка двух бандлов: ES2015 (современные браузеры) и ES5 (старые)
  • Ivy (Developer Preview) — предварительный просмотр нового рендерера
  • Lazy Loading с динамическим import() вместо строк loadChildren: './path#Module'
  • Web Workers — официальная поддержка через CLI
  • Angular Forms$any() type cast function
  • Service Worker улучшения

Angular 7 (октябрь 2018)

  • CLI Prompts — интерактивные подсказки при ng new и ng add
  • Virtual Scrolling в CDK — рендер только видимых элементов списка
  • Drag and Drop в CDK
  • Angular Material & CDK — новые компоненты
  • Улучшения производительности Bundle Budget warnings
  • @angular/bazel — поддержка Bazel как альтернативного билдера

Angular 6 (май 2018)

  • ng update — автоматическое обновление зависимостей
  • ng add — добавление библиотек одной командой (PWA, Material, Firebase)
  • Angular Elements — компиляция компонентов в Web Components (Custom Elements)
  • Angular CDK Overlay — позиционирование оверлеев
  • Tree-shakable ProvidersprovidedIn: 'root' в @Injectable()
  • RxJS 6 — обязательный переход
  • Ivy в экспериментальном статусе (работа началась)

Angular 5 (ноябрь 2017)

  • Build Optimizer — уменьшение размера бандла
  • HttpClient (stable) — новый HttpClient из @angular/common/http вместо старого Http
  • Angular Universal (stable) — серверный рендеринг
  • Progressive Web Apps — улучшенная поддержка Service Workers
  • Router Lifecycle Events — новые события ActivationStart, ActivationEnd, ResolveStart
  • Поддержка TypeScript 2.3/2.4
  • preserveWhitespaces опция в компонентах

Angular 4 (март 2017)

  • Angular Universal — в составе core — SSR вошёл в официальный набор
  • ng-template вместо <template> (тег <template> удалён)
  • ngIf с else*ngIf="cond; else elseTemplate"
  • Поддержка strictNullChecks
  • titlecase pipe
  • Animations вынесены в отдельный пакет @angular/animations
  • Email Validator для форм
  • HttpParams для работы с query-параметрами
  • Уменьшение размера бандла (~60% меньше по сравнению с Angular 2)

Angular 3 (пропущена)

Версия 3 была пропущена намеренно — для синхронизации версий пакетов (@angular/router уже был на v3).


Angular 2 (сентябрь 2016)

  • Полное переписывание AngularJS — TypeScript вместо JavaScript, компонентная архитектура вместо контроллеров
  • Компоненты — основной строительный блок (вместо директив и контроллеров)
  • TypeScript — официальный язык фреймворка
  • RxJS — реактивность через Observable вместо $scope.$watch
  • Angular CLI — стандартизированный инструмент разработки
  • Dependency Injection — переработанная иерархическая система DI
  • NgModules — модульная система для организации кода
  • Zones.js — механизм обнаружения изменений
  • AOT Compilation — компиляция шаблонов во время сборки
  • Renderer2 — абстракция над DOM для Server-Side Rendering
  • Lazy Loading через Router
  • Tree-shakable архитектура

Общий вектор развития

ПериодФокус
v2–v5Становление фреймворка, TypeScript, HttpClient, SSR
v6–v9Инструментарий CLI, Elements, Ivy (preview → stable)
v10–v13Строгая типизация, полный переход на Ivy, удаление legacy
v14–v15Standalone компоненты, Typed Forms, Directive Composition
v16–v18Signals, новый синтаксис шаблонов, Zoneless (preview), esbuild
v19–v21Signals stable, Zoneless default, Signal Forms, без Zone.js

Тренд: постепенный отказ от NgModule → NgModules deprecated, Zone.js → Zoneless default, RxJS → Signals, Karma → Vitest, Webpack → esbuild.