Angular 2 (2016)
- Complete rewrite of AngularJS (Angular 1)
- Component-based architecture
- Dependency Injection
- TypeScript-based development
- Improved performance and modular structure
- Directives: structural & attribute
Angular 4 (2017)
- Skipped Angular 3 to align router version
- Smaller bundle size with better Ahead-of-Time (AOT) compilation
- Improved *ngIf and *ngFor with else clause
- TypeScript 2.1 and 2.2 compatibility
- Animations module separated into
@angular/animations
Angular 5 (2017)
- Build Optimizer to remove unnecessary code
- New
HttpClientModule(improved over oldHttpModule) - Faster compilation using incremental builds
- Internationalization improvements
- Angular Universal for server-side rendering
Angular 6 (2018)
- Angular CLI v6 with
ng addandng updatecommands - Angular Elements for creating Web Components
- Tree-shakable providers (via
providedIn: 'root') - RxJS 6 support with
rxjs-compatfor backward compatibility - Workspace configuration file (
angular.json)
Angular 7 (2018)
- CLI Prompts for commands like
ng newandng add - Virtual Scrolling (CDK) for large lists
- Drag and Drop module in Angular CDK
- Improved performance and error handling
- Support for TypeScript 3.1
Angular 8 (2019)
- Ivy compiler (preview, not enabled by default)
- Differential Loading for modern vs legacy JS bundles
- Lazy loading via dynamic
import() - Web Worker support via CLI
- TypeScript 3.4 support
Angular 9 (2020)
- Ivy renderer enabled by default
- Smaller bundle sizes, faster build times
- Improved test debugging and stack traces
- Component Harness for testing components
- TypeScript 3.7 support
Angular 10 (2020)
- Optional stricter project setup (
ng new --strict) - Updated browser configuration (ES5 support dropped for older browsers)
- CommonJS import warnings
- TS 3.9 and TSLint updates
- Better performance and bug fixes
Angular 11 (2020)
- Faster builds and stricter types
- ESLint support (with migration from TSLint)
- HMR (Hot Module Replacement) support
- Updated logging and CLI experience
- Component Test Harnesses improvements
Angular 12 (2021)
- Ivy everywhere (View Engine deprecated)
- Nullish Coalescing (
??) support - Webpack 5 support
- Enhanced AOT and production builds
- Strict mode enabled by default
Angular 13 (2021)
- Complete removal of View Engine
- Dynamic component creation simplified with
createComponent - ESBuild support in Angular CLI
- More powerful TypeScript integration
- Inline support for Adobe fonts
Angular 14 (2022)
- Typed Reactive Forms (preview)
- Standalone Components, Directives, and Pipes (preview)
- CLI auto-completion and better analytics
- Extended diagnostics and improved error messages
- Strictly typed
ngModel
Angular 15 (2022)
- Stable Standalone APIs (no need for NgModules)
- Directive Composition API
- Image directives for automatic optimization
- Improved SSR support
- TS 4.8 support
Angular 16 (2023)
- Signals: a new reactivity model
- Required Inputs: catch missing inputs at build time
- SSR with hydration (faster initial rendering)
- Environment injectors
- Improved developer tooling and diagnostics
Angular 17 (2023)
- New Template Syntax:
@if,@for, replacing*ngIf,*ngFor - @defer for lazy-loading template blocks
- View Transitions API for animations
- Full Hybrid Rendering support (SSR + CSR)
- Turbo CLI (faster CLI operations)
- Improved build performance and dev experience
Angular 20 (2024)
Here are the key new features introduced in Angular 20:
1. Standalone Components as Default
Description:
Angular 20 promotes standalone components to be the default approach. This simplifies component declarations and removes the need for NgModule in many cases.
Example:
@Component({
standalone: true,
selector: 'app-hello',
templateUrl: './hello.component.html'
})
export class HelloComponent {}
2. Signals for Reactive State Management
Description:
Signals provide a fine-grained reactivity model, replacing RxJS in many use cases for simpler state tracking.
Example:
import { signal } from '@angular/core';
const counter = signal(0);
counter.set(counter() + 1);
3. Built-in Control Flow (@if, @for)
Description:
Angular now supports built-in template syntax like @if and @for, replacing structural directives like *ngIf and *ngFor.
Example:
@for (item of items; track item.id) {
<li>{{ item.name }}</li>
}
@if (loggedIn) {
<p>Welcome back!</p>
}
4. Zoneless Change Detection (Experimental)
Description:
Angular 20 introduces experimental support for applications without zone.js, improving performance and enabling finer-grained control over updates.
5. Improved SSR with Hydration
Description:
Angular 20 improves server-side rendering with full hydration support, enabling better SEO and faster first contentful paint.
6. Updated Angular CLI
Description:
The CLI now includes better support for standalone components, simplified project scaffolding, and improved performance diagnostics.
7. Improved Documentation and Dev Tools
Description:
Angular 20 brings improved inline documentation, better IntelliSense, and updates to Angular DevTools to support signals and the new control flow syntax.