What changed in Angular from 21 to 22

9 releases numbered after v21.2.22 up to and including v22.1.5, stable releases only. v21.2.22 and v22.1.5 are the newest stable releases of 21 and 22 we track; this page follows them as new ones ship.

105 changes across 9 releases

Added 6

v22.1.0

  • add an error for --global-foo cases
  • namespace CSS variables to the app
  • support css var namespacing in properties
  • add custom set option to linkedSignal
  • add deep linking from Performance panel to DevTools
  • add options to allow caching of credentialed and non-cacheable HTTP requests
Fixed 98

v22.1.5

  • Check uninvoked signal aliases in extended diagnostic
  • Cancel stale debounce timers to prevent timer leaks
  • Don't fail NgModule checks for a pipe that extends a base class
  • Validate SVG animation attributes outside the SVG namespace
  • Avoid writing to name input on ControlValueAccessor
  • Skip tsconfig files of non-Angular projects
  • Resolve HTTP(S) URLs without authority as relative during SSR
  • Avoid view transitions when the user agent provides one

v22.1.4

  • avoid prototype member collisions in common
  • use locale NaN symbol in number formatting
  • scope animations declared in minified nested rules
  • default template diagnostic related message source file to template
  • produce correct tcb expression for optional chaining
  • retain metadata for strict standalone errors
  • avoid prototype member collisions in core
  • explicitly reject foreign components in JIT mode
  • preserve namespace for dynamic component hosts
  • prevent TransferState prototype pollution
  • throw coded RuntimeErrors instead of crashing when hydration/rendering cannot find an expected DOM node
  • use dot-access for readonly rule configuration
  • honor quote style preference when generating imports
  • preserve registerLocaleData calls in standalone bootstrap migration
  • avoid stripping unicode whitespace during url resolution

v22.1.3

  • Detect object trigger values with Object.hasOwn in animations
  • Preserve literal key union in KeyValuePipe.transform()
  • Preserve &ngsp; between sibling control flow blocks in compiler
  • Accept readonly arrays for setClassMetadata decorators
  • Allow readonly arrays in RawScopeInfoFromDecorator
  • Expose debuggableFn for non-computed signal graph nodes
  • Prevent orphaned requestIdleCallback handle from re-entrant scheduling
  • Replace all hasOwnProperty usages with Object.hasOwn
  • Stop running further effects once one destroys the view mid-flush
  • Throw a descriptive error instead of crashing when a hydration node is missing
  • Throw NG0500 instead of a raw TypeError on element hydration mismatch
  • Report forbidden 2way bindings on when FormField is applied
  • Warn in dev mode when ngModel cannot reach parent NgForm across component boundary
  • Cancel oversized fetch response bodies
  • Recover project for external templates in solution-style workspaces
  • Disallow event handler attributes in Meta
  • Throw a descriptive error when insertBefore reference node is missing
  • Pass correct component to canDeactivate for named outlets in componentless parent routes

v22.1.2

  • Generate correct expression for optional chaining
  • Remove namespaced MathML script elements
  • Correctly resolve symbol for SafePropertyRead in chained optional navigation
  • Record class extends clause references in DeferredSymbolTracker
  • Ensure i18n_util hasOwnProperty checks are safe for property renaming
  • Fix incorrect loop in defer blocks
  • Reject prefixed SVG script hosts
  • Keep radio inputs in sync when values change
  • Always decode JSON responses as UTF-8
  • Limit protocol-relative URL handling to serialization

v22.1.1

  • Initialize hydration triggers after late runtime activation
  • Warn when style property bindings receive invalid values
  • Avoid aborting completed requests in FetchBackend
  • Respect content-type charset in fetch backend text decoder
  • Run root interceptors in the terminal request chain
  • Strip RFC 6265 DQUOTE characters and handle URIError in parseCookieValue

v22.1.0

  • skip transfer cache for uncacheable HTTP traffic
  • permissive whitespace parsing in default never blocks
  • support foreign components defined outside top-level scope
  • support foreign components inside control flow blocks
  • allow passing uninvoked signals as foreign component props
  • support import aliases in foreignImports
  • account for namespaces in host binding sanitization
  • correct container anchor collection order to match DOM layout
  • introduce disposal mechanism for Angular views in foreign @content
  • introduce logical-only containers for foreign content
  • sanitize host bindings on concrete hosts
  • set current tnode in foreign component instruction on reuse
  • enable xsrf for root-provided HttpClient
  • match header values exactly when deleting

