Angular - the core framework
Last release today
27 Aug 2026
Ships on a steady schedule
a new release about every 2 weeks
Some releases are documented
notes for 289 of 571 stable releases
1 version withdrawn
withdrawn after publishing
10 years old
1101 releases · first in 2016
Release timeline
1101 releases since 2016Releases
- 21.2.518 Mar 2026
Release notes
Open source →compiler
Commit Description ensure generated code compiles parse named HTML entities containing digits compiler-cli
Commit Description escape template literal in TCB generic types not filled out correctly in type check block core
Commit Description clean up dehydrated views during HMR component replacement run linked signal equality check without reactive consumer migrations
Commit Description prevent trailing comma syntax errors after removing NgStyle service-worker
Commit Description preserve redirect policy on reconstructed asset requests Release notes
Open source →compiler
Commit Type Description 334ae10168 fix ensure generated code compiles 23ea431c4e fix parse named HTML entities containing digits compiler-cli
Commit Type Description 26c43d14ba fix escape template literal in TCB 67e0ba7e03 fix generic types not filled out correctly in type check block core
Commit Type Description 1890c3008b fix clean up dehydrated views during HMR component replacement bf948be4c2 fix run linked signal equality check without reactive consumer migrations
Commit Type Description 076d41c3f6 fix prevent trailing comma syntax errors after removing NgStyle service-worker
Commit Type Description e19150d2b5 fix preserve redirect policy on reconstructed asset requests <!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.20"></a>
- 21.2.412 Mar 2026
Release notes
Open source →compiler
Commit Description disallow translations of iframe src core
Commit Description reverts "feat(core): add support for nested animations" sanitize translated form attributes Release notes
Open source →compiler
Commit Type Description ed2d324f9c fix disallow translations of iframe src core
Commit Type Description abbd8797bb fix reverts "feat(core): add support for nested animations" d1dcd16c5b fix sanitize translated form attributes <!-- CHANGELOG SPLIT MARKER -->
<a name="21.2.3"></a>
- 21.2.311 Mar 2026
Release notes
Open source →core
Commit Description ensure definitions compile include signal debug names in their toString()representationsanitize translated attribute bindings with interpolations Release notes
Open source →core
Commit Type Description 62a97f7e4b fix ensure definitions compile 21b1c3b2ee fix include signal debug names in their toString()representation224e60ecb1 fix sanitize translated attribute bindings with interpolations <!-- CHANGELOG SPLIT MARKER -->
<a name="21.2.2"></a>
- 21.2.29 Mar 2026
Release notes
Open source →compiler
Commit Description prevent mutation of children array in RecursiveVisitor compiler-cli
Commit Description always parenthesize object literals in TCB ignore generated ngDevMode signal branch for code coverage forms
Commit Description add 'blur' option to debounce rule Release notes
Open source →compiler
Commit Type Description 1df1697c6e fix prevent mutation of children array in RecursiveVisitor compiler-cli
Commit Type Description c822bf8e76 fix always parenthesize object literals in TCB 05d022d5e6 fix ignore generated ngDevMode signal branch for code coverage forms
Commit Type Description 670d1660c4 feat add 'blur' option to debounce rule <!-- CHANGELOG SPLIT MARKER -->
<a name="21.2.1"></a>
- 21.2.14 Mar 2026
Release notes
Open source →core
Commit Description adds transfer cache to httpResource to fix hydration prevent child animation elements from being orphaned Prevent removal of elements during drag and drop http
Commit Description correctly cache blob responses in transfer cache (#67002) Release notes
Open source →core
Commit Type Description e2e9a9a531 fix adds transfer cache to httpResource to fix hydration b4ec3cc4e4 fix prevent child animation elements from being orphaned e923d88398 fix Prevent removal of elements during drag and drop http
Commit Type Description 277ade97ac fix correctly cache blob responses in transfer cache (#67002) <!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.19"></a>
- 21.2.025 Feb 2026
Release notes
Open source →common
Commit Description add an 'outlet' injector option for ngTemplateOutlet Add Location strategies to manage trailing slash on write support height in ImageLoaderConfig and built-in loaders compiler
compiler-cli
Commit Description attach source spans to object literal keys in TCB support nested component declaration update diagnostic to flag no-op arrow functions in listeners core
forms
language-server
language-service
Commit Description add JSON schema for angularCompilerOptions add linked editing ranges for HTML tag synchronization use lightweight project warmup for Angular analysis router
Commit Description Add partial ActivatedRouteSnapshot information to canMatchparamsMake match options optional in isActive Update IsActiveMatchOptionsAPIs to accept a PartialRelease notes
Open source →common
Commit Type Description 18003a33bb feat add an 'outlet' injector option for ngTemplateOutlet 8bbe6dc46c feat Add Location strategies to manage trailing slash on write 51cc914807 feat support height in ImageLoaderConfig and built-in loaders compiler
Commit Type Description 72534e2a34 feat Add support for the instanceofbinary operator95b3f37d4a feat Exhaustive checks for switch blocks 04ba09a8d9 feat support AstVisitor.visitEmptyExpr()ce80136e7b fix optimize away unnecessary restore/reset view calls 3242a61bae fix variable counter visiting some expressions twice compiler-cli
Commit Type Description 473dd3e1cb fix attach source spans to object literal keys in TCB a904d9f77b fix support nested component declaration 2ea6dfc6c9 fix update diagnostic to flag no-op arrow functions in listeners core
Commit Type Description 8d5210c9fe feat add ChangeDetectionStrategy.Eager alias for Default 92d2498910 feat add host node to DeferBlockData (#66546) ea2016a6dc feat add support for nested animations 81cabc1477 feat add support for TypeScript 6 1ba9b7ac50 feat resource composition via snapshots d9923b72a2 feat support arrow functions in expressions a7e8abbb7e fix correctly handle SkipSelf when resolving from embedded view injector 0806ee3826 fix prevent animated element duplication with dynamic components in zoneless mode ed78fa05c7 fix Remove note to skip arrow functions in best practices forms
Commit Type Description f56bb07d83 feat add field param to submit action and onInvalid ba009b6031 feat add form directive 22afbb2f36 feat add parsing support to native inputs (#66917) 95c386469c feat Add passing focus options to form field 95ecce8334 feat allow setting submit options at form-level ebae211add feat introduce parse errors in signal forms 3937afc316 feat introduce SignalFormControl for Reactive Forms compatibility 30f0914754 feat support binding null to number input (#66917) dd208ca259 feat update submit function to accept options object 27397b3f4f fix clear parse errors when model updates (#66917) 63d8005703 fix preserve custom-control focus context in signal forms 631f60d1f9 fix preserve parse errors when parse returns value adfb83146b fix simplify design of parse errors fb05fc86d0 fix sort error summary by DOM order 567f292e8e fix support custom controls as host directives bdfb60f3e3 fix use consistent error format returned from parse d75046bc09 fix warn when showing hidden field state language-server
Commit Type Description ebc90c26f5 feat Add completions and hover info for inline styles 26fd0839c3 feat Add folding range support for inline styles 573aadef7e feat Add quick info for inline styles 6fb39d9b62 feat Support client-side file watching via onDidChangeWatchedFileslanguage-service
Commit Type Description 496967e7b1 feat add JSON schema for angularCompilerOptions 8c21866f49 feat add linked editing ranges for HTML tag synchronization d2137928e8 perf use lightweight project warmup for Angular analysis router
Commit Type Description b51bab583d feat Add partial ActivatedRouteSnapshot information to canMatchparamscf9620f7d0 feat Make match options optional in isActive 907a94dcec feat Update IsActiveMatchOptionsAPIs to accept a Partial<!-- CHANGELOG SPLIT MARKER -->
<a name="21.1.6"></a>
- 21.2.0-rc.018 Feb 2026pre-release
Release notes
Open source →compiler
Commit Description Exhaustive checks for switch blocks core
Commit Description add support for TypeScript 6 prevent animated element duplication with dynamic components in zoneless mode forms
- 21.2.0-next.311 Feb 2026pre-release
Release notes
Open source →common
Commit Description add an 'outlet' injector option for ngTemplateOutlet support height in ImageLoaderConfig and built-in loaders compiler
Commit Description add geolocation element to schema compiler-cli
Commit Description update diagnostic to flag no-op arrow functions in listeners core
forms
Commit Description add field param to submit action and onInvalid add form directive support signal-based schemas in validateStandardSchema simplify design of parse errors http
Commit Description correctly parse ArrayBuffer and Blob in transfer cache - 21.2.0-next.25 Feb 2026pre-release
Release notes
Open source →core
forms
language-service
Commit Description add JSON schema for angularCompilerOptions add linked editing ranges for HTML tag synchronization localize
Commit Description add support for unit-test builder in ng-add schematic router
- 21.2.0-next.128 Jan 2026pre-release
Release notes
Open source →common
Commit Description Add Location strategies to manage trailing slash on write forms
Commit Description introduce parse errors in signal forms only touch visible, interactive fields on submit sort error summary by DOM order language-server
Commit Description Support client-side file watching via onDidChangeWatchedFileslanguage-service
Commit Description Detect local project version on creation router
Commit Description Add partial ActivatedRouteSnapshot information to canMatchparamsDo not intercept reload events with Navigation integration - 21.2.0-next.022 Jan 2026pre-release
Release notes
Open source →compiler
compiler-cli
Commit Description attach source spans to object literal keys in TCB support nested component declaration core
Commit Description add host node to DeferBlockData (#66546) resource composition via snapshots support arrow functions in expressions Remove note to skip arrow functions in best practices forms
Commit Description Add passing focus options to form field language-server
Commit Description Add completions and hover info for inline styles Add folding range support for inline styles Add quick info for inline styles - 21.1.625 Feb 2026
Release notes
Open source →common
Commit Description fix LCP image detection with duplicate URLs compiler-cli
Commit Description detect uninvoked functions in defer trigger expressions core
Commit Description block creation of sensitive URI attributes from ICU messages Breaking Changes
core
-
Angular now only applies known attributes from HTML in translated ICU content. Unknown attributes are dropped and not rendered.
(cherry picked from commit 306f367899dfc2e04238fecd3455547b5d54075d)
Release notes
Open source →Breaking Changes
core
-
Angular now only applies known attributes from HTML in translated ICU content. Unknown attributes are dropped and not rendered.
(cherry picked from commit 306f367899dfc2e04238fecd3455547b5d54075d)
common
Commit Type Description 31d3d56496 fix fix LCP image detection with duplicate URLs compiler-cli
Commit Type Description 24b578ce90 fix detect uninvoked functions in defer trigger expressions core
Commit Type Description b858309532 fix block creation of sensitive URI attributes from ICU messages <!-- CHANGELOG SPLIT MARKER -->
<a name="21.1.5"></a>
-
- 21.1.518 Feb 2026
Release notes
Open source →No user facing changes in this release
<!-- CHANGELOG SPLIT MARKER -->
<a name="21.1.4"></a>
- 21.1.411 Feb 2026
Release notes
Open source →compiler
Commit Description add geolocation element to schema core
Commit Description capture animation dependencies eagerly to avoid destroyed injector Fix flakey test due to document injection forms
Commit Description support signal-based schemas in validateStandardSchema http
Commit Description correctly parse ArrayBuffer and Blob in transfer cache Release notes
Open source →compiler
Commit Type Description caab23dfe6 fix add geolocation element to schema core
Commit Type Description 2b99eaa019 fix capture animation dependencies eagerly to avoid destroyed injector d6aeac504c fix Fix flakey test due to document injection forms
Commit Type Description 0d1acd0165 feat support signal-based schemas in validateStandardSchema http
Commit Type Description 3905015ccc fix correctly parse ArrayBuffer and Blob in transfer cache <!-- CHANGELOG SPLIT MARKER -->
<a name="21.1.3"></a>
- 21.1.35 Feb 2026
Release notes
Open source →core
Commit Description linkedSignal.updateshould propagate errorsexport DirectiveWithBindings hold constructors weakly in DepsTracker cache prevent element duplication with dynamic components forms
Commit Description Resolves debounce promise on abort in debounceForDuration localize
Commit Description add support for unit-test builder in ng-add schematic router
Commit Description limit UrlParser recursion depth to prevent stack overflow Use .bind to avoid holding other closures in memory Release notes
Open source →core
Commit Type Description 2b254bc050 fix linkedSignal.updateshould propagate errorse5110b4fa1 fix export DirectiveWithBindings 2cf4da0ea1 fix hold constructors weakly in DepsTracker cache 70a5b651be fix prevent element duplication with dynamic components forms
Commit Type Description 6f75b6e3f6 fix Resolves debounce promise on abort in debounceForDuration localize
Commit Type Description 4c7126d23b fix add support for unit-test builder in ng-add schematic router
Commit Type Description d6268c0bbb fix limit UrlParser recursion depth to prevent stack overflow 49a36f4cc7 perf Use .bind to avoid holding other closures in memory <!-- CHANGELOG SPLIT MARKER -->
<a name="21.1.2"></a>
- 21.1.228 Jan 2026
Release notes
Open source →forms
Commit Description only touch visible, interactive fields on submit language-service
Commit Description Detect local project version on creation router
Commit Description Do not intercept reload events with Navigation integration Release notes
Open source →forms
Commit Type Description 9f99b14882 fix only touch visible, interactive fields on submit language-service
Commit Type Description c57b0355b5 fix Detect local project version on creation router
Commit Type Description 21ecdc036a fix Do not intercept reload events with Navigation integration <!-- CHANGELOG SPLIT MARKER -->
<a name="21.1.1"></a>
- 21.1.121 Jan 2026
Release notes
Open source →compiler-cli
Commit Description drop .tsx extension for generated relative imports core
Commit Description handle Set in class bindings forms
Commit Description Ability to manually register a form field binding in signal forms fix control value syncing on touch Release notes
Open source →compiler-cli
Commit Type Description 0e1f1ed573 fix drop .tsx extension for generated relative imports core
Commit Type Description 05adfcf8f2 fix handle Set in class bindings forms
Commit Type Description d89a80a970 feat Ability to manually register a form field binding in signal forms cb75f9ce85 fix fix control value syncing on touch <!-- CHANGELOG SPLIT MARKER -->
<a name="21.1.0"></a>
- 21.1.014 Jan 2026
Release notes
Open source →common
Commit Description Add custom transformations for Cloudflare and Cloudinary image loaders support custom transformations in ImageKit and Imgix loaders compiler
Commit Description Add support for multiple swich cases matching Support empty cases core
forms
Commit Description allow focusing bound control from field state platform-browser
Commit Description add contexttocreateApplicationresolve JIT resources in createApplicationrouter
upgrade
Commit Description deprecate VERSIONexportDeprecations
upgrade
VERSIONfrom@angular/upgradeis deprecated. Please use the entry from@angular/upgrade/staticinstead.
Release notes
Open source →Deprecations
upgrade
VERSIONfrom@angular/upgradeis deprecated. Please use the entry from@angular/upgrade/staticinstead.
common
Commit Type Description d8790972be feat Add custom transformations for Cloudflare and Cloudinary image loaders a6b8cb68af feat support custom transformations in ImageKit and Imgix loaders compiler
Commit Type Description 640693da8e feat Add support for multiple swich cases matching 0ad3adc7c6 fix Support empty cases core
Commit Type Description 99ad18a4ee feat Add stability debugging utility a0dfa5fa86 feat support rest arguments in function calls 6e18fa8bc9 feat support spread elements in array literals e407280ab5 feat support spread expressions in object literals 06be8034bb fix Microtask scheduling should be used after any application synchronization b4f584cf42 fix return StaticProviderforprovidePlatformInitializerforms
Commit Type Description 1ea5c97703 feat allow focusing bound control from field state platform-browser
Commit Type Description ec9dc94cee feat add contexttocreateApplicationab67988d2e feat resolve JIT resources in createApplicationrouter
Commit Type Description 5edceffd04 feat add controls for route cleanup a03c82564d feat Add scroll behavior controls on router navigation e44839b016 feat Add standalone function to create a comptued for isActive c25d749d85 feat Execute RunGuardsAndResolvers function in injection context 1c00ab42f8 feat extend paramters of RedirectFunction to include paramMap and queryParamMap 7003e8d241 feat Publish Router's integration with platform Navigation API as experimental c84d372778 feat Support wildcard params with segments trailing (#64737) upgrade
Commit Type Description 75fe8f8af9 refactor deprecate VERSIONexport<!-- CHANGELOG SPLIT MARKER -->
<a name="21.0.9"></a>
- 21.1.0-rc.08 Jan 2026pre-release
Release notes
Open source →common
Commit Description Add custom transformations for Cloudflare and Cloudinary image loaders support custom transformations in ImageKit and Imgix loaders compiler
compiler-cli
Commit Description ensure component import diagnostics are reported within the importsexpressionfix up spelling of diagnostic support qualified names in typeoftype referencescore
forms
router
- 21.1.0-next.417 Dec 2025pre-release
Release notes
Open source →core
forms
Commit Description pass field directive to class config rename field to fieldTree in FieldContext and ValidationError language-service
Commit Description avoid interpolation highlighting inside @let Prevent language service from crashing on suggestion diagnostic errors Breaking Changes
forms
-
The shape of
SignalFormsConfig.classeshas changedPreviously each function in the
classesmap took aFieldState. Now it takes aFielddirective.For example if you previously had:
provideSignalFormsConfig({ classes: { 'my-valid': (state) => state.valid() } })You would need to update to:
provideSignalFormsConfig({ classes: { 'my-valid': ({state}) => state().valid() } })
-
- 21.1.0-next.311 Dec 2025pre-release
Release notes
Open source →core
Commit Description avoid false-positive deprecation when using InjectionTokenwith factory onlyforms
Commit Description fix signal forms type error - 21.1.0-next.211 Dec 2025pre-release
Release notes
Open source →compiler
Commit Description chain query creation instructions compiler-cli
Commit Description expand type for native controls with a dynamic type forms
upgrade
Commit Description deprecate VERSIONexportDeprecations
upgrade
VERSIONfrom@angular/upgradeis deprecated. Please use the entry from@angular/upgrade/staticinstead.
- 21.1.0-next.13 Dec 2025pre-release
Release notes
Open source →compiler
Commit Description prevent XSS via SVG animation attributeNameand MathML/SVG URLscompiler-cli
Commit Description avoid allocating an object for signals in production mode check that field radio button values are strings core
forms
Commit Description Allows transforms on FormUiControlsignalssupport dynamic [field]bindings (#65599)http
Commit Description enable XSRF protection for same-origin absolute URLs router
Commit Description handle errors from view transition finished promise - 21.1.0-next.025 Nov 2025pre-release
Release notes
Open source →platform-browser
Commit Description add contexttocreateApplicationresolve JIT resources in createApplicationrouter
Commit Description Add scroll behavior controls on router navigation Execute RunGuardsAndResolvers function in injection context Support wildcard params with segments trailing (#64737) - 21.0.914 Jan 2026
Release notes
Open source →forms
Commit Description Ensure the control instruction comes after the other bindings Rename signal form [field] to [formField] migrations
Commit Description prevent duplicate imports in common-to-standalone migration Release notes
Open source →forms
Commit Type Description 82d556a8fb fix Ensure the control instruction comes after the other bindings 0055f3cc79 fix Rename signal form [field] to [formField] migrations
Commit Type Description e4bfa5c9e7 fix prevent duplicate imports in common-to-standalone migration <!-- CHANGELOG SPLIT MARKER -->
<a name="21.0.8"></a>
- 21.0.88 Jan 2026
Release notes
Open source →core
Commit Description fix memory leak with event replay handle cancelled traversals in fake navigation Release notes
Open source →core
Commit Type Description a6a2621bf9 fix fix memory leak with event replay 5239e471a1 fix handle cancelled traversals in fake navigation <!-- CHANGELOG SPLIT MARKER -->
<a name="20.3.16"></a>
- 21.0.77 Jan 2026
Release notes
Open source →compiler
compiler-cli
Commit Description ensure component import diagnostics are reported within the importsexpressionfix up spelling of diagnostic support qualified names in typeoftype referencescore
Commit Description avoid leaking view data in animations explicitly cast signal node value to String sanitize sensitive attributes on SVG script elements forms
router
Commit Description Fix RouterLink href not updating with queryParamsHandlinghandle errors from view transition updateCallbackDonepromiseRelease notes
Open source →compiler
Commit Type Description 8e808740c9 fix better types for a few expression AST nodes 63b1cdcf70 fix produce accurate span for typeof and void expressions 3c3ae0cb64 fix provide location information for literal map keys 523dbaf1c3 fix stop ThisReceiver inheritance from ImplicitReceiver compiler-cli
Commit Type Description 4d9c4567ed fix ensure component import diagnostics are reported within the importsexpressioncd405685af fix fix up spelling of diagnostic 778460fcca fix support qualified names in typeoftype referencescore
Commit Type Description 7c74674eb0 fix avoid leaking view data in animations 0edbee4550 fix explicitly cast signal node value to String f9c29572d2 fix sanitize sensitive attributes on SVG script elements forms
Commit Type Description e3fba182f9 feat add [formField]directive561772b152 fix allow custom controls to require dirtyinputf0fb1d8581 fix allow custom controls to require hiddeninputec110f170b fix allow custom controls to require pendinginputae1dc16bb0 fix clean up abort listener after timeout 9748b0d5da fix support custom controls with non signal-based models 6bd22df987 fix Support readonly arrays in signal forms router
Commit Type Description 41cd4a6af8 fix Fix RouterLink href not updating with queryParamsHandling5e9e09aee0 fix handle errors from view transition updateCallbackDonepromise<!-- CHANGELOG SPLIT MARKER -->
<a name="21.0.6"></a>
- 21.0.617 Dec 2025
Release notes
Open source →core
Commit Description throw better errors for potential circular references use mutable ResponseInit type for RESPONSE_INIT token forms
Commit Description pass field directive to class config rename field to fieldTree in FieldContext and ValidationError language-service
Commit Description avoid interpolation highlighting inside @let Prevent language service from crashing on suggestion diagnostic errors Breaking Changes
forms
-
The shape of
SignalFormsConfig.classeshas changedPreviously each function in the
classesmap took aFieldState. Now it takes aFielddirective.For example if you previously had:
provideSignalFormsConfig({ classes: { 'my-valid': (state) => state.valid() } })You would need to update to:
provideSignalFormsConfig({ classes: { 'my-valid': ({state}) => state().valid() } })(cherry picked from commit 348f149e8b06d6885f54bac4cf03a9481a8b19b7)
-
(cherry picked from commit ae0c59028a2f393ea5716bf222db2c38e7a3989f)
Release notes
Open source →Breaking Changes (affecting only experimental features)
forms
-
The shape of
SignalFormsConfig.classeshas changedPreviously each function in the
classesmap took aFieldState. Now it takes aFielddirective.For example if you previously had:
provideSignalFormsConfig({ classes: { 'my-valid': (state) => state.valid() } })You would need to update to:
provideSignalFormsConfig({ classes: { 'my-valid': ({state}) => state().valid() } })(cherry picked from commit 348f149e8b06d6885f54bac4cf03a9481a8b19b7)
-
(cherry picked from commit ae0c59028a2f393ea5716bf222db2c38e7a3989f)
core
Commit Type Description 4c8fb3631d fix throw better errors for potential circular references 48492524ea fix use mutable ResponseInit type for RESPONSE_INIT token forms
Commit Type Description 81772b420d feat pass field directive to class config 729b96476b refactor rename field to fieldTree in FieldContext and ValidationError language-service
Commit Type Description e0694df3ec fix avoid interpolation highlighting inside @let 5047be4bc1 fix Prevent language service from crashing on suggestion diagnostic errors <!-- CHANGELOG SPLIT MARKER -->
<a name="21.0.5"></a>
-
- 21.0.511 Dec 2025
Release notes
Open source →core
Commit Description avoid false-positive deprecation when using InjectionTokenwith factory onlyforms
Commit Description fix signal forms type error Release notes
Open source →core
Commit Type Description 69d243abb74 fix avoid false-positive deprecation when using InjectionTokenwith factory onlyforms
Commit Type Description 4fd2b722b40 fix fix signal forms type error <!-- CHANGELOG SPLIT MARKER -->
<a name="21.0.4"></a>
- 21.0.411 Dec 2025
Release notes
Open source →compiler
Commit Description chain query creation instructions compiler-cli
Commit Description expand type for native controls with a dynamic type forms
Release notes
Open source →compiler
Commit Type Description f901cc9eb32 perf chain query creation instructions compiler-cli
Commit Type Description 65297c62011 fix expand type for native controls with a dynamic type forms
Commit Type Description f254ff4f2e0 feat expose element on signal forms Fielddirective5880fbc73c6 feat redo the signal forms metadata API 55fc677cef4 fix add signals for dirty, hidden, and pending states in custom controls cbb10179c80 fix allow resetting with empty string bf1c12cd932 fix memoize reads of child fields in signal forms (#65802) 6d7475582f9 fix Reuse key in parent in compat structure <!-- CHANGELOG SPLIT MARKER -->
<a name="21.0.3"></a>
- 21.0.33 Dec 2025
Release notes
Open source →compiler-cli
Commit Description avoid allocating an object for signals in production mode check that field radio button values are strings core
forms
Commit Description Allows transforms on FormUiControlsignalssupport dynamic [field]bindings (#65599)http
Commit Description enable XSRF protection for same-origin absolute URLs router
Commit Description handle errors from view transition finished promise Release notes
Open source →compiler-cli
Commit Type Description 5a80a48e96 fix avoid allocating an object for signals in production mode 1f1856e897 fix check that field radio button values are strings core
Commit Type Description 8c3304c766 fix run animation queue in environment injector context 4bb085311e fix unable to inject viewProviders when host directive with providers is present 609699ae17 perf tree shake unused dynamic [field]binding instructions (#65599)forms
Commit Type Description 6b4ab876e8 feat Allows transforms on FormUiControlsignalsa5dbd4b382 fix support dynamic [field]bindings (#65599)http
Commit Type Description 20474d3f0f fix enable XSRF protection for same-origin absolute URLs router
Commit Type Description 48b89f9fbe fix handle errors from view transition finished promise <!-- CHANGELOG SPLIT MARKER -->
<a name="21.0.2"></a>
- 21.0.21 Dec 2025
Release notes
Open source →Release notes
Open source →compiler
Commit Type Description 78fd159b78 fix prevent XSS via SVG animation attributeNameand MathML/SVG URLs<!-- CHANGELOG SPLIT MARKER -->
<a name="20.3.15"></a>
- 21.0.125 Nov 2025
Release notes
Open source →compiler-cli
Commit Description do not type check native controls with ControlValueAccessor escape angular control flow in jsdoc ignore non-existent files core
forms
Commit Description add DI option for classes on Fielddirectiveallow dynamic typebindings on signal form controlsrun reset as untracked http
Commit Description prevent XSRF token leakage to protocol-relative URLs migrations
Commit Description detect structural ngTemplateOutlet and ngComponentOutlet Release notes
Open source →compiler-cli
Commit Type Description 39c577bc36 fix do not type check native controls with ControlValueAccessor 8d3a89a477 fix escape angular control flow in jsdoc bc34083d34 fix ignore non-existent files core
Commit Type Description 0ea1e07174 fix apply bootstrap-options migration to platformBrowserDynamic70507b8c1c fix debug data causing memory leak for root effects a55482fca3 fix notify profiler events in case of errors 49ad7c6508 fix use injected DOCUMENTforCSP_NONCEcc1ec09931 perf avoid repeat searches for field directive forms
Commit Type Description 7d5c7cf99a feat add DI option for classes on Fielddirective8acf5d2756 fix allow dynamic typebindings on signal form controlsde5fca94c5 fix run reset as untracked http
Commit Type Description 3240d856d9 fix prevent XSRF token leakage to protocol-relative URLs migrations
Commit Type Description f394215b14 fix detect structural ngTemplateOutlet and ngComponentOutlet <!-- CHANGELOG SPLIT MARKER -->
<a name="21.0.0"></a>
- 21.0.019 Nov 2025
Release notes
Open source →common
compiler
compiler-cli
core
elements
Commit Description return value on signal input getter (#62113) forms
http
language-server
Commit Description fix directory renaming on Windows language-service
Commit Description address potential memory leak during project creation prevent interpolation from superseding block braces (#64392) migrations
platform-browser
Commit Description remove deprecated ApplicationConfigexport (#63529)router
upgrade
Commit Description Remove deprecated UpgradeAdapter (#61659) Breaking Changes
common
- (test only) -
TestBednow provides a fakePlatformLocationimplementation that supports the Navigation API. This may break some tests, though we have not observed any failures internally. You can revert to the old default forTestBedby providing theMockPlatformLocationfrom@angular/common/testingin your providers:{provide: PlatformLocation, useClass: MockPlatformLocation} ngComponentOutletContentis now of typeNode[][] | undefinedinstead ofany[][] | undefined.- NgModuleFactory has been removed, use NgModule instead.
compiler-cli
-
- Previously hidden type issues in host bindings may show up in your builds. Either resolve the type issues or set
"typeCheckHostBindings": falsein theangularCompilerOptionssection of your tsconfig.
- Previously hidden type issues in host bindings may show up in your builds. Either resolve the type issues or set
- The Angular compiler now produces an error when the
the
emitDeclarationOnlyTS compiler option is enabled as this mode is not supported.
core
-
The server-side bootstrapping process has been changed to eliminate the reliance on a global platform injector.
Before:
const bootstrap = () => bootstrapApplication(AppComponent, config);After:
const bootstrap = (context: BootstrapContext) => bootstrapApplication(AppComponent, config, context);A schematic is provided to automatically update
main.server.tsfiles to pass theBootstrapContextto thebootstrapApplicationcall.In addition,
getPlatform()anddestroyPlatform()will now returnnulland be a no-op respectively when running in a server environment. -
Using a combination of
provideZoneChangeDetectionwhile also removing ZoneJS polyfills will no longer result in the internal scheduler being disabled. All Angular applications now consistenly use the same scheduler, and those with the Zone change detection provider include additional automatic scheduling behaviors based on NgZone stabilization. -
- TypeScript versions less than 5.9 are no longer supported.
-
(test only) - Using
provideZoneChangeDetectionin the TestBed providers would previously preventTestBedfrom rethrowing errors as it should. Errors in the test will now be rethrown, regardless of the usage ofprovideZoneChangeDetection. Tests should be adjusted to prevent or account for these errors. As in previous major versions, this behavior can be disabled withrethrowApplicationErrors: falseinconfigureTestingModuleas a last resort. -
ignoreChangesOutsideZoneis no longer available as an option for configuring ZoneJS change detection behavior. -
Angular no longer provides a change detection scheduler for ZoneJS-based change detection by default. Add
provideZoneChangeDetectionto the providers of yourbootstrapApplicationfunction or yourAppModule(if usingbootstrapModule). This provider addition will be covered by an automated migration. -
moduleIdwas removed fromComponentmetadata. -
The
interpolationoption on Components has been removed. Only the default{{ ... }}is now supported.
elements
-
Fix signal input getter behavior in custom elements.
Before this change, signal inputs in custom elements required function calls to access their values (
elementRef.newInput()), while decorator inputs were accessed directly (elementRef.oldInput). This inconsistency caused confusion and typing difficulties.The getter behavior has been standardized so signal inputs can now be accessed directly, matching the behavior of decorator inputs:
Before:
- Decorator Input:
elementRef.oldInput - Signal Input:
elementRef.newInput()
After:
- Decorator Input:
elementRef.oldInput - Signal Input:
elementRef.newInput
- Decorator Input:
forms
- This new directive will conflict with existing FormArray directives or formArray inputs on the same element.
platform-browser
- The deprecated
ApplicationConfigexport from@angular/platform-browserhas been removed. Please importApplicationConfigfrom@angular/coreinstead.
router
lastSuccessfulNavigationis now a signal and needs to be invoked- Router navigations may take several additional microtasks to complete. Tests have been found to often be highly dependent on the exact timing of navigation completions with respect to the microtask queue. The most common fix for tests is to ensure all navigations have been completed before making assertions. On rare occasions, this can also affect production applications. This can be caused by multiple subscriptions to router state throughout the application, both of which trigger navigations that happened to not conflict with the previous timing.
upgrade
UpgradeAdapteris no longer available. Useupgrade/staticinstead
zone.js
- IE/Non-Chromium Edge are not supported anymore.
Deprecations
http
HttpResponseBase.statusTextis deprecated
Release notes
Open source →Blog post "Announcing Angular v21".
Breaking Changes
common
- (test only) -
TestBednow provides a fakePlatformLocationimplementation that supports the Navigation API. This may break some tests, though we have not observed any failures internally. You can revert to the old default forTestBedby providing theMockPlatformLocationfrom@angular/common/testingin your providers:{provide: PlatformLocation, useClass: MockPlatformLocation} ngComponentOutletContentis now of typeNode[][] | undefinedinstead ofany[][] | undefined.- NgModuleFactory has been removed, use NgModule instead.
compiler-cli
-
- Previously hidden type issues in host bindings may show up in your builds. Either resolve the type issues or set
"typeCheckHostBindings": falsein theangularCompilerOptionssection of your tsconfig.
- Previously hidden type issues in host bindings may show up in your builds. Either resolve the type issues or set
- The Angular compiler now produces an error when the
the
emitDeclarationOnlyTS compiler option is enabled as this mode is not supported.
core
-
The server-side bootstrapping process has been changed to eliminate the reliance on a global platform injector.
Before:
const bootstrap = () => bootstrapApplication(AppComponent, config);After:
const bootstrap = (context: BootstrapContext) => bootstrapApplication(AppComponent, config, context);A schematic is provided to automatically update
main.server.tsfiles to pass theBootstrapContextto thebootstrapApplicationcall.In addition,
getPlatform()anddestroyPlatform()will now returnnulland be a no-op respectively when running in a server environment. -
Using a combination of
provideZoneChangeDetectionwhile also removing ZoneJS polyfills will no longer result in the internal scheduler being disabled. All Angular applications now consistently use the same scheduler, and those with the Zone change detection provider include additional automatic scheduling behaviors based on NgZone stabilization. -
- TypeScript versions less than 5.9 are no longer supported.
-
(test only) - Using
provideZoneChangeDetectionin the TestBed providers would previously preventTestBedfrom rethrowing errors as it should. Errors in the test will now be rethrown, regardless of the usage ofprovideZoneChangeDetection. Tests should be adjusted to prevent or account for these errors. As in previous major versions, this behavior can be disabled withrethrowApplicationErrors: falseinconfigureTestingModuleas a last resort. -
ignoreChangesOutsideZoneis no longer available as an option for configuring ZoneJS change detection behavior. -
Angular no longer provides a change detection scheduler for ZoneJS-based change detection by default. Add
provideZoneChangeDetectionto the providers of yourbootstrapApplicationfunction or yourAppModule(if usingbootstrapModule). This provider addition will be covered by an automated migration. -
moduleIdwas removed fromComponentmetadata. -
The
interpolationoption on Components has been removed. Only the default{{ ... }}is now supported.
elements
-
Fix signal input getter behavior in custom elements.
Before this change, signal inputs in custom elements required function calls to access their values (
elementRef.newInput()), while decorator inputs were accessed directly (elementRef.oldInput). This inconsistency caused confusion and typing difficulties.The getter behavior has been standardized so signal inputs can now be accessed directly, matching the behavior of decorator inputs:
Before:
- Decorator Input:
elementRef.oldInput - Signal Input:
elementRef.newInput()
After:
- Decorator Input:
elementRef.oldInput - Signal Input:
elementRef.newInput
- Decorator Input:
forms
- This new directive will conflict with existing FormArray directives or formArray inputs on the same element.
platform-browser
- The deprecated
ApplicationConfigexport from@angular/platform-browserhas been removed. Please importApplicationConfigfrom@angular/coreinstead.
router
lastSuccessfulNavigationis now a signal and needs to be invoked- Router navigations may take several additional microtasks to complete. Tests have been found to often be highly dependent on the exact timing of navigation completions with respect to the microtask queue. The most common fix for tests is to ensure all navigations have been completed before making assertions. On rare occasions, this can also affect production applications. This can be caused by multiple subscriptions to router state throughout the application, both of which trigger navigations that happened to not conflict with the previous timing.
upgrade
UpgradeAdapteris no longer available. Useupgrade/staticinstead
zone.js
- IE/Non-Chromium Edge are not supported anymore.
Deprecations
http
HttpResponseBase.statusTextis deprecated
common
Commit Type Description c795960ada feat Add experimental support for the Navigation API (#63406) 9eac43cf46 feat Support of optional keys for the KeyValue pipe (#48814) a1868c9d13 feat update to cldr 47 (#64032) 196fa500a3 fix properly type ngComponentOutlet (#64561) 7a4b225c57 refactor improve typing of ngComponentOutletContent(#63674)25f593ce2a refactor remove ngModuleFactoryinput ofNgComponentOutlet(#62838)compiler
Commit Type Description ecea909bcc fix don't choke on unbalanced parens in declaration block 04dd75ba94 fix support arbitrary nesting in :host-context() f54cc4f28a fix support commas in :host() argument 814b2713f5 fix support complex selectors in :nth-child() aad6ced0ef fix support one additional level of nesting in :host() compiler-cli
Commit Type Description 563dbd998c feat Adds diagnostic for misconfigured @defertriggers (#64069)0571b335b9 feat enable type checking of host bindings by default (#63654) 5b55200edf fix allow value to be set on radio fields ab98b2425f fix capture metadata for undecorated fields (#63957) be7110342b fix disallow compiling with the emitDeclarationOnlyTS compiler option enabled (#61609)bd322ca410 fix do not flag custom control required inputs as missing when field is present 471da8a311 fix infer type of custom field controls 96cb0cffda fix infer types of signal forms set on native inputs 71ab11ccf0 fix make field detection logic more robust 1f389b8b97 fix missingStructuralDirective diagnostic produces false negatives (#64579) 7fd3db0423 fix remove internal syntax-related flags (#63787) c371251e4c fix report invalid bindings on form controls 01290ab275 fix use any when checking field interface conformance core
Commit Type Description 809a4ed8c1 feat Add migration for zoneless by default. (#63042) 2a7a5de53f feat Allow passing application providers in bootstrapModuleoptions (#64354)28926ba92c feat introduce BootstrapContextfor improved server bootstrapping (#63562)c2d376b85a feat make SimpleChanges generic (#64535) ad2376435b feat support IntersectionObserver options in viewport triggers (#64130) 539717f58a feat support regular expressions in templates (#63887) ab415f3d7f fix control not recognized when input has directive injecting ViewContainerRef (#64368) f008045ded fix do not rename ARIA property bindings to attributes (#63925) 1352fbdbf2 fix Drop special-case disables automatic change detection scheduling (#63846) c0791e1887 fix drop support for TypeScript 5.8 (#63589) aa389a691b fix ensure @foriteration over field is reactive (#64113)fec7c288e9 fix Error on invalid APP_ID (#63252) d399d7d02b fix Explicit Zone CD in TestBed providers should not override TestBed error handler (#63404) 92e09adc0a fix Remove ignoreChangesOutsideZone option (#62700) 45fed3d201 fix Remove Zone-based change provider from internals by default (#63382) c9f977833e fix skip Angular formatting when formatting signals recursively 67fbd5ff1e fix SSR error in signal forms c241038111 fix update symbols (#64481) a5e5dbbc16 refactor remove moduleIdfrom Component metadata (#63482)9a16718b13 refactor remove deprecated interpolationoption on Components. (#63474)elements
Commit Type Description be0455adda fix return value on signal input getter (#62113) forms
Commit Type Description a278ee358c feat add debounce()rule for signal formsb8314bd340 feat add experimental signal-based forms (#63408) 0dd95c503f feat Add FormArrayDirective (#55880) d201cd2c2b feat Prevents marking fields as touched/dirty when state is hidden/readonly/disabled (#63633) 9c5e969f51 fix bind invalid input in custom controls (#64526) 10ef96adb3 fix consistent treatment of empty (#63456) d89e522a1f fix debounce updates from interop controls c0d88c37c9 fix Emit FormResetEventwhen resetting control (#64024)94b0afec00 fix implement interoperability between signal forms and reactive forms (#64471) a1ac9a6415 fix interop supports CVAs with signals (#64618) 505bde1fed fix mark field as dirty when value is changed by ControlValueAccessor(#64471)3529877772 fix mark field as dirty when value is changed by a bound control (#64483) fd9af2afaf fix only propagate schema defined properties from field to control (#64446) 91d8d55a80 fix Set error message of a schema error. f4d1017c25 fix test that common field states are propagated to controls (#63884) acd7c83597 fix test that min/max properties are propagated to controls (#63884) 71e8672837 fix test that minLength/maxLength properties are propagated to controls (#63884) 507b3466ee perf implement change detection for field control bindings 781a3299f9 perf only update interop controls when bound field changes 32f86d35f7 perf optimize [field]binding instructions (#64351)http
Commit Type Description 2739b7975b feat add referrerPolicy option to HttpResource (#64283) 07e678872f feat Add reponseType property to HttpResponse and HttpErrorResponse (#63043) 5cbdefcf11 feat add support for fetch referrerPolicy option in HttpClient (#64116) 4bed062bc9 feat Provide http services in root (#56212) 0e4e17cd97 refactor HttpResponseBase.statusText(#64176)language-server
Commit Type Description 3f7111a9c3 fix fix directory renaming on Windows language-service
Commit Type Description 89095946cf fix address potential memory leak during project creation 80e00ff4e5 fix prevent interpolation from superseding block braces (#64392) migrations
Commit Type Description 6ddb250391 feat add migration to convert ngClass to use class (#62983) 8dc8914c8a feat add migration to convert ngStyle to use style (#63517) 861cee34e0 feat Adds migration for deprecated router testing module (#64217) 75fc16b261 feat Adds support for CommonModule to standalone migration (#64138) 655a99d0c6 fix fix bug in ngclass-to-class migration (#63617) 62bbce63b7 fix remove error for no matching files in control flow migration (#64253) platform-browser
Commit Type Description ce8db665f9 refactor remove deprecated ApplicationConfigexport (#63529)router
Commit Type Description 4e0fc81491 feat convert lastSuccessfulNavigationto signal (#63057)5e61e8d3c3 fix Fix memory leak through Navigation.abort and canDeactivate guards (#64141) f6a73f1913 fix Respect custom UrlSerializerhandling of query parameters (#64449)5b53535dd1 fix Update recognize stage to use internally async/await (#62994) upgrade
Commit Type Description f86846555b fix Remove deprecated UpgradeAdapter (#61659) <!-- CHANGELOG SPLIT MARKER -->
<a name="20.3.13"></a>
- (test only) -
- 21.0.0-rc.317 Nov 2025pre-release
Release notes
Open source →compiler
Commit Description don't choke on unbalanced parens in declaration block core
Commit Description SSR error in signal forms forms
Commit Description debounce updates from interop controls Set error message of a schema error. - 21.0.0-rc.212 Nov 2025pre-release
Release notes
Open source →common
Commit Description remove placeholder image listeners once view is removed compiler
Commit Description support commas in :host() argument support complex selectors in :nth-child() support one additional level of nesting in :host() compiler-cli
core
Commit Description skip Angular formatting when formatting signals recursively forms
Commit Description add debounce()rule for signal formsonly update interop controls when bound field changes language-server
Commit Description fix directory renaming on Windows language-service
Commit Description address potential memory leak during project creation - 21.0.0-rc.15 Nov 2025pre-release
Release notes
Open source →compiler-cli
Commit Description infer type of custom field controls infer types of signal forms set on native inputs make required inputs diagnostic less noisy report invalid bindings on form controls core
Commit Description skip leave animations on view swaps forms
Commit Description implement change detection for field control bindings migrations
Commit Description Prevent removal of templates referenced with preceding whitespace characters - 21.0.0-rc.029 Oct 2025pre-release
Nothing published for this version
- 21.0.0-next.1029 Oct 2025pre-release
Release notes
Open source →common
Commit Description Blocks IPv6 localhost from preconnect checks compiler
Commit Description support arbitrary nesting in :host-context() core
Commit Description Clear lView from IcuIteratorState when stack is empty to prevent memory leak ensure @foriteration over field is reactive (#64113)forms
Commit Description interop supports CVAs with signals (#64618) migrations
Commit Description Do not remove a template if it is referenced even with a trailing semilocon router
Commit Description handle parenthesized outlets without a name in DefaultUrlSerializer (#64507) - 21.0.0-next.922 Oct 2025pre-release
Release notes
Open source →animations
Commit Description account for Element.animateexceptions (#64506)common
Commit Description update to cldr 47 (#64032) properly type ngComponentOutlet (#64561) compiler
Commit Description correctly compile long numeric HTML entities (#64297) compiler-cli
Commit Description missingStructuralDirective diagnostic produces false negatives (#64470) missingStructuralDirective diagnostic produces false negatives (#64579) core
forms
language-service
Commit Description prevent interpolation from superseding block braces (#64392) migrations
Commit Description Adds support for CommonModule to standalone migration (#64138) platform-browser
Commit Description DomEventsPluginshould always be the last plugin to be called forsupports(). (#50394)router
Breaking Changes
zone.js
- IE/Non-Chromium Edge are not supported anymore.
- 21.0.0-next.815 Oct 2025pre-release
Release notes
Open source →compiler-cli
Commit Description Adds diagnostic for misconfigured @defertriggers (#64069)capture metadata for undecorated fields (#63957) fix performance of "interpolated signal not invoked" check (#64410) core
forms
http
Commit Description add referrerPolicy option to HttpResource (#64283) migrations
router
Commit Description Scroll restoration should use instant scroll behavior for traversals (#64299) - 21.0.0-next.78 Oct 2025pre-release
Release notes
Open source →common
Commit Description Support of optional keys for the KeyValue pipe (#48814) core
http
Commit Description add support for fetch referrerPolicy option in HttpClient (#64116) HttpResponseBase.statusText(#64176)migrations
Commit Description preserve component imports when pruning NgModules in standalone migration (#64186) remove error for no matching files in control flow migration (#64253) router
Commit Description Fix memory leak through Navigation.abort and canDeactivate guards (#64141) Deprecations
http
HttpResponseBase.statusTextis deprecated
- 21.0.0-next.62 Oct 2025pre-release
Release notes
Open source →common
Commit Description Support of optional keys for the KeyValue pipe (#48814) compiler
Commit Description recover template literals with broken expressions (#64150) core
Commit Description Fixes animations in conjunction with content projection (#63776) prevents unintended early termination of leave animations and hoisting (#64088) elements
Commit Description return value on signal input getter (#62113) migrations
Commit Description handle shorthand property declarations in NgModule (#64160) skip migration for inputs with 'this' references (#64142) Breaking Changes
elements
-
Fix signal input getter behavior in custom elements.
Before this change, signal inputs in custom elements required function calls to access their values (
elementRef.newInput()), while decorator inputs were accessed directly (elementRef.oldInput). This inconsistency caused confusion and typing difficulties.The getter behavior has been standardized so signal inputs can now be accessed directly, matching the behavior of decorator inputs:
Before:
- Decorator Input:
elementRef.oldInput - Signal Input:
elementRef.newInput()
After:
- Decorator Input:
elementRef.oldInput - Signal Input:
elementRef.newInput
- Decorator Input:
-
- 21.0.0-next.524 Sept 2025pre-release
Release notes
Open source →common
Commit Description update to cldr 47 (#63923) compiler-cli
Commit Description capture metadata for undecorated fields (#63904) resolve import alias in defer blocks (#63966) core
forms
Commit Description Emit FormResetEventwhen resetting control (#64024)migrations
Commit Description handle import aliases to the same module name (#63934) handle reused templates in control flow migration (#63996) - 21.0.0-next.417 Sept 2025pre-release
Release notes
Open source →common
Commit Description improve typing of ngComponentOutletContent(#63674)compiler
Commit Description Add support for aria-invalid(#63748)compiler-cli
core
forms
Commit Description Prevents marking fields as touched/dirty when state is hidden/readonly/disabled (#63633) migrations
Commit Description add migration to convert ngStyle to use style (#63517) fix route-lazy-loading migration (#63818) Breaking Changes
common
ngComponentOutletContentis now of typeNode[][] | undefinedinstead ofany[][] | undefined.
core
- Using a combination of
provideZoneChangeDetectionwhile also removing ZoneJS polyfills will no longer result in the internal scheduler being disabled. All Angular applications now consistenly use the same scheduler, and those with the Zone change detection provider include additional automatic scheduling behaviors based on NgZone stabilization. - Angular no longer provides a change detection scheduler
for ZoneJS-based change detection by default. Add
provideZoneChangeDetectionto the providers of yourbootstrapApplicationfunction or yourAppModule(if usingbootstrapModule). This provider addition will be covered by an automated migration. moduleIdwas removed fromComponentmetadata.- The
interpolationoption on Components has been removed. Only the default{{ ... }}is now supported.
- 21.0.0-next.310 Sept 2025pre-release
Release notes
Open source →Commit Description remove refresh button from transfer state tab (#63592) compiler-cli
Commit Description enable type checking of host bindings by default (#63654) core
Commit Description introduce BootstrapContextfor improved server bootstrapping (#63562)drop support for TypeScript 5.8 (#63589) migrations
Commit Description fix bug in ngclass-to-class migration (#63617) Breaking Changes
compiler-cli
-
- Previously hidden type issues in host bindings may show up in your builds. Either resolve the type issues or set
"typeCheckHostBindings": falsein theangularCompilerOptionssection of your tsconfig.
- Previously hidden type issues in host bindings may show up in your builds. Either resolve the type issues or set
core
-
The server-side bootstrapping process has been changed to eliminate the reliance on a global platform injector.
Before:
const bootstrap = () => bootstrapApplication(AppComponent, config);After:
const bootstrap = (context: BootstrapContext) => bootstrapApplication(AppComponent, config, context);A schematic is provided to automatically update
main.server.tsfiles to pass theBootstrapContextto thebootstrapApplicationcall.In addition,
getPlatform()anddestroyPlatform()will now returnnulland be a no-op respectively when running in a server environment.
For more information please see: https://github.com/angular/angular/security/advisories/GHSA-68x2-mx4q-78m7
-
- TypeScript versions less than 5.9 are no longer supported.
-
- 21.0.0-next.23 Sept 2025pre-release
Release notes
Open source →common
Commit Description Add experimental support for the Navigation API (#63406) compiler
Commit Description fixes regression with event parsing and animate prefix (#63470) core
forms
Commit Description add experimental signal-based forms (#63408) consistent treatment of empty (#63456) http
Commit Description Add reponseType property to HttpResponse and HttpErrorResponse (#63043) platform-browser
Commit Description remove deprecated ApplicationConfigexport (#63529)platform-server
Commit Description prevent false warning for duplicate state serialization (#63525) router
Commit Description Update recognize stage to use internally async/await (#62994) upgrade
Commit Description Remove deprecated UpgradeAdapter (#61659) Breaking Changes
common
- (test only) -
TestBednow provides a fakePlatformLocationimplementation that supports the Navigation API. This may break some tests, though we have not observed any failures internally. You can revert to the old default forTestBedby providing theMockPlatformLocationfrom@angular/common/testingin your providers:{provide: PlatformLocation, useClass: MockPlatformLocation}
core
- (test only) - Using
provideZoneChangeDetectionin the TestBed providers would previously preventTestBedfrom rethrowing errors as it should. Errors in the test will now be rethrown, regardless of the usage ofprovideZoneChangeDetection. Tests should be adjusted to prevent or account for these errors. As in previous major versions, this behavior can be disabled withrethrowApplicationErrors: falseinconfigureTestingModuleas a last resort. ignoreChangesOutsideZoneis no longer available as an option for configuring ZoneJS change detection behavior.
platform-browser
- The deprecated
ApplicationConfigexport from@angular/platform-browserhas been removed. Please importApplicationConfigfrom@angular/coreinstead.
router
- Router navigations may take several additional microtasks to complete. Tests have been found to often be highly dependent on the exact timing of navigation completions with respect to the microtask queue. The most common fix for tests is to ensure all navigations have been completed before making assertions. On rare occasions, this can also affect production applications. This can be caused by multiple subscriptions to router state throughout the application, both of which trigger navigations that happened to not conflict with the previous timing.
upgrade
UpgradeAdapteris no longer available. Useupgrade/staticinstead
- (test only) -
- 21.0.0-next.127 Aug 2025pre-release
Release notes
Open source →common
Commit Description remove ngModuleFactoryinput ofNgComponentOutlet(#62838)compiler
Commit Description fixes animations on elements with structural directives (#63390) Keep paraenthesis in Nullish + Boolean expression. (#63292) core
Commit Description Ensures @forloop animations never get cancelled (#63328)fix memory leak with leaving nodes tracking (#63328) Fixes animate.leavebinding to a string with spaces (#63366)forms
Commit Description Add FormArrayDirective (#55880) migrations
Commit Description add migration to convert ngClass to use class (#62983) Breaking Changes
common
- NgModuleFactory has been removed, use NgModule instead.
forms
- This new directive will conflict with existing FormArray directives or formArray inputs on the same element.
- 21.0.0-next.020 Aug 2025pre-release
Release notes
Open source →compiler-cli
Commit Description disallow compiling with the emitDeclarationOnlyTS compiler option enabled (#61609)http
Commit Description Provide http services in root (#56212) router
Commit Description convert lastSuccessfulNavigationto signal (#63057)Breaking Changes
compiler-cli
- The Angular compiler now produces an error when the
the
emitDeclarationOnlyTS compiler option is enabled as this mode is not supported.
router
lastSuccessfulNavigationis now a signal and needs to be invoked
- The Angular compiler now produces an error when the
the
- 20.3.3026 Aug 2026
Release notes
Open source →platform-server
Commit Description avoid stripping unicode whitespace during url resolution update domino to latest version Release notes
Open source →platform-server
Commit Type Description 9339a7a2de fix avoid stripping unicode whitespace during url resolution 89b20568df fix update domino to latest version <!-- CHANGELOG SPLIT MARKER -->
<a name="22.2.0-next.3"></a>
- 20.3.2919 Aug 2026
Release notes
Open source →Release notes
Open source →platform-browser
Commit Type Description 7538744c10 fix disallow event handler attributes in Meta <!-- CHANGELOG SPLIT MARKER -->
<a name="21.2.21"></a>
- 20.3.2813 Aug 2026
Release notes
Open source →core
Commit Description sanitize host bindings on concrete hosts http
Commit Description match header values exactly when deleting preserve immutability of materialized clones run root interceptors in the terminal request chain Release notes
Open source →core
Commit Description sanitize host bindings on concrete hosts http
Commit Description match header values exactly when deleting preserve immutability of materialized clones run root interceptors in the terminal request chain Release notes
Open source →core
Commit Type Description 2f96c8020f fix sanitize host bindings on concrete hosts http
Commit Type Description 969133d426 fix match header values exactly when deleting 29dd26bd71 fix preserve immutability of materialized clones e4c416c20a fix run root interceptors in the terminal request chain <!-- CHANGELOG SPLIT MARKER -->
<a name="21.2.20"></a>
- 20.3.2729 Jul 2026
Release notes
Open source →compiler
Commit Description disallow i18n event attributes restrict possible event handler check to property names longer than 2 characters http
Commit Description distinguish repeated transfer cache params platform-server
Commit Description update domino to latest version Release notes
Open source →compiler
Commit Type Description 5dbcd0ee16 fix disallow i18n event attributes db0d4a1a39 fix restrict possible event handler check to property names longer than 2 characters http
Commit Type Description a64e2883e9 fix distinguish repeated transfer cache params platform-server
Commit Type Description 6f80cca0b8 fix update domino to latest version <!-- CHANGELOG SPLIT MARKER -->
<a name="22.0.8"></a>
- 20.3.268 Jul 2026
Release notes
Open source →compiler-cli
Commit Description update babel dependencies to latest v7 core
Commit Description avoid caching missing locale data reject dynamic script host elements http
Commit Description prevent caching of responses with Set-Cookie headers service-worker
Commit Description preserve referrer in asset requests preserve referrer policy in asset requests Release notes
Open source →compiler-cli
Commit Type Description 406aaa31e6 fix update babel dependencies to latest v7 core
Commit Type Description 26831d0cbd fix avoid caching missing locale data 8eb7aea08b fix reject dynamic script host elements http
Commit Type Description b963f61028 fix prevent caching of responses with Set-Cookie headers service-worker
Commit Type Description 1fdf234168 fix preserve referrer in asset requests baa093ba68 fix preserve referrer policy in asset requests <!-- CHANGELOG SPLIT MARKER -->
<a name="21.2.18"></a>
- 20.3.2510 Jun 2026
Release notes
Open source →common
Commit Description Limits date format string length skip transfer cache for uncacheable HTTP traffic use cryptographically secure SHA-256 for transfer cache key generation compiler
Commit Description sanitize two-way properties core
Commit Description harden TransferState restoration against DOM clobbering validate lowercase SVG animation attribute names (#69270) http
Commit Description preserve empty referrer option in HttpRequest Rejects non-HTTP(S) URLs in JSONP requests skip transfer cache for fetch credentialed requests platform-server
Commit Description harden platform location origin validation during SSR deprecate ServerXhr (#69256) service-worker
Commit Description Strips sensitive headers on cross-origin redirects Deprecations
platform-server
- XHR support in
@angular/platform-serveris deprecated. Use standardfetchAPIs instead.
Release notes
Open source →Deprecations
platform-server
- XHR support in
@angular/platform-serveris deprecated. Use standardfetchAPIs instead.
common
Commit Type Description 9f443bc24c fix Limits date format string length 566ad05f20 fix skip transfer cache for uncacheable HTTP traffic 1a62130a6b fix use cryptographically secure SHA-256 for transfer cache key generation compiler
Commit Type Description a68ec702a0 fix sanitize two-way properties core
Commit Type Description 768a349e6e fix harden TransferState restoration against DOM clobbering ca48b4728d fix validate lowercase SVG animation attribute names (#69270) http
Commit Type Description 06be298267 fix preserve empty referrer option in HttpRequest fa940e1f4d fix Rejects non-HTTP(S) URLs in JSONP requests e2ef1ce72a fix skip transfer cache for fetch credentialed requests platform-server
Commit Type Description 49368c1859 fix harden platform location origin validation during SSR d55c94ad81 refactor deprecate ServerXhr (#69256) service-worker
Commit Type Description d65a5f457b fix Strips sensitive headers on cross-origin redirects <!-- CHANGELOG SPLIT MARKER -->
<a name="22.0.0"></a>
- XHR support in
- 20.3.242 Jun 2026
Release notes
Open source →platform-server
Commit Description throw on suspicious URLs and restrict protocol-relative URLs update domino to latest version Release notes
Open source →platform-server
Commit Type Description 6ca433e56b fix throw on suspicious URLs and restrict protocol-relative URLs 8680b5152f fix update domino to latest version <!-- CHANGELOG SPLIT MARKER -->
<a name="21.2.15"></a>
- 20.3.2328 May 2026
Release notes
Open source →Release notes
Open source →compiler
Commit Type Description d40acc6431 fix prevent namespaced SVG <style> elements from being stripped <!-- CHANGELOG SPLIT MARKER -->
<a name="20.3.22"></a>
- 20.3.2227 May 2026
Release notes
Open source →common
Commit Description add upper bounds for digitsInfo sanitize placeholder compiler
core
http
Commit Description exclude withCredentials requests from transfer cache skip TransferCache for cookie-bearing requests by default platform-server
Commit Description secure location and document initialization against SSRF and path hijack service-worker
Commit Description preserve redirect policy on reconstructed asset requests Preserves explicit 'credentials: omit' in asset requests Preserves HTTP cache mode in asset group requests Release notes
Open source →common
Commit Type Description 3d135ce59b fix add upper bounds for digitsInfo 39a4b4cc8e fix sanitize placeholder compiler
Commit Type Description 8f35b182b1 fix normalize tag names with custom namespaces in DomElementSchemaRegistry (#68926) 64a89e917a fix sanitize dynamic href and xlink:href bindings on SVG a elements (#68926) 6404edfe0a fix strip namespaced SVG script elements during template compilation (#68926) core
Commit Type Description e345a58069 fix normalize tag names in runtime i18n attribute security context lookup (#68926) d86e4e7b2a fix reject script element as a dynamic component host (#68926) af04936045 fix sanitize meta selectors dc631efa96 fix support prefix-insensitive DOM schema lookups and compile-time i18n attribute validation (#68926) 909ef047b3 fix synchronize core sanitization schema with compiler (#68926) http
Commit Type Description de7b2a62e7 fix exclude withCredentials requests from transfer cache 4233188d8e fix skip TransferCache for cookie-bearing requests by default platform-server
Commit Type Description 49a60f6045 fix secure location and document initialization against SSRF and path hijack service-worker
Commit Type Description 5fdfd8a998 fix preserve redirect policy on reconstructed asset requests 83b022f2d0 fix Preserves explicit 'credentials: omit' in asset requests e617fa06eb fix Preserves HTTP cache mode in asset group requests <!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.23"></a>
- 20.3.2112 May 2026
Release notes
Open source →Release notes
Open source →platform-server
Commit Type Description f584840e2e fix add allowedHostsoption torenderModuleandrenderApplication<!-- CHANGELOG SPLIT MARKER -->
<a name="21.2.12"></a>
- 20.3.206 May 2026
Release notes
Open source →core
Commit Description disallow event attribute bindings in host bindings unconditionally (#68468) validate security-sensitive attributes in i18n bindings (#68468) platform-server
Commit Description ensure origin has a trailing slash when parsing url (#68468) Release notes
Open source →core
Commit Type Description a9bcffdbc7 fix disallow event attribute bindings in host bindings unconditionally (#68468) 97eeb45cfa fix validate security-sensitive attributes in i18n bindings (#68468) platform-server
Commit Type Description 25e4e07238 fix ensure origin has a trailing slash when parsing url (#68468) <!-- CHANGELOG SPLIT MARKER -->
<a name="21.2.11"></a>