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()— stableresource()и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 Guards —
canActivate: [() => 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 окончательно удалён
ComponentFactoryResolverdeprecated — замена на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 Forms —
AbstractControl.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 Providers —
providedIn: '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 titlecasepipe- 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–v15 | Standalone компоненты, Typed Forms, Directive Composition |
| v16–v18 | Signals, новый синтаксис шаблонов, Zoneless (preview), esbuild |
| v19–v21 | Signals stable, Zoneless default, Signal Forms, без Zone.js |
Тренд: постепенный отказ от
NgModule → NgModules deprecated,Zone.js → Zoneless default,RxJS → Signals,Karma → Vitest,Webpack → esbuild.