v22.0.8

  • Preserve crossorigin on image preloads
  • Ensure SVG animation attributeName is checked case-insensitively
  • Ensure pending status propagates to the root form in signal forms
  • Prevent transfer cache key collisions
  • Correctly migrate ngClass with mixed space-separated keys
  • Preserve NgClass import on partial migration

v22.0.7

  • avoid prototype lookups in date format caches
  • parsing of an empty template literal interpolation
  • re-tag SourceFiles after TsCreateProgramDriver.updateFiles()
  • allow static attributes for explicit input transforms
  • ignore processing instruction syntax in templates
  • preserve explicit input transform write type
  • allow multiple async validators
  • preserve intermediate number values in signal forms
  • prevent stale CVA writeback during debounce
  • prevent interceptor signal reads from leaking into calling reactive contexts
  • build runtime translations map with a null prototype
  • use Object.hasOwn for placeholder lookup in translate
  • prevent ReDoS in SOURCEMAP_URL_REGEXP

v22.0.6

  • Use regular optional chaining expression for safe function calls in template checking blocks
  • Apply debugName transform to required signal queries
  • Detect uninvoked signals in bound expressions using ternary
  • Make extractValue reactive for compat AbstractControl values
  • Preserve transitive NgModule references when pruning
  • Remove stale model import in model-output migration
  • Handle outlet named __proto__ in segment group maps
  • Use safe hasOwnProperty when parsing query params
Deprecated 1

v22.1.0

  • deprecate jsonp support

Original release notes, newest first

The list above is our reading of these notes; the originals from Google are here, one fold per release.

v22.1.522.1.5
compiler-cli
CommitDescription
fix - d90698dae7check uninvoked signal aliases in extended diagnostic
core
CommitDescription
fix - 2ceeb27078cancel stale debounce timers to prevent timer leaks
fix - ed2e401d2ddon't fail NgModule checks for a pipe that extends a base class
fix - c65d378bb4validate SVG animation attributes outside the SVG namespace
forms
CommitDescription
fix - 43aaeaec29avoid writing to name input on ControlValueAccessor
migrations
CommitDescription
fix - d85288d75fskip tsconfig files of non-Angular projects
platform-server
CommitDescription
fix - 3b8723ce3dresolve HTTP(S) URLs without authority as relative during SSR
router
CommitDescription
fix - 4340a63c52avoid view transitions when the user agent provides one

View originalPermalink

v22.1.422.1.4
common
CommitDescription
fix - 60a874c3fbavoid prototype member collisions
fix - e8378dfeabuse locale NaN symbol in number formatting
compiler
CommitDescription
fix - 05c7c725a5scope animations declared in minified nested rules
compiler-cli
CommitDescription
fix - afe8499a14default template diagnostic related message source file to template
fix - 079a846263Produce correct tcb expression for optional chaining
fix - 55eeb46418retain metadata for strict standalone errors
core
CommitDescription
fix - 3da35cbab9avoid prototype member collisions
fix - b199bdfa2aexplicitly reject foreign components in JIT mode
fix - 9a8e4826b9preserve namespace for dynamic component hosts
fix - 7c752d4815prevent TransferState prototype pollution
fix - 7546b7a805throw coded RuntimeErrors instead of crashing when hydration/rendering can't find an expected DOM node
forms
CommitDescription
fix - c8eb7f0056use dot-access for readonly rule configuration
language-service
CommitDescription
fix - 93d7f718d2honor quote style preference when generating imports
migrations
CommitDescription
fix - 85c8829ac1preserve registerLocaleData calls in standalone bootstrap migration
platform-server
CommitDescription
fix - 71e52d1396avoid stripping unicode whitespace during url resolution

View originalPermalink

v22.1.322.1.3
animations
CommitDescription
fix - d9620e0f1bdetect object trigger values with Object.hasOwn
common
CommitDescription
fix - b3c78a5081preserve literal key union in KeyValuePipe.transform()
compiler
CommitDescription
fix - 94f0b9a371preserve &ngsp; between sibling control flow blocks
core
CommitDescription
fix - afe529cb2daccept readonly arrays for setClassMetadata decorators
fix - 2c72fe3797allow readonly arrays in RawScopeInfoFromDecorator
fix - ef2ce9a098expose debuggableFn for non-computed signal graph nodes
fix - 7bcce260f5prevent orphaned requestIdleCallback handle from re-entrant scheduling
fix - 44137117b3replace all hasOwnProperty usages with Object.hasOwn
fix - 85f12a5a13stop running further effects once one destroys the view mid-flush
fix - c04931c88bthrow a descriptive error instead of crashing when a hydration node is missing
fix - 601d1f6576throw NG0500 instead of a raw TypeError on element hydration mismatch
forms
CommitDescription
fix - 83450d2924report forbidden 2way bindings on when FormField is applied
fix - 5cb4ea7e35warn in dev mode when ngModel cannot reach parent NgForm across component boundary
http
CommitDescription
fix - 0cd635e9e2cancel oversized fetch response bodies
language-server
CommitDescription
fix - 14fbe04612recover project for external templates in solution-style workspaces
platform-browser
CommitDescription
fix - 3ddcb1a101disallow event handler attributes in Meta
fix - 640460d606throw a descriptive error when insertBefore reference node is missing
router
CommitDescription
fix - abe019d505pass correct component to canDeactivate for named outlets in componentless parent routes

View originalPermalink

v22.1.222.1.2
compiler
CommitDescription
fix - 76dff307b4Generate correct expression for optional chaning.
fix - 6f9a64e6f5remove namespaced MathML script elements
compiler-cli
CommitDescription
fix - e9660b1801correctly resolve symbol for SafePropertyRead in chained optional navigation
fix - ec6deea513record class extends clause references in DeferredSymbolTracker
core
CommitDescription
fix - 0df9d5eb65ensure i18n_util hasOwnProperty checks are safe for property renaming
fix - 4d985a179eincorrect loop in defer blocks
fix - 7b40456792reject prefixed SVG script hosts
forms
CommitDescription
fix - 3b5c798072keep radio inputs in sync when values change
http
CommitDescription
fix - 4f7e9987faalways decode JSON responses as UTF-8
router
CommitDescription
fix - 2f82601662limit protocol-relative URL handling to serialization

View originalPermalink

v22.1.122.1.1
core
CommitDescription
fix - aa6d3189c1initialize hydration triggers after late runtime activation
fix - deecb301c8warn when style property bindings receive invalid values
http
CommitDescription
fix - ac3728e79favoid aborting completed requests in FetchBackend
fix - 688a0a7118respect content-type charset in fetch backend text decoder
fix - a13b968451run root interceptors in the terminal request chain
fix - 32af9b525estrip RFC 6265 DQUOTE characters and handle URIError in parseCookieValue

View originalPermalink

v22.1.022.1.0
common
CommitDescription
fix - 1ad6824d0dskip transfer cache for uncacheable HTTP traffic (#69017)
compiler
CommitDescription
feat - af5e4e1131Add an error for --global-foo cases (#68846)
feat - d579ecaf73Disable '--global-' error outside of g3 (#68846)
feat - f98547675cNamespace CSS variables to the app (#68846)
feat - 8c8b2f7783Support css var namespacing in properties (#68846)
fix - 292199aa4dpermissive whitespace parsing in default never blocks
fix - 25c744c4d0support foreign components defined outside top-level scope
fix - 5bd00add07support foreign components inside control flow blocks (#69674)
perf - 2e442f7876do not emit tag name when control flow root is foreign component (#69674)
compiler-cli
CommitDescription
fix - aeb55c8bc1allow passing uninvoked signals as foreign component props
fix - 7c60a98b3csupport import aliases in foreignImports (#68674)
core
CommitDescription
feat - 124ba10eadadd custom set option to linkedSignal
feat - eab4847a8bAdds deep linking from Performance panel to DevTools
fix - 091456a214account for namespaces in host binding sanitization (#69558)
fix - b3748e9fe4correct container anchor collection order to match DOM layout
fix - 11b206b919introduce disposal mechanism for Angular views in foreign @content
fix - 56607967dbintroduce logical-only containers for foreign content
fix - 23cf1a828bsanitize host bindings on concrete hosts (#69558)
fix - 0c07356c5cset current tnode in foreign component instruction on reuse
forms
CommitDescription
fix - bbbd357bd2add utility to assert that value is a field tree
http
CommitDescription
feat - e3630c23c5add options to allow caching of credentialed and non-cacheable HTTP requests
fix - ec16a3d6c6enable xsrf for root-provided HttpClient
fix - 39e362eea5match header values exactly when deleting
fix - be46ca8696preserve immutability of materialized clones
fix - c0cbd46bd7skip transfer cache for fetch credentialed requests (#69017)
refactor - af04e266ccdeprecate jsonp support
language-service
CommitDescription
feat - 7f0265e43acompile non-exported classes if standalone (#68454)
feat - 4f9c824dd9Typecheck templates which would require inline typecheck blocks (#68454)
fix - a99fb915c0account for strictTemplates being enabled by default
migrations
CommitDescription
feat - c75ff0255cadd migration from injectable to service
fix - 5d5b2ea72dcorrectly detect then/else keywords in control flow migration
platform-server
CommitDescription
fix - cf9d7fa0f8harden platform location origin validation during SSR (#69184)
router
CommitDescription
feat - 97a3fd6a55handle null and undefined inputs in RouterLinkActive
Deprecations
http
  • HttpClient.jsonp, HttpClientJsonpModule, and related JSONP classes/functions are deprecated. Use standard HTTP requests instead.

View originalPermalink

v22.0.822.0.8
common
CommitDescription
fix - c0368f2278preserve crossorigin on image preloads
core
CommitDescription
fix - 8616ba9db6ensure SVG animation attributeName is checked case-insensitively
forms
CommitDescription
fix - d302c7ab83ensure pending status propagates to the root form in signal forms
http
CommitDescription
fix - 9d40f8aefeprevent transfer cache key collisions
migrations
CommitDescription
fix - 388daea2fccorrectly migrate ngClass with mixed space-separated keys
fix - bb39cda648preserve NgClass import on partial migration

View originalPermalink

v22.0.722.0.7
common
CommitDescription
fix - 91e33aa1deavoid prototype lookups in date format caches
compiler
CommitDescription
fix - 5b516e3a58parsing of an empty template literal interpolation
compiler-cli
CommitDescription
fix - c88ddde1c9re-tag SourceFiles after TsCreateProgramDriver.updateFiles()
core
CommitDescription
fix - 94d9591b51allow static attributes for explicit input transforms
fix - c89f71a74cignore processing instruction syntax in templates
fix - 70500e4067preserve explicit input transform write type
forms
CommitDescription
fix - 1b9964675fallow multiple async validators
fix - 64d6d47a0cpreserve intermediate number values in signal forms
fix - 6cf7446afaprevent stale CVA writeback during debounce
http
CommitDescription
fix - 20b7dc3023prevent interceptor signal reads from leaking into calling reactive contexts
localize
CommitDescription
fix - 22d5a091d1build runtime translations map with a null prototype
fix - 8ce1fcf7fause Object.hasOwn for placeholder lookup in translate
platform-browser
CommitDescription
fix - b34bf0dce8prevent ReDoS in SOURCEMAP_URL_REGEXP

View originalPermalink

v22.0.622.0.6
compiler
CommitDescription
fix - fd4ddcafeduse regular optional chaining expression for safe function calls in TCBs
compiler-cli
CommitDescription
fix - 534fe81a89apply debugName transform to required signal queries
fix - 3b08201bfbdetect uninvoked signals in bound expressions using ternary
forms/signals
CommitDescription
fix - 171669f7b2make extractValue reactive for compat AbstractControl values
migrations
CommitDescription
fix - 0a6af1496bpreserve transitive NgModule references when pruning
fix - d4a926a762remove stale model import in model-output migration
router
CommitDescription
fix - c238bd2ad7handle outlet named proto in segment group maps
fix - 8e6d7f7190use safe hasOwnProperty when parsing query params

View originalPermalink