Update angular monorepo to v20 (major)
This MR contains the following updates:
Package | Type | Update | Change |
---|---|---|---|
@angular/animations (source) | dependencies | major | 17.3.12 -> 20.0.5 |
@angular/common (source) | dependencies | major | 17.3.12 -> 20.0.5 |
@angular/compiler (source) | dependencies | major | 17.3.12 -> 20.0.5 |
@angular/compiler-cli (source) | devDependencies | major | ^17.3.12 -> ^20.0.0 |
@angular/core (source) | dependencies | major | 17.3.12 -> 20.0.5 |
@angular/elements (source) | dependencies | major | ^17.3.12 -> ^20.0.0 |
@angular/forms (source) | dependencies | major | 17.3.12 -> 20.0.5 |
@angular/platform-browser (source) | dependencies | major | 17.3.12 -> 20.0.5 |
@angular/platform-browser-dynamic (source) | dependencies | major | 17.3.12 -> 20.0.5 |
@angular/router (source) | dependencies | major | 17.3.12 -> 20.0.5 |
Release Notes
angular/angular (@angular/animations)
v20.0.5
compiler-cli
Commit | Type | Description |
---|---|---|
de0d525ad7 | fix | add suggestion when pipe is missing (#62146) |
3eb5a79a83 | fix | handle initializer APIs wrapped in type casts (#62203) |
core
Commit | Type | Description |
---|---|---|
a2e6f317a7 | fix | allow to set a resource in an error state (#62253) |
4c00238a69 | fix | avoid injecting ErrorHandler from a destroyed injector (#61886) |
369f03ad7f | fix | unable to retrieve defer blocks in tests when component injects ViewContainerRef (#62156) |
router
Commit | Type | Description |
---|---|---|
65c59dd796 | fix | handle scrollRestoration error in restricted environments (#62186) |
upgrade
Commit | Type | Description |
---|---|---|
144c429230 | fix | Make zoneless work with hybrid apps (#61660) |
v20.0.4
core
Commit | Type | Description |
---|---|---|
e343cdfb86 | fix | Fixes template outlet hydration (#62012) |
67f657e4a3 | fix | inject APP_ID before injector is destroyed (#61885) |
ae212b51ee | fix | Wrap ErrorEvent with no error property (#62081) |
migrations
Commit | Type | Description |
---|---|---|
82bf9848a1 | fix | more robust trailing comma removal in unused imports migration (#62118) |
v20.0.3
v20.0.2
core
Commit | Type | Description |
---|---|---|
1e8158baee | fix | components marked for traversal resets reactive context (#61663) |
1cd23be57e | fix | unregister onDestroy in outputToObservable (#61882) |
v20.0.1
compiler
Commit | Type | Description |
---|---|---|
66a0ec6510 | fix | move defer trigger assertions out of parser (#61747) |
8ecb1ba027 | fix | recover invalid parenthesized expressions (#61815) |
core
Commit | Type | Description |
---|---|---|
8c60cbfd1c | fix |
takeUntilDestroyed completes immediately if DestroyRef already destroyed (#61847) |
b1d960d082 | fix | produce an error when incremental hydration is expected, but not configured (#61741) |
b4ed62ddf6 | fix | properly handle the case where getSignalGraph is called on a componentless NodeInjector (#60772) |
ddd22bea48 | fix | unregister onDestroy in ResourceImpl when destroy() is called (#61870) |
5c31e7e28d | fix | unregister onDestroy when observable errors in toSignal (#61596) |
migrations
Commit | Type | Description |
---|---|---|
e9820a6d48 | fix | avoid trailing whitespaces in unused imports migration (#61698) |
service-worker
Commit | Type | Description |
---|---|---|
b93fa22f25 | fix | prevent duplicate fetches during concurrent update checks (#61443) |
9743bd1317 | fix | update service worker to handle seeking better for videos (#60029) |
v20.0.0
Blog post: https://blog.angular.dev/announcing-angular-v20-b5c9c06cf301
Breaking Changes
common
- Using the
Y
formatter (week-numbering year) without also includingw
(week number) is now detected as suspicious date pattern, asy
is typically intended. -
AsyncPipe
now directly catches unhandled errors in subscriptions and promises and reports them to the application'sErrorHandler
. For Zone-based applications, these errors would have been caught by ZoneJS and reported toErrorHandler
so the result is generally the same. The change to the exact mechanism for reporting can result in differences in test environments that will require test updates.
compiler
-
'in' in an expression now refers to the operator
-
void
in an expression now refers to the operatorPreviously an expression in the template like
{{void}}
referred to a property on the component class. After this change it now refers to thevoid
operator, which would make the above example invalid. If you have existing expressions that need to refer to a property namedvoid
, change the expression to usethis.void
instead:{{this.void}}
.
core
-
TypeScript versions less than 5.8 are no longer supported.
-
the
TestBed.flushEffects()
was removed - use theTestBed.tick()
instead. -
provideExperimentalCheckNoChangesForDebug
has several breaking changes:- It is renamed to
provideCheckNoChangesConfig
- The behavior applies to all checkNoChanges runs
- The
useNgZoneOnStable
option is removed. This wasn't found to be generally more useful thaninterval
- It is renamed to
-
provideExperimentalZonelessChangeDetection
is renamed toprovideZonelessChangeDetection
as it is now "Developer Preview" rather than "Experimental". -
-
InjectFlags
has been removed. -
inject
no longer acceptsInjectFlags
. -
Injector.get
no longer acceptsInjectFlags
. -
EnvironmentInjector.get
no longer acceptsInjectFlags
. -
TestBed.get
no longer acceptsInjectFlags
. -
TestBed.inject
no longer acceptsInjectFlags
.
-
-
-
TestBed.get
has been removed. UseTestBed.inject
instead.
-
-
afterRender was renamed to afterEveryRender.
-
- Angular no longer supports Node.js v18.
- Node.js versions 22.0 to 22.10 are also no longer supported.
Before upgrading to Angular v20, ensure the Node.js version is at least 20.11.1. For the full list of supported versions, visit: https://angular.dev/reference/versions
-
PendingTasks.run
no longer returns the result of the async function. If this behavior is desired, it can be re-implemented manually with thePendingTasks.add
. Be aware, however, that promise rejections will need to be handled or they can cause the node process to shut down when using SSR. -
Uncaught errors in listeners which were previously only reported to
ErrorHandler
are now also reported to Angular's internal error handling machinery. For tests, this means that the error will be rethrown by default rather than only logging the error. Developers should fix these errors, catch them in the test if the test is intentionally covering an error case, or userethrowApplicationErrors: false
inconfigureTestingModule
as a last resort. -
The
any
overload has been removed frominjector.get
. It now only supportsProviderToken<T>
and (deprecated since v4)string
. -
Animations are guaranteed to be flushed when Angular runs automatic change detection or manual calls to
ApplicationRef.tick
. Prior to this change, animations would not be flushed in some situations if change detection did not run on any views attached to the application. This change can affect tests which may rely on the old behavior, often by making assertions on DOM elements that should have been removed but weren't because DOM removal is delayed until animations are flushed. -
ApplicationRef.tick
will no longer catch and report errors to the appplicationErrorHandler
. Errors will instead be thrown out of the method and will allow callers to determine how to handle these errors, such as aborting follow-up work or reporting the error and continuing. -
This commit deprecates
ng-reflect-*
attributes and updates the runtime to stop producing them by default. Please refactor application and test code to avoid relying onng-reflect-*
attributes.To enable a more seamless upgrade to v20, we've added the
provideNgReflectAttributes()
function (can be imported from the@angular/core
package), which enables the mode in which Angular would be producing those attribites (in dev mode only). You can add theprovideNgReflectAttributes()
function to the list of providers within the bootstrap call.
router
- The
RedirectFn
can now returnObservable
orPromise
. Any code that directly calls functions returning this type may need to be adjusted to account for this. - Several methods in the public API of the Router which required writable arrays have now been updated to accept readonly arrays when no mutations are done.
- The guards arrays on
Route
no longer includeany
in the type union. The union includes functions for the functional guards as well as a type matchingInjector.get
:ProviderToken<T>|string
. Note that string is still deprecated on both the route guards andInjector.get
.
Deprecations
core
-
ngIf
/ngFor
/ngSwitch
are deprecated. Use the control flow blocks instead (@for
/@if
/@switch
).
platform-browser
- All entries of the
@angular/platform-browser-dynamic
- HammerJS support is deprecated and will be removed in a future major version.
platform-server
-
@angular/platform-server/testing
Use e2e tests to verify SSR behavior instead.
common
Commit | Type | Description |
---|---|---|
2e5362a469 | feat | accept undefined inputs in NgTemplateOutlet (#61404) |
b7d3f3dbfc | feat | Allow passing ScrollOptions to ViewportScroller (#61002) |
74cceba587 | feat | throw error for suspicious date patterns (#59798) |
255c79e048 | fix | cleanup updateLatestValue if view is destroyed before promise resolves (#58041) |
739cadae62 | fix | Handle errors in async pipe subscriptions (#60057) |
cbbea70fa3 | fix | issue a warning instead of an error when NgOptimizedImage exceeds the preload limit (#60879) |
fc4a56d5c5 | fix | rename httpResource function in factory (#60022) |
785a1110e6 | fix | resolve host binding type issues (#60481) |
compiler
Commit | Type | Description |
---|---|---|
7a971766dc | feat | add extended diagnostic for uninvoked track function on @for blocks (#60495) |
f2d5cf7edd | feat | support exponentiation operator in templates (#59894) |
51b8ff23ce | feat | support tagged template literals in expressions (#59947) |
1b8e7ab9fe | feat | support the in keyword in Binary expression (#58432) |
0361c2d81f | feat | support void operator in templates (#59894) |
8b990a31c3 | fix | error if rawText isn't estimated correctly (#60529) |
4fe489f1b4 | fix | exponentiation should be right-to-left associative (#60101) |
ef1fd137a9 | fix | incorrect spans for template literals (#60323) |
e0d378d20e | fix | incorrectly handling let declarations inside i18n (#60512) |
b70ad3c4e6 | fix | proper handling of typeof, void in RecursiveAstVisitor (#60101) |
e25e6c95a2 | fix | remove TypeScript from linker (#61635) |
768239a89c | perf | reduce allocations for let declarations only used in the same view (#60512) |
compiler-cli
Commit | Type | Description |
---|---|---|
bec1610da2 | feat | add extended diagnostic for invalid nullish coalescing (#60279) |
c889382a20 | feat | detect missing structural directive imports (#59443) |
1971e57a45 | feat | support type checking of host bindings (#60267) |
9ec9c7e1b8 | fix | avoid fatal diagnostics for invalid module schemas (#61220) |
a1cacc5b17 | fix | avoid fatal diagnostics for missing template files (#58673) |
1e6faad479 | fix | correctly parse event name in HostListener (#60561) |
ffb19e64f1 | fix | preserve required parens for nullish coalescing (#60060) |
7c9b4892e9 | fix | preserve required parens in exponentiation expressions (#60101) |
7e03af898e | fix | set correct target when type checking events (#60561) |
2d51a203dc | fix | wrong event name for host listener decorators (#60460) |
core
Commit | Type | Description |
---|---|---|
22d3f0562c | feat | add hook for producer creation side effects (#60333) |
fe57332fc5 | feat | add input binding support to dynamically-created components (#60137) |
65adb3024d | feat | Add provider which reports unhandled errors on window to ErrorHandler (#60704) |
b154fb3911 | feat | add support for two-way bindings on dynamically-created components (#60342) |
82aa2c1a52 | feat | add the ability to apply directives to dynamically-created components (#60137) |
326d48afb4 | feat | drop support for TypeScript older than 5.8 (#60197) |
d260ca3091 | feat | emit template function for template related profiler hooks (#60174) |
a4bad8d361 | feat | export signalGetFn from signal primitives (#60497) |
4812215a7b | feat | Expose Injector.destroy on Injector created with Injector.create (#60054) |
c1bcae91dd | feat | expose performance data in Chrome DevTools (#60789) |
809b5b4596 | feat | introduce new DI profiling event (#60158) |
d5fd7349fb | feat | introduce TestBed.tick() (#60993) |
4e88e18a8e | feat | mark toObservable as stable (#60449) |
727cda3856 | feat | mark linkedSignal API as public (#60865) |
644d9f3bbd | feat | mark the toSignal API as stable (#60442) |
e711f99d81 | feat | move provideExperimentalCheckNoChangesForDebug to provideCheckNoChangesConfig (#60906) |
7ccec1494f | feat | move DOCUMENT token into core (#60663) |
953c4b2580 | feat | Move zoneless change detection to dev preview (#60748) |
611baaf069 | feat | remove InjectFlags from public API (#60318) |
5e209cb560 | feat | remove TestBed.get (#60414) |
d8fbb909ce | feat | rename afterRender to afterEveryRender and stabilize (#60999) |
567522398f | feat | stabilize incremental hydration api (#60888) |
8d050b5bfc | feat | stabilize linkedSignal API (#60741) |
866cea9a05 | feat | Stabilize PendingTasks Injectable (#60716) |
bf8492b871 | feat | stabilize withI18nSupport() api (#60889) |
be44cc8f40 | feat | support listening to outputs on dynamically-created components (#60137) |
fe9b79b615 | feat | update Node.js version support (#60545) |
e170d24240 | fix | add migration away from InjectFlags (#60318) |
7eb59d3887 | fix | added @angular/compiler as a peer dependency (#55610) |
7232ce5b17 | fix | Catch and report rejections in async function of PendingTasks.run (#60044) |
fd12220a35 | fix | defer block render failures should report to application error handler (#60149) |
3459faadbf | fix | do not allow setInput to be used with inputBinding (#60137) |
0ac949c266 | fix | do not run change detection on global error events (#60944) |
4fe34f4cfe | fix | enable stashing only when withEventReplay() is invoked (#61077) |
962b59b14e | fix | Ensure ComponentFixture does not duplicate error reporting from FakeAsync (#60104) |
7b819be83f | fix | Ensure errors in listeners report to the application error handler (#60251) |
ff772d7800 | fix | fix typing on injector.get to omit 'any' (#60202) |
13d1c8ab38 | fix | fixes timing of hydration cleanup on control flow (#60425) |
0b69b61929 | fix | Flush animations when no component has been checked (#58089) |
3ba39bc28f | fix | getting resource value throws an error instead of returning undefined (#61441) |
ca6295e90b | fix | handle different DI token types in Chrome DevTools integration (#61333) |
0162ceb427 | fix | inject migration should treat @Attribute as optional (#60916) |
ea5eb28865 | fix | input targeting not checking if input exists on host (#60137) |
c8951159ac | fix | mark zone.js as an optional peer dependency (#61616) |
d62379bb13 | fix | move reload method from Resource to WritableResource (#61441) |
a89f1cff24 | fix | narrow error type for resources API (#61441) |
624be2ef0c | fix | prevent stash listener conflicts (#59635) |
017cc0a37c | fix | properly handle app stabilization with defer blocks (#61040) |
6e79eaf739 | fix | reading resource value after reload in the error state (#61441) |
3d85d9363c | fix | reduce total memory usage of various migration schematics (#60774) |
1c7b356625 | fix | release hasPendingTasks observers (#59723) |
43cbc58254 | fix | remove forceRoot flag for effects (#60535) |
48974c3cf8 | fix | remove rejectErrors option encourages uncaught exceptions (#60397) |
491b0a4ead | fix | Remove duplicate reporting of errors in CDR.detectChanges (#60056) |
04d963c0a5 | fix | remove unused parameter from listener instruction (#60406) |
0ae1889560 | fix | run ApplicationRef.prototype.bootstrap in NgZone (#60720) |
a611b234d7 | fix | run root effects in creation order (#60534) |
338818ce89 | fix | Surface errors from ApplicationRef.tick to callsite (#60102) |
350776b412 | fix | TestBed.tick should ensure test components are synchronized (#61382) |
3d4ddd2247 | fix | Testing should not throw when Zone does not patch test FW APIs (#61628) |
30e081287d | fix | update min Node.js support to 20.19, 22.12, and 24.0 (#61500) |
b407157ee8 | refactor | Deprecate the structural directives ngIf /ngFor /ngSwitch . (#60492) |
c2987d8402 | refactor | stop producing ng-reflect attributes by default (#60973) |
forms
Commit | Type | Description |
---|---|---|
a07ee60989 | feat | add markAllAsDirty to AbstractControl (#58663) |
bdfbd54932 | feat | Allow to reset a form without emitting events (#60354) |
81fe0536fd | fix | Make sure statusChanges is emitted (#57098) |
bdd5e20423 | fix | resolve host binding type issues (#60481) |
http
Commit | Type | Description |
---|---|---|
ccc5cc068f | feat | add keepalive support for fetch requests (#60621) |
5795e03cdf | fix | Delay stabilization until next app synchronization (#60656) |
platform-browser
Commit | Type | Description |
---|---|---|
bc2cab747f | refactor | Deprecate the platform-browser-dynamic package (#61043) |
a980ac9a6a | refactor | Deprecate the HammerJS integration (#60257) |
platform-server
Commit | Type | Description |
---|---|---|
2240a21c97 | refactor | deprecate the testing entry point (#60915) |
router
Commit | Type | Description |
---|---|---|
0bb4bd661e | feat | Add ability to directly abort a navigation (#60380) |
62de7d930a | feat | add asynchronous redirects (#60863) |
7c12cb1df9 | feat | Allow resolvers to read resolved data from ancestors (#59860) |
ff98ccb193 | feat | support custom elements for RouterLink (#60290) |
219f41d049 | fix | Prevent dangling promise rejections from internal navigations (#60162) |
2419060fef | fix | relax required types on router commands to readonly array (#60345) |
c57951d58f | fix | Remove 'any' type from route guards (#60378) |
db2f2d99c8 | fix | Scroller should scroll as soon as change detection completes (#60086) |
v19.2.14
compiler
Commit | Type | Description |
---|---|---|
24bab55f0c | fix | lexer support for template literals in object literals (#61601) |
migrations
Commit | Type | Description |
---|---|---|
9e1cd49662 | fix | preserve comments when removing unused imports (#61674) |
v19.2.13
common
Commit | Type | Description |
---|---|---|
2c876b4fc5 | fix | avoid injecting ApplicationRef in FetchBackend (#61649) |
service-worker
Commit | Type | Description |
---|---|---|
b15bddfa04 | fix | do not register service worker if app is destroyed before it is ready to register (#61101) |
v19.2.12
common
Commit | Type | Description |
---|---|---|
126efc9972 | fix | cancel reader when app is destroyed (#61528) |
efda872453 | fix | prevent reading chunks if app is destroyed (#61354) |
compiler
Commit | Type | Description |
---|---|---|
44bb328eae | fix | avoid conflicts between HMR code and local symbols (#61550) |
compiler-cli
Commit | Type | Description |
---|---|---|
107180260f | fix | Always retain prior results for all files (#61487) |
1191e62d70 | fix | avoid ECMAScript private field metadata emit (#61227) |
core
Commit | Type | Description |
---|---|---|
2b1b14f4d3 | fix | cleanup rxResource abort listener (#58306) |
8f9b05eaaa | fix | cleanup testability subscriptions (#61261) |
eb53bda470 | fix | enable stashing only when withEventReplay() is invoked (#61352) |
94f5a4b4d6 | fix | Testing should not throw when Zone does not patch test FW APIs (#61376) |
c0c69a5abc | fix | unregister onDestroy in toSignal . (#61514) |
platform-server
Commit | Type | Description |
---|---|---|
8edafd0559 | perf | speed up resolution of base (#61392) |
v19.2.11
v19.2.10
common
Commit | Type | Description |
---|---|---|
89056a0356 | fix | cleanup updateLatestValue if view is destroyed before promise resolves (#61064) |
core
Commit | Type | Description |
---|---|---|
4623b61448 | fix | missing useExisting providers throwing for optional calls (#61152) |
400dbc5b89 | fix | properly handle app stabilization with defer blocks (#61056) |
platform-server
Commit | Type | Description |
---|---|---|
a6f0d5bc20 | fix | less aggressive ngServerMode cleanup (#61106) |
v19.2.9
core
Commit | Type | Description |
---|---|---|
946b844e0d | fix | async EventEmitter error should not prevent stability (#61028) |
dbb87026ca | fix | call DestroyRef on destroy callback if view is destroyed [patch] (#61061) |
2e140a136a | fix | prevent stash listener conflicts [patch] (#61063) |
v19.2.8
forms
Commit | Type | Description |
---|---|---|
ea4a211216 | fix | make NgForm emit FormSubmittedEvent and FormResetEvent (#60887) |
v19.2.7
common
Commit | Type | Description |
---|---|---|
37ab6814f5 | fix | issue a warning instead of an error when NgOptimizedImage exceeds the preload limit (#60883) |
core
Commit | Type | Description |
---|---|---|
b144126612 | fix | inject migration: replace param with this. (#60713) |
http
Commit | Type | Description |
---|---|---|
d39e09da41 | fix | Include HTTP status code and headers when HTTP requests errored in httpResource (#60802) |
v19.2.6
compiler
Commit | Type | Description |
---|---|---|
3441f7b914 | fix | error if rawText isn't estimated correctly (#60529) (#60753) |
compiler-cli
Commit | Type | Description |
---|---|---|
fc946c5f72 | fix | ensure HMR works with different output module type (#60797) |
core
Commit | Type | Description |
---|---|---|
00bbd9b382 | fix | fix docs for output migration (#60764) |
f2bfa3151e | fix | fix ng generate @angular/core:output-migration. Fixes angular#58650 (#60763) |
9241615ad0 | fix | reduce total memory usage of various migration schematics (#60776) |
language-service
Commit | Type | Description |
---|---|---|
0e82d42774 | fix | Do not provide element completions in end tag (#60616) |
fcdef1019f | fix | Ensure dollar signs are escaped in completions (#60597) |
v19.2.5
Commit | Type | Description |
---|---|---|
e61d06afb5 | fix | step 6 tutorial docs (#60630) |
animations
Commit | Type | Description |
---|---|---|
fa48f98d9f | fix | add missing peer dependency on @angular/common (#60660) |
compiler
Commit | Type | Description |
---|---|---|
ca5aa4d55b | fix | throw for invalid "as" expression in if block (#60580) |
compiler-cli
Commit | Type | Description |
---|---|---|
f4c4b10ea8 | fix | Produce fatal diagnostic on duplicate decorated properties (#60376) |
22a0e54ac4 | fix | support relative imports to symbols outside rootDir (#60555) |
core
Commit | Type | Description |
---|---|---|
64da69f7b6 | fix | check ngDevMode for undefined (#60565) |
8f68d1bec3 | fix | fix ng generate @angular/core:output-migration (#60626) |
bc79985c65 | fix | fix regexp for event types (#60592) |
006ac7f22f | fix | fixes #592882 ng generate @angular/core:signal-queries-migration (#60688) |
da6e93f434 | fix | preserve comments in internal inject migration (#60588) |
dbbddd1617 | fix | prevent omission of deferred pipes in full compilation (#60571) |
language-service
Commit | Type | Description |
---|---|---|
0e9e0348dd | fix | Update adapter to log instead of throw errors (#60651) |
migrations
Commit | Type | Description |
---|---|---|
15f53f035b | fix | handle shorthand assignments in super call (#60602) |
4b161e6234 | fix | inject migration not handling super parameter referenced via this (#60602) |
router
Commit | Type | Description |
---|---|---|
958e98e4f7 | fix | Add missing types to transition (#60307) |
service-worker
Commit | Type | Description |
---|---|---|
7cd89ad2c6 | fix | assign initializing client's app version, when a request is for worker script (#58131) |
v19.2.4
core
Commit | Type | Description |
---|---|---|
081f5f5a83f | fix | fix used templates are not deleted (#60459) |
localize
Commit | Type | Description |
---|---|---|
a2f622d82d6 | fix | handle @angular/build:karma in ng add (#60513) |
platform-browser
Commit | Type | Description |
---|---|---|
8e8ccc79279 | fix | ensure platformBrowserTesting includes platformBrowser providers (#60480) |
v19.2.3
compiler-cli
Commit | Type | Description |
---|---|---|
aa8ea7a5b2 | fix | report more accurate diagnostic for invalid import (#60455) |
core
Commit | Type | Description |
---|---|---|
13a8709b2b | fix | catch hydration marker with implicit body tag (#60429) |
296aded9da | fix | execute timer trigger outside zone (#60392) |
0615ffb4f7 | fix | include input name in error message (#60404) |
platform-browser-dynamic
Commit | Type | Description |
---|---|---|
1e06c8e8b6 | fix | ensure compiler is loaded before @angular/common (#60458) |
upgrade
Commit | Type | Description |
---|---|---|
9e1a1030c8 | fix | handle output emitters when downgrading a component (#60369) |
v19.2.2
common
Commit | Type | Description |
---|---|---|
90a16a1088 | fix | support equality function in httpResource (#60026) |
compiler
Commit | Type | Description |
---|---|---|
56b551d273 | fix | incorrect spans for template literals (#60323) (#60331) |
compiler-cli
Commit | Type | Description |
---|---|---|
23ca88522b | fix | handle transformed classes when generating HMR code (#60298) |
core
Commit | Type | Description |
---|---|---|
6dc41265fd | fix | check whether application is destroyed before initializing event replay (#59789) |
bb12b30d52 | fix | ensures immediate trigger fires properly with lazy loaded routes (#60203) |
b144dd946e | fix | fix removal of a container reference used in the component file (#60210) |
platform-server
Commit | Type | Description |
---|---|---|
15c42969fc | fix | add missing peer dependency for rxjs (#60308) |
router
Commit | Type | Description |
---|---|---|
7bcdf7c143 | fix | update symbols (#60233) |
v19.2.1
compiler
Commit | Type | Description |
---|---|---|
24bab55f0c | fix | lexer support for template literals in object literals (#61601) |
migrations
Commit | Type | Description |
---|---|---|
9e1cd49662 | fix | preserve comments when removing unused imports (#61674) |
v19.2.0
common
Commit | Type | Description |
---|---|---|
3e39da593a | feat | introduce experimental httpResource (#59876) |
compiler
Commit | Type | Description |
---|---|---|
5b20bab96d | feat | Add Skip Hydration diagnostic. (#59576) |
fe8a68329b | feat | support untagged template literals in expressions (#59230) |
core
Commit | Type | Description |
---|---|---|
2588985f43 | feat | pass signal node to throwInvalidWriteToSignalErrorFn (#59600) |
168516462a | feat | support default value in resource() (#59655) |
bc2ad7bfd3 | feat | support streaming resources (#59573) |
146ab9a76e | feat | support TypeScript 5.8 (#59830) |
6c92d65349 | fix | add hasValue narrowing to ResourceRef (#59708) |
96e602ebe9 | fix | cancel in-progress request when same value is assigned (#59280) |
6789c7ef94 | fix | Defer afterRender until after first CD (#59455) (#59551) |
c87e581dd9 | fix | Don't run effects in check no changes pass (#59455) (#59551) |
127fc0dc84 | fix | fix resource() 's previous.state (#59708) |
b592b1b051 | fix | fix race condition in resource() (#59851) |
a299e02e91 | fix | preserve tracing snapshot until tick finishes (#59796) |
forms
Commit | Type | Description |
---|---|---|
fa0c3e3210 | feat | support type set in form validators (#45793) |
migrations
Commit | Type | Description |
---|---|---|
1cd3a7db83 | feat | add migration to convert templates to use self-closing tags (#57342) |
platform-browser
Commit | Type | Description |
---|---|---|
e6cb411e43 | fix | automatically disable animations on the server (#59762) |
platform-server
Commit | Type | Description |
---|---|---|
fc5d187da5 | fix | decouple server from animations module (#59762) |
v19.1.8
benchpress
Commit | Type | Description |
---|---|---|
f0990c67e6 | fix | Ensure future-proof correct initialization order (#60025) |
common
Commit | Type | Description |
---|---|---|
1fbaeab37d | fix | make types for HttpClient more readable (#59901) |
core
Commit | Type | Description |
---|---|---|
c611c8d212 | fix | capture stack for HMR errors (#60067) |
language-service
Commit | Type | Description |
---|---|---|
4c9d09c643 | fix | provide correct rename info for elements (#60088) |
v19.1.7
common
Commit | Type | Description |
---|---|---|
e9f10eb4c9 | fix | clean up urlChanges subscribers when root scope is destroyed (#59703) |
compiler-cli
Commit | Type | Description |
---|---|---|
16fc074689 | fix | avoid crash in isolated transform operations (#59869) |
forms
Commit | Type | Description |
---|---|---|
ec1e4c3d94 | fix | Fix typing on FormRecord . (#59993) |
v19.1.6
compiler
Commit | Type | Description |
---|---|---|
01f669a274 | fix | handle tracking expressions requiring temporary variables (#58520) |
compiler-cli
Commit | Type | Description |
---|---|---|
dcfb9f1959 | fix | handle deferred blocks with shared dependencies correctly (#59926) |
core
Commit | Type | Description |
---|---|---|
cab7a9b69c | fix | invalidate HMR component if replacement throws an error (#59854) |
migrations
Commit | Type | Description |
---|---|---|
710759ddcc | fix | account for let declarations in control flow migration (#59861) |
46f36a58bf | fix | count used dependencies inside existing control flow (#59861) |
v19.1.5
compiler-cli
Commit | Type | Description |
---|---|---|
d7b5c597ffc | fix | gracefully fall back if const enum cannot be passed through (#59815) |
53a4668b58b | fix | handle const enums used inside HMR data (#59815) |
976125e0b4c | fix | handle enum members without initializers in partial evaluator (#59815) |
v19.1.4
core
Commit | Type | Description |
---|---|---|
544b9ee7ca0 | fix | check whether application is destroyed before printing hydration stats (#59716) |
d6e78c072dc | fix | ensure type is preserved during HMR (#59700) |
c2436702df9 | fix | fixes test timer-based test flakiness in CI (#59674) |
elements
Commit | Type | Description |
---|---|---|
44180645992 | fix | not setting initial value on signal-based input (#59773) |
platform-browser
Commit | Type | Description |
---|---|---|
1828a840620 | fix | prepend baseHref to sourceMappingURL in CSS content (#59730) |
1c84cbca30e | fix | Update pseudoevent created by createMouseSpecialEvent to populate _originalEvent property (#59690) |
12256574626 | fix | Update pseudoevent created by createMouseSpecialEvent to populate _originalEvent property (#59690) |
3f4d5f636aa | fix | Update pseudoevent created by createMouseSpecialEvent to populate _originalEvent property (#59690) |
router
Commit | Type | Description |
---|---|---|
e3da35ec749 | fix | prevent error handling when injector is destroyed (#59457) |
service-worker
Commit | Type | Description |
---|---|---|
522acbf3d7e | fix | add missing rxjs peer dependency (#59747) |
v19.1.3
compiler
Commit | Type | Description |
---|---|---|
ecfb74d287 | fix | handle :host-context with comma-separated child selector (#59276) |
compiler-cli
Commit | Type | Description |
---|---|---|
53160e504d | fix | extract parenthesized dependencies during HMR (#59644) |
39690969af | fix | handle conditional expressions when extracting dependencies (#59637) |
78af7a5059 | fix | handle new expressions when extracting dependencies (#59637) |
core
Commit | Type | Description |
---|---|---|
408af24ff3 | fix | capture self-referencing component during HMR (#59644) |
d7575c201c | fix | replace metadata in place during HMR (#59644) |
26f6d4c485 | fix | skip component ID collision warning during SSR (#59625) |
migrations
Commit | Type | Description |
---|---|---|
a62c84bc18 | fix | avoid applying the same replacements twice when cleaning up unused imports (#59656) |
platform-browser
Commit | Type | Description |
---|---|---|
b2b3816cb1 | fix | clear renderer cache during HMR when using async animations (#59644) |
v19.1.2
compiler
Commit | Type | Description |
---|---|---|
8dcd889987 | fix | update @ng/component URL to be relative (#59620) |
compiler-cli
Commit | Type | Description |
---|---|---|
95a05bb202 | fix | disable tree shaking during HMR (#59595) |
core
Commit | Type | Description |
---|---|---|
a4eb74c79c | fix | animation sometimes renderer not being destroyed during HMR (#59574) |
906413aba3 | fix | change Resource to use explicit undefined in its typings (#59024) |
4eb541837c | fix | cleanup _ejsa when app is destroyed (#59492) |
5497102769 | fix | cleanup stash listener when app is destroyed (#59598) |
266a8f2f2e | fix | handle shadow DOM encapsulated component with HMR (#59597) |
6f7716268a | fix | HMR not matching component that injects ViewContainerRef (#59596) |
d12a186d53 | fix | treat exceptions in equal as part of computation (#55818) |
v19.1.1
core
Commit | Type | Description |
---|---|---|
357795cb96 | fix | run HMR replacement in the zone (#59562) |
platform-browser
Commit | Type | Description |
---|---|---|
eb0b1851f4 | fix | roll back HMR fix (#59557) |
v19.1.0
common
Commit | Type | Description |
---|---|---|
e4c50b3bea | feat | expose component instance in NgComponentOutlet (#58698) |
compiler
Commit | Type | Description |
---|---|---|
ceadd28ea1 | fix | allow $any in two-way bindings (#59362) |
aed49ddaaa | fix | use chunk origin in template HMR request URL (#59459) |
compiler-cli
Commit | Type | Description |
---|---|---|
c5c20e9d86 | fix | check event side of two-way bindings (#59002) |
core
Commit | Type | Description |
---|---|---|
d010e11b73 | feat | add event listener options to renderer (#59092) |
57f3550219 | feat | add utility for resolving defer block information to ng global (#59184) |
22f191f763 | feat | extend the set of profiler events (#59183) |
e894a5daea | feat | set kind field on template and effect nodes (#58865) |
bd1f1294ae | feat | support TypeScript 5.7 (#58609) |
9870b643bf | fix | Defer afterRender until after first CD (#58250) |
a5fc962094 | fix | Don't run effects in check no changes pass (#58250) |
migrations
Commit | Type | Description |
---|---|---|
d298d25426 | feat | add schematic to clean up unused imports (#59353) |
14fb8ce4c0 | fix | resolve text replacement issue (#59452) |
platform-browser
Commit | Type | Description |
---|---|---|
8c5db3cfb7 | fix | avoid circular DI error in async renderer (#59256) |
router
Commit | Type | Description |
---|---|---|
52a6710f54 | fix | complete router events on dispose (#59327) |
v19.0.7
compiler-cli
Commit | Type | Description |
---|---|---|
2b4b7c3ebf | fix | handle more node types when extracting dependencies (#59445) |
core
Commit | Type | Description |
---|---|---|
f893d07232 | fix | destroy renderer when replacing styles during HMR (#59514) |
migrations
Commit | Type | Description |
---|---|---|
eb2fcd1896 | fix | incorrect stats when migrating queries with best effort mode (#59463) |
v19.0.6
compiler-cli
Commit | Type | Description |
---|---|---|
06a55e9817 | fix | account for more expression types when determining HMR dependencies (#59323) |
17fb20f85d | fix | preserve defer block dependencies during HMR when class metadata is disabled (#59313) |
core
Commit | Type | Description |
---|---|---|
07afce81b8 | fix | Ensure that a destroyed effect never run. (#59415) |
platform-browser
Commit | Type | Description |
---|---|---|
dbb8980d03 | fix | avoid circular DI error in async renderer (#59271) |
6d00efde95 | fix | styles not replaced during HMR when using animations renderer (#59393) |
router
Commit | Type | Description |
---|---|---|
144bccb687 | fix | avoid component ID collisions with user code (#59300) |
v19.0.5
core
Commit | Type | Description |
---|---|---|
3793218e77 | fix | avoid triggering on timer and on idle on the server (#59177) |
cfc96ed82c | fix | Fix nested timer serialization (#59173) |
platform-server
Commit | Type | Description |
---|---|---|
9085a8fbd8 | fix | Warn user when transfer state happens more than once (#58935) |
v19.0.4
compiler-cli
Commit | Type | Description |
---|---|---|
7e612171709 | fix | consider pre-release versions when detecting feature support (#59061) |
cd764a31152 | fix | error in unused standalone imports diagnostic (#59064) |
core
Commit | Type | Description |
---|---|---|
34ded10fa60 | fix | Fix a bug where snapshotted functions are being run twice if they return a nullish/falsey value. (#59073) |
platform-browser
Commit | Type | Description |
---|---|---|
ae0802d63c5 | fix | collect external component styles from server rendering (#59031) |
v19.0.3
v19.0.2
compiler-cli
Commit | Type | Description |
---|---|---|
9f99196d23 | fix | account for multiple generated namespace imports in HMR (#58924) |
core
Commit | Type | Description |
---|---|---|
4792db9a6d | fix | Explicitly manage TracingSnapshot lifecycle and dispose of it once it's been used. (#58929) |
migrations
Commit | Type | Description |
---|---|---|
7b5bacc228 | fix | class content being deleted in some edge cases (#58959) |
d1cbdd6acb | fix | correctly strip away parameters surrounded by comments in inject migration (#58959) |
e17ff71c31 | fix | don't migrate classes with parameters that can't be injected (#58959) |
7c5f990001 | fix | inject migration aggressively removing imports (#58959) |
4392ccedf9 | fix | inject migration dropping code if everything except super is removed (#58959) |
9cbebc6dda | fix | preserve type literals and tuples in inject migrations (#58959) |
platform-server
Commit | Type | Description |
---|---|---|
f3c388ecda | fix | remove peer dependency on animations (#58997) |
v19.0.1
compiler-cli
Commit | Type | Description |
---|---|---|
fb1fa8b0fc | fix | more accurate diagnostics for host binding parser errors (#58870) |
core
Commit | Type | Description |
---|---|---|
502ee0e722 | fix | correctly clear template HMR internal renderer cache (#58724) |
99715104a1 | fix | correctly perform lazy routes migration for components with additional decorators (#58796) |
118803035f | fix | Ensure _tick is always run within the TracingSnapshot. (#58881) |
08b9452f01 | fix | Ensure resource sets an error (#58855) |
84f45ea3ff | fix | make component id generation more stable between client and server builds (#58813) |
d3491c7cee | fix | Prevents race condition of cleanup for incremental hydration (#58722) |
forms
Commit | Type | Description |
---|---|---|
4dfe5b6cef | fix | work around TypeScript 5.7 issue (#58731) |
language-service
Commit | Type | Description |
---|---|---|
a983865bff | fix | add fix for individual unused imports (#58719) |
e6e7a4e22b | fix | allow fixes to run without template info (#58719) |
migrations
Commit | Type | Description |
---|---|---|
5ce10264a4 | fix | fix provide-initializer migration when using useFactory (#58518) |
d4f5c85f60 | fix | handle parameters with initializers in inject migration (#58769) |
a6d2d2dc10 | fix | Mark hoisted properties as removed in inject migration (#58804) |
v19.0.0
Blog post: https://blog.angular.dev/meet-angular-v19-7b29dfd05b84
Breaking Changes
compiler
-
this.foo
property reads no longer refer to template context variables. If you intended to read the template variable, do not usethis.
. - changes to CSS selectors parsing where introduced, mainly to: pseudo selectors
:where()
and:is()
, parsing of:host
andhost-context
, parsing selectors within pseudo selector arguments (for instance comma separated selectors). These changes could lead to a different specificity of the resulting selectors and/or previously broken selectors being applied now, for example:where(:host)
used to transform to:where()[ng-host]
and is being:where([ng-host])
now. Unlike the previous outcome, the new result can target elements and therefore could lead to breakages.
core
-
Angular directives, components and pipes are now standalone by default.
- Specify
standalone: false
for declarations that are currently declared in@NgModule
s. -
ng update
for v19 will take care of this automatically.
- Specify
-
TypeScript versions less than 5.5 are no longer supported.
-
Timing changes for
effect
API (in developer preview):-
effects which are triggered outside of change detection run as part of the change detection process instead of as a microtask. Depending on the specifics of application/test setup, this can result in them executing earlier or later (or requiring additional test steps to trigger; see below examples).
-
effects which are triggered during change detection (e.g. by input signals) run earlier, before the component's template.
-
-
ExperimentalPendingTasks
has been renamed toPendingTasks
. -
The
autoDetect
feature ofComponentFixture
will now attach the fixture to theApplicationRef
. As a result, errors during automatic change detection of the fixture be reported to theErrorHandler
. This change may cause custom error handlers to observe new failures that were previously unreported. -
createComponent
will now render default fallback with emptyprojectableNodes
.- When passing an empty array to
projectableNodes
in thecreateComponent
API, the default fallback content of theng-content
will be rendered if present. To prevent rendering the default content, passdocument.createTextNode('')
as aprojectableNode
.
// The first ng-content will render the default fallback content if present createComponent(MyComponent. { projectableNodes: [[], [secondNode]] }); // To prevent projecting the default fallback content: createComponent(MyComponent. { projectableNodes: [[document.createTextNode('')], [secondNode]] });
- When passing an empty array to
-
Errors that are thrown during
ApplicationRef.tick
will now be rethrown when usingTestBed
. These errors should be resolved by ensuring the test environment is set up correctly to complete change detection successfully. There are two alternatives to catch the errors:- Instead of waiting for automatic change detection to happen, trigger
it synchronously and expect the error. For example, a jasmine test
could write
expect(() => TestBed.inject(ApplicationRef).tick()).toThrow()
-
TestBed
will reject any outstandingComponentFixture.whenStable
promises. A jasmine test, for example, could writeexpectAsync(fixture.whenStable()).toBeRejected()
.
As a last resort, you can configure errors to not be rethrown by setting
rethrowApplicationErrors
tofalse
inTestBed.configureTestingModule
. - Instead of waiting for automatic change detection to happen, trigger
it synchronously and expect the error. For example, a jasmine test
could write
-
The timers that are used for zone coalescing and hybrid mode scheduling (which schedules an application state synchronization when changes happen outside the Angular zone) will now run in the zone above Angular rather than the root zone. This will mostly affect tests which use
fakeAsync
: these timers will now be visible tofakeAsync
and can be affected bytick
orflush
. -
The deprecated
factories
property inKeyValueDiffers
has been removed.
elements
- as part of switching away from custom CD behavior to the hybrid scheduler, timing of change detection around custom elements has changed subtly. These changes make elements more efficient, but can cause tests which encoded assumptions about how or when elements would be checked to require updating.
localize
- The
name
option in theng add
@localize`` schematic has been removed in favor of theproject
option.
platform-browser
- The deprecated
BrowserModule.withServerTransition
method has been removed. Please use theAPP_ID
DI token to set the application id instead.
router
- The
Router.errorHandler
property has been removed. Adding an error handler should be configured in eitherwithNavigationErrorHandler
withprovideRouter
or theerrorHandler
property in the extra options ofRouterModule.forRoot
. In addition, the error handler cannot be used to change the return value of the router navigation promise or prevent it from rejecting. Instead, if you want to prevent the promise from rejecting, useresolveNavigationPromiseOnError
. - The return type of the
Resolve
interface now includesRedirectCommand
.
common
Commit | Type | Description |
---|---|---|
24c6373820 | feat | add optional rounded transform support in cloudinary image loader (#55364) |
50f08e6c4b | feat | automatically use sizes auto in NgOptimizedImage (#57479) |
13c13067bc | feat | disable keyvalue sorting using null compareFn (#57487) |
compiler
Commit | Type | Description |
---|---|---|
a2e4ee0cb3 | feat | add diagnostic for unused standalone imports (#57605) |
0c9d721ac1 | feat | add support for the typeof keyword in template expressions. (#58183) |
09f589f000 | fix |
this.a should always refer to class property a (#55183) |
98804fd4be | fix | add more specific matcher for hydrate never block (#58360) |
b25121ee4a | fix | avoid having to duplicate core environment (#58444) |
560282aa9b | fix | control flow nodes with root at the end projected incorrectly (#58607) |
2be161d015 | fix | fix :host parsing in pseudo-selectors (#58681) |
806a61b5a6 | fix | fix multiline selectors (#58681) |
a3cb530d84 | fix | handle typeof expressions in serializer (#58217) |
ba4340875a | fix | ignore placeholder-only i18n messages (#58154) |
e5d3abb298 | fix | resolve :host:host-context(.foo) (#58681) |
80f56954ce | fix | transform chained pseudo-selectors (#58681) |
compiler-cli
Commit | Type | Description |
---|---|---|
d9687f43dd | feat | 'strictStandalone' flag enforces standalone (#57935) |
9e87593055 | feat | ensure template style elements are preprocessed as inline styles (#57429) |
231e6ff6ca | feat | generate the HMR replacement module (#58205) |
dbe612f2cd | fix | disable standalone by default on older versions of Angular (#58405) |
d4d76ead80 | fix | do not fail fatal when references to non-existent module are discovered (#58515) |
33fe252c58 | fix | do not report unused declarations coming from an imported array (#57940) |
fb44323c51 | fix | incorrectly generating relative file paths on case-insensitive platforms (#58150) |
22cd6869ef | fix | make the unused imports diagnostic easier to read (#58468) |
9bbb01c85e | fix | report individual diagnostics for unused imports (#58589) |
4716c3b966 | perf | reduce duplicate component style resolution (#57502) |
core
Commit | Type | Description |
---|---|---|
6ea8e1e9aa | feat | Add a schematics to migrate to standalone: false . (#57643) |
3ebe6b4ad4 | feat | Add async run method on ExperimentalPendingTasks (#56546) |
69fc5ae922 | feat | Add incremental hydration public api (#58249) |
8ebbae88ca | feat | Add rxjs operator prevent app stability until an event (#56533) |
19edf2c057 | feat | add syntactic sugar for initializers (#53152) |
c93b510f9b | feat | allow passing undefined without needing to include it in the type argument of input (#57621) |
ab25a192ba | feat | allow running output migration on a subset of paths (#58299) |
fc59e2a7b7 | feat | change effect() execution timing & no-op allowSignalWrites (#57874) |
8bcc663a53 | feat | drop support for TypeScript 5.4 (#57577) |
18d8d44b1f | feat | experimental resource() API for async dependencies (#58255) |
9762b24b5e | feat | experimental impl of rxResource() (#58255) |
6b8c494d05 | feat | flipping the default value for standalone to true (#58169) |
e6e5d29e83 | feat | initial version of the output migration (#57604) |
be2e49639b | feat | introduce afterRenderEffect (#57549) |
ec386e7f12 | feat | introduce debugName optional arg to framework signal functions (#57073) |
8311f00faa | feat | introduce the reactive linkedSignal (#58189) |
1b1519224d | feat | mark input, output and model APIs as stable (#57804) |
a7eff3ffaa | feat | mark signal-based query APIs as stable (#57921) |
a1f229850a | feat | migrate ExperimentalPendingTasks to PendingTasks (#57533) |
3f1e7ab6ae | feat | promote outputFromObservable & outputToObservable to stable. (#58214) |
97c44a1d6c | feat | Promote takeUntilDestroyed to stable. (#58200) |
e5adf92965 | feat | stabilize @let syntax (#57813) |
b063468027 | feat | support TypeScript 5.6 (#57424) |
819ff034ce | feat | treat directives, pipes, components as by default (#58229) |
ee426c62f0 | fix | allow signal write error (#57973) |
c095679f92 | fix | avoid breaking change with apps using rxjs 6.x (#58341) |
71ee81af2c | fix | clean up event contract once hydration is done (#58174) |
f03d274e87 | fix | ComponentFixture autoDetect feature works like production (#55228) |
950a5540f1 | fix | Ensure the ViewContext is retained after closure minification (#57903) |
7b1e5be20b | fix | fallback to default ng-content with empty projectable nodes. (#57480) |
0300dd2e18 | fix | Fix fixture.detectChanges with autoDetect disabled and zoneless (#57416) |
5fe57d4fbb | fix | fixes issues with control flow and incremental hydration (#58644) |
51933ef5a6 | fix | prevent errors on contract cleanup (#58614) |
fd7716440b | fix | Prevents trying to trigger incremental hydration on CSR (#58366) |
656b5d3e78 | fix | Re-assign error codes to be within core bounds (<1000) (#53455) |
6e0af6dbbb | fix | resolve forward-referenced host directives during directive matching (#58492) |
468d3fb9b1 | fix | rethrow errors during ApplicationRef.tick in TestBed (#57200) |
226a67dabb | fix | Schedulers run in zone above Angular rather than root (#57553) |
97fb86d331 | perf | set encapsulation to None for empty component styles (#57130) |
c15ec36bd1 | refactor | remove deprecated factories Property in KeyValueDiffers (#58064) |
elements
Commit | Type | Description |
---|---|---|
fe5c4e086a | fix | support output() -shaped outputs (#57535) |
0cebfd7462 | fix | switch to ComponentRef.setInput & remove custom scheduler (#56728) |
forms
Commit | Type | Description |
---|---|---|
3e7d724037 | feat | add ability to clear a FormRecord (#50750) |
18b6f3339f | fix | fix FormRecord type inference (#50750) |
http
Commit | Type | Description |
---|---|---|
4b9accdf16 | feat | promote withRequestsMadeViaParent to stable. (#58221) |
057cf7fb6b | fix | preserve all headers from Headers object (#57802) |
language-service
Commit | Type | Description |
---|---|---|
8da9fb49b5 | feat | add code fix for unused standalone imports (#57605) |
1f067f4507 | feat | add code reactoring action to migrate @Input to signal-input (#57214) |
56ee47f2ec | feat | allow code refactorings to compute edits asynchronously (#57214) |
bc83fc1e2e | feat | support converting to signal queries in VSCode extension (#58106) |
5c4305f024 | feat | support migrating full classes to signal inputs in VSCode (#57975) |
6342befff8 | feat | support migrating full classes to signal queries (#58263) |
7ecfd89592 | fix | The suppress diagnostics option should work for external templates (#57873) |
localize
Commit | Type | Description |
---|---|---|
9c3bd1b5d1 | refactor | remove deprecated name option. (#58063) |
migrations
Commit | Type | Description |
---|---|---|
dff4de0f75 | feat | add a combined migration for all signals APIs (#58259) |
b6bc93803c | feat | add schematic to migrate to signal queries (#58032) |
2bfc64daf1 | feat | expose output as function migration (#58299) |
59fe9bc772 | feat | introduce signal input migration as ng generate schematic (#57805) |
90c7ec39a0 | fix | inject migration always inserting generated variables before super call (#58393) |
7a65cdd911 | fix | inject migration not inserting generated code after super call in some cases (#58393) |
c1aa411cf1 | fix | properly resolve tsconfig paths on windows (#58137) |
e26797b38e | fix | replace removed NgModules in tests with their exports (#58627) |
platform-browser
Commit | Type | Description |
---|---|---|
c36a1c023b | fix | correctly add external stylesheets to ShadowDOM components (#58482) |
5c61f46409 | refactor | remove deprecated BrowserModule.withServerTransition method (#58062) |
platform-server
Commit | Type | Description |
---|---|---|
9e82559de4 | fix | destroy PlatformRef when error happens during the bootstrap() phase (#58112) |
router
Commit | Type | Description |
---|---|---|
f271021e19 | feat | Add routerOutletData input to RouterOutlet directive (#57051) |
b2790813a6 | fix | Align RouterModule.forRoot errorHandler with provider error handler (#57050) |
a49c35ec76 | fix | remove setter for injector on OutletContext (#58343) |
7436d3180e | fix | Update Resolve interface to include RedirectCommand like ResolveFn (#57309) |
service-worker
Commit | Type | Description |
---|---|---|
8ddce80a0b | feat | allow specifying maxAge for entire application (#49601) |
1479af978c | feat | finish implementation of refreshAhead feature (#53356) |
v18.2.13
migrations
Commit | Type | Description |
---|---|---|
06d70a25ea | fix | take care of tests that import both HttpClientModule & HttpClientTestingModule. (#58777) |
v18.2.12
compiler-cli
Commit | Type | Description |
---|---|---|
4c38160853 | fix | correct extraction of generics from type aliases (#58548) |
v18.2.11
core
Commit | Type | Description |
---|---|---|
5f2d98a1b1 | fix | avoid slow stringification when checking for duplicates in dev mode (#58521) |
3aa45a2fa1 | fix | resolve forward-referenced host directives during directive matching (#58492) (#58500) |
v18.2.10
compiler
Commit | Type | Description |
---|---|---|
69dce38e778 | fix | transform pseudo selectors correctly for the encapsulated view. (#58417) |
localize
Commit | Type | Description |
---|---|---|
3b989ac5bd9 | fix | Adding arb format to the list of valid formats in the localization extractor cli (#58287) |
v18.2.9
compiler-cli
Commit | Type | Description |
---|---|---|
b0ab653965 | fix | report when NgModule imports or exports itself (#58231) |
v18.2.8
compiler
Commit | Type | Description |
---|---|---|
11692c8dab | fix | add multiple :host and nested selectors support (#57796) |
66dcc691f5 | fix | allow combinators inside pseudo selectors (#57796) |
48a1437e77 | fix | fix comment typo (#57796) |
d325f9b55f | fix | fix parsing of the :host-context with pseudo selectors (#57796) |
aea747ab3b | fix | preserve attributes attached to :host selector (#57796) |
21be258be6 | fix | scope :host-context inside pseudo selectors, do not decrease specificity (#57796) |
7a6fd427d5 | fix | transform pseudo selectors correctly for the encapsulated view (#57796) |
compiler-cli
Commit | Type | Description |
---|---|---|
f187c3abf8 | fix | defer symbols only used in types (#58104) |
core
Commit | Type | Description |
---|---|---|
46bafb0b0a | fix | clean up afterRender after it is executed (#58119) |
platform-server
Commit | Type | Description |
---|---|---|
b40875a2cc | fix | destroy PlatformRef when error happens during the bootstrap() phase (#58112) (#58135) |
v18.2.7
common
Commit | Type | Description |
---|---|---|
249d0260f9 | fix | execute checks and remove placeholder when image is already loaded (#55444) |
46a2ad39f5 | fix | prevent warning about oversize image twice (#58021) |
8f2b0ede59 | fix | skip checking whether SVGs are oversized (#57966) |
compiler-cli
Commit | Type | Description |
---|---|---|
901c1e1a7f | fix | correctly get the type of nested function call expressions (#57010) |
core
Commit | Type | Description |
---|---|---|
2f347ef8fc | fix | provide flag to opt into manual cleanup for after render hooks (#57917) |
http
Commit | Type | Description |
---|---|---|
ca637fe6a9 | fix | cleanup JSONP script listeners once loading completed (#57877) |
migrations
Commit | Type | Description |
---|---|---|
b9d846dad7 | fix | delete constructor if it only has super call (#58013) |
upgrade
Commit | Type | Description |
---|---|---|
e40a4fa3c7 | fix | support input signal bindings (#57020) |
v18.2.6
v18.2.5
compiler-cli
Commit | Type | Description |
---|---|---|
e685ed883a | fix | extended diagnostics not validating ICUs (#57845) |
core
Commit | Type | Description |
---|---|---|
76709d5d6e | fix | Handle @let declaration with array when preparingForHydration (#57816) |
migrations
Commit | Type | Description |
---|---|---|
5c866942a1 | fix | account for explicit standalone: false in migration (#57803) |
v18.2.4
compiler
Commit | Type | Description |
---|---|---|
b619d6987e | fix | produce less noisy errors when parsing control flow (#57711) |
migrations
Commit | Type | Description |
---|---|---|
9895e4492f | fix | replace leftover modules with their exports during pruning (#57684) |
v18.2.3
http
Commit | Type | Description |
---|---|---|
de68e049e4 | fix | Dynamicaly call the global fetch implementation (#57531) |
v18.2.2
core
Commit | Type | Description |
---|---|---|
106917af878 | fix | avoid leaking memory if component throws during creation (#57546) |
6d3a2af146a | fix | Do not bubble capture events. (#57476) |
http
Commit | Type | Description |
---|---|---|
5d2e243c76a | fix | Dynamicaly call the global fetch implementation (#57531) |
router
Commit | Type | Description |
---|---|---|
804925b1149 | fix | Do not unnecessarily run matcher twice on route matching (#57530) |
upgrade
Commit | Type | Description |
---|---|---|
03ec620e31a | fix | Address Trusted Types violations in @angular/upgrade (#57454) |
v18.2.1
migrations
Commit | Type | Description |
---|---|---|
06d70a25ea | fix | take care of tests that import both HttpClientModule & HttpClientTestingModule. (#58777) |
v18.2.0
compiler
Commit | Type | Description |
---|---|---|
c8e2885136 | feat | Add extended diagnostic to warn when there are uncalled functions in event bindings (#56295) (#56295) |
compiler-cli
Commit | Type | Description |
---|---|---|
98ed5b609e | feat | run JIT transform on classes with jit: true opt-out (#56892) |
c76b440ac0 | fix | add warning for unused let declarations (#57033) |
0f0a1f2836 | fix | emitting references to ngtypecheck files (#57138) |
6c2fbda694 | fix | extended diagnostic visitor not visiting template attributes (#57033) |
e11c0c42d2 | fix | run JIT transforms on @NgModule classes with jit: true (#57212) |
core
Commit | Type | Description |
---|---|---|
f7918f5272 | feat | Add 'flush' parameter option to fakeAsync to flush after the test (#57239) |
fab673a1dd | feat | add ng generate schematic to convert to inject (#57056) |
7919982063 | feat | Add whenStable helper on ApplicationRef (#57190) |
3459289ef0 | feat | bootstrapModule can configure NgZone in providers (#57060) |
296216cbe1 | fix | Allow hybrid CD scheduling to support multiple "Angular zones" (#57267) |
8718abce90 | fix | Deprecate ignoreChangesOutsideZone option (#57029) |
827070e331 | fix | Do not run image performance warning checks on server (#57234) |
ca89ef9141 | fix | handle shorthand assignment in the inject migration (#57134) |
5dcdbfcba9 | fix | rename the equality function option in toSignal (#56769) |
2a4f488a6c | fix | warnings for oversized images and lazy-lcp present with bootstrapModule (#57060) |
language-service
Commit | Type | Description |
---|---|---|
4bb558ab0c | feat | support writing code refactorings (#56895) |
7663debce1 | perf | quick exit if no code fixes can exist (#57000) |
migrations
Commit | Type | Description |
---|---|---|
147eee4253 | feat | add migration to convert standalone component routes to be lazy loaded (#56428) |
cb442a0ce7 | fix | account for parameters with union types (#57127) |
166166d79e | fix | add alias to inject migration (#57127) |
b1a9d0f4de | fix | avoid duplicating comments when generating properties (#57367) |
5d76401ff5 | fix | preserve optional parameters (#57367) |
1cf616f671 | fix | remove generic arguments from the injected type reference (#57127) |
ba0df30ef6 | fix | remove unused imports in inject migration (#57179) |
aae9646a1b | fix | unwrap injected forwardRef (#57127) |
604270619a | perf | speed up signal input migration by combining two analyze phases (#57318) |
router
Commit | Type | Description |
---|---|---|
6c76c91e15 | feat | Add defaultQueryParamsHandling to router configuration (#57198) |
v18.1.5
compiler-cli
Commit | Type | Description |
---|---|---|
5401332b0e | fix | generate valid TS 5.6 type checking code (#57303) |
core
Commit | Type | Description |
---|---|---|
e39b22a932 | fix | Account for addEventListener to be passed a Window or Document. (#57282) |
db65bc25ca | fix | Account for addEventListener to be passed a Window or Document. (#57354) |
0e024ecc27 | fix | complete post-hydration cleanup in components that use ViewContainerRef (#57300) |
822db64b93 | fix | skip hydration for i18n nodes that were not projected (#57356) |
810f76f574 | fix | take skip hydration flag into account while hydrating i18n blocks (#57299) |
v18.1.4
compiler
Commit | Type | Description |
---|---|---|
6a99f83659 | fix | reduce chance of conflicts between generated factory and local variables (#57181) |
compiler-cli
Commit | Type | Description |
---|---|---|
afb05ff1cb | fix | support JIT transforms before other transforms modifying classes (#57262) |
bae54a1621 | perf | improve performance of interpolatedSignalNotInvoked extended diagnostic (#57291) |
language-service
Commit | Type | Description |
---|---|---|
6ac209c24f | fix | avoid generating TS suggestion diagnostics for templates (#56241) |
v18.1.3
compiler
Commit | Type | Description |
---|---|---|
31dea066d6 | fix | reduce chance of conflicts between generated factory and local variables (#57181) |
compiler-cli
Commit | Type | Description |
---|---|---|
1f9e090910 | fix | emitting references to ngtypecheck files (#57138) (#57202) |
core
Commit | Type | Description |
---|---|---|
f7ab04018e | fix | errors during ApplicationRef.tick should be rethrown for zoneless tests (#56993) |
eaa83f9d27 | fix | hydration error in some let declaration setups (#57173) |
v18.1.2
compiler
Commit | Type | Description |
---|---|---|
463945003d | fix | limit the number of chained instructions (#57069) |
compiler-cli
Commit | Type | Description |
---|---|---|
e904f34020 | fix | add warning for unused let declarations (#57033) |
core
Commit | Type | Description |
---|---|---|
9e52c1c840 | fix |
afterNextRender hooks return that callback value. (#57031) |
b9fb98c67c | fix | tree shake dev mode error message (#57035) |
v18.1.1
common
Commit | Type | Description |
---|---|---|
a1cb9dfc0d | fix | Don't run preconnect assertion on the server. (#56213) |
compiler
Commit | Type | Description |
---|---|---|
daf0317bdc | fix | JIT mode incorrectly interpreting host directive configuration in partial compilation (#57002) |
d7dca6dbb6 | fix | use strict equality for 'code' comparison (#56944) |
compiler-cli
Commit | Type | Description |
---|---|---|
c94a897248 | fix | avoid emitting references to typecheck files in TS 5.4 (#56961) |
core
Commit | Type | Description |
---|---|---|
5682527d94 | fix | not all callbacks running when registered at the same time (#56981) |
migrations
Commit | Type | Description |
---|---|---|
b666d2c20f | fix | fix common module removal (#56968) |
v18.1.0
common
Commit | Type | Description |
---|---|---|
f25653e231 | fix | typo in NgOptimizedImage warning (#56756) |
9b35726e42 | fix | typo in warning for NgOptimizedDirective (#56817) |
compiler
Commit | Type | Description |
---|---|---|
fd6cd0422d | feat | Add extended diagnostic to warn when there are uncalled functions in event bindings (#56295) |
341a116d61 | fix | allow more characters in let declaration name (#56764) |
2a1291e942 | fix | give precedence to local let declarations over parent ones (#56752) |
compiler-cli
Commit | Type | Description |
---|---|---|
66e582551e | fix | avoid duplicate diagnostics for let declarations read before definition (#56843) |
4d18c5bfd5 | fix | flag all conflicts between let declarations and local symbols (#56752) |
9e21582456 | fix | Show template syntax errors in local compilation modified (#55855) |
5996502921 | fix | type check let declarations nested inside nodes (#56752) |
cdebf751e4 | fix | used before declared diagnostic not firing for control flow blocks (#56843) |
core
Commit | Type | Description |
---|---|---|
ea3c802056 | feat | Add a schematic to migrate afterRender phase flag (#55648) |
5df3e78c99 | feat | add equality function to rxjs-interop toSignal (#56447) |
0a48d584f2 | feat | add support for let syntax (#56715) |
352e0782ec | feat | expose signal input metadata in ComponentMirror (#56402) |
a655e46447 | feat | Redesign the afterRender & afterNextRender phases API (#55648) |
e5a6f91722 | feat | support TypeScript 5.5 (#56096) |
38effcc63e | fix | Add back phase flag option as a deprecated API (#55648) |
86bcfd3e49 | fix | improve docs on afterRender hooks (#56522) |
b2445a0953 | fix | link errors to ADEV (#55554) (#56038) |
03a2acd2a3 | fix | properly remove imports in the afterRender phase migration (#56524) |
4d87b9e899 | fix | rename the equality function option in toSignal (#56769) (#56922) |
8bd4c074af | fix | toSignal equal option should be passed to inner computed (#56903) |
forms
Commit | Type | Description |
---|---|---|
00bde8b1c2 | fix | Make NgControlStatus host bindings OnPush compatible (#55720) |
http
Commit | Type | Description |
---|---|---|
cc21989132 | fix | Make Content-Type header case insensitive (#56541) |
language-service
Commit | Type | Description |
---|---|---|
b400e2e4d4 | feat | autocompletion for the component not imported (#55595) |
67b2c336bc | fix | import the default exported component correctly (#56432) |
router
Commit | Type | Description |
---|---|---|
a13f5da773 | feat | Allow UrlTree as an input to routerLink (#56265) |
1d3a7529b4 | feat | Set a different browser URL from the one for route matching (#53318) |
v18.0.7
compiler
Commit | Type | Description |
---|---|---|
85f77b5cda | fix | fix CSS animation rule scope (#56800) |
http
Commit | Type | Description |
---|---|---|
95d7076d1a | perf | execute fetch outside of Angular zone (#56820) |
migrations
Commit | Type | Description |
---|---|---|
d6fff45e73 | fix | Fix cf migration let condition semicolon order (#56913) |
v18.0.6
common
Commit | Type | Description |
---|---|---|
a55719f55e | fix | Don't run preconnect assertion on the server. (#56213) |
core
Commit | Type | Description |
---|---|---|
4909844805 | fix | establish proper defer injector hierarchy for components attached to ApplicationRef (#56763) |
fec5b80aaf | fix | support injection of object with null constructor. (#56553) |
router
Commit | Type | Description |
---|---|---|
b7d3ecc873 | fix | routes should not get stale providers (#56798) |
v18.0.5
core
Commit | Type | Description |
---|---|---|
2f73281dfd | fix | improve docs on afterRender hooks (#56525) |
be9e4892f9 | fix | improve support for i18n hydration of projected content (#56192) |
5f9bd5521e | fix | prevent calling devMode only function on @defer error. (#56559) |
v18.0.4
compiler-cli
Commit | Type | Description |
---|---|---|
ec0d1bf6f3 | fix | insert constant statements after the first group of imports (#56431) |
core
Commit | Type | Description |
---|---|---|
83ffa94783 | fix | do not activate event replay when no events are registered (#56509) |
router
Commit | Type | Description |
---|---|---|
5578681da2 | fix | Delay the view transition to ensure renders in microtasks complete (#56494) |
v18.0.3
benchpress
Commit | Type | Description |
---|---|---|
ebf00aa0659 | fix | adjust supported browser names for headless chrome (#56360) |
core
Commit | Type | Description |
---|---|---|
dbd0fa00f8c | fix | async EventEmitter should contribute to app stability (#56308) |
625ca3e2b3f | fix | signals should be tracked when embeddedViewRef.detectChanges is called (#55719) |
localize
Commit | Type | Description |
---|---|---|
d6dd3dbdb09 | fix | add @angular/localize/init as polyfill in angular.json (#56300) |
migrations
Commit | Type | Description |
---|---|---|
c07e1b33569 | fix | resolve error in standalone migration (#56302) |
v18.0.2
core
Commit | Type | Description |
---|---|---|
78cf9bfc0e | fix | Do not migrate HttpClientModule imports on components. (#56067) |
616cdef474 | fix | don't coerce all producers to consumers on liveness change (#56140) |
2a440e1064 | fix | Fix shouldPreventDefaultBeforeDispatching bug (#56188) |
290a47d842 | fix | handle missing withI18nSupport() call for components that use i18n blocks (#56175) |
migrations
Commit | Type | Description |
---|---|---|
b70b80ba55 | fix | do not generate aliased variables with the same name (#56154) |
v18.0.1
compiler
Commit | Type | Description |
---|---|---|
419ffa2026 | fix | optimize track function that only passes $index (#55872) |
compiler-cli
Commit | Type | Description |
---|---|---|
4c7efc005a | fix | interpolatedSignalNotInvoked diagnostic for class, style, attribute and animation bindings (#55969) |
core
Commit | Type | Description |
---|---|---|
4e6ea0e19c | fix | handle elements with local refs in event replay serialization logic (#56076) |
d73a0175cb | fix | link errors to ADEV (#55554) |
985a215b10 | fix | typo in zoneless warning (#55974) |
migrations
Commit | Type | Description |
---|---|---|
ba85d08158 | fix | handle empty ngSwitchCase (#56105) |
v18.0.0
Blog post "Angular v18 is now available".
Breaking Changes
animations
- Deprecated
matchesElement
method has been removed fromAnimationDriver
as it is unused.
common
- The deprecated
isPlatformWorkerUi
andisPlatformWorkerApp
have been removed without replacement, as they serve no purpose since the removal of the WebWorker platform.
compiler
- Angular only supports writable expressions inside of two-way bindings.
compiler-cli
-
- Angular no longer supports TypeScript versions older than 5.4.
core
-
OnPush
views at the root of the application need to be marked dirty for their host bindings to refresh. Previously, the host bindings were refreshed for all root views without respecting theOnPush
change detection strategy. -
The
ComponentFixture
autoDetect
feature will no longer refresh the component's host view when the component isOnPush
and not marked dirty. This exposes existing issues in components which claim to beOnPush
but do not correctly callmarkForCheck
when they need to be refreshed. If this change causes test failures, the easiest fix is to change the component toChangeDetectionStrategy.Default
. -
ComponentFixture.whenStable
now matches theApplicationRef.isStable
observable. Prior to this change, stability of the fixture did not include everything that was considered inApplicationRef
.whenStable
of the fixture will now include unfinished router navigations and unfinishedHttpClient
requests. This will cause tests thatawait
thewhenStable
promise to time out when there are incomplete requests. To fix this, remove thewhenStable
, instead wait for another condition, or ensureHttpTestingController
mocks responses for all requests. Try addingHttpTestingController.verify()
before yourawait fixture.whenStable
to identify the open requests. Also, make sure your tests wait for the stability promise. We found many examples of tests that did not, meaning the expectations did not execute within the test body.In addition,
ComponentFixture.isStable
would synchronously switch to true in some scenarios but will now always be asynchronous. -
Angular will ensure change detection runs, even when the state update originates from outside the zone, tests may observe additional rounds of change detection compared to the previous behavior.
This change will be more likely to impact existing unit tests. This should usually be seen as more correct and the test should be updated, but in cases where it is too much effort to debug, the test can revert to the old behavior by adding
provideZoneChangeDetection({schedulingMode: NgZoneSchedulingMode.NgZoneOnly})
to theTestBed
providers.Similarly, applications which may want to update state outside the zone and not trigger change detection can add
provideZoneChangeDetection({schedulingMode: NgZoneSchedulingMode.NgZoneOnly})
to the providers inbootstrapApplication
or addschedulingMode: NgZoneSchedulingMode.NgZoneOnly
to theBootstrapOptions
ofbootstrapModule
. -
When Angular runs change detection, it will continue to refresh any views attached to
ApplicationRef
that are still marked for check after one round completes. In rare cases, this can result in infinite loops when certain patterns continue to mark views for check usingChangeDetectorRef.detectChanges
. This will be surfaced as a runtime error with theNG0103
code. -
async
has been removed, usewaitForAsync
instead. -
The
ComponentFixture.autoDetect
feature now executes change detection for the fixture withinApplicationRef.tick
. This more closely matches the behavior of how a component would refresh in production. The order of component refresh in tests may be slightly affected as a result, especially when dealing with additional components attached to the application, such as dialogs. Tests sensitive to this type of change (such as screenshot tests) may need to be updated. Concretely, this change means that the component will refresh before additional views attached toApplicationRef
(i.e. dialog components). Prior to this change, the fixture component would refresh after other views attached to the application. -
The exact timing of change detection execution when using event or run coalescing with
NgZone
is now the first of eithersetTimeout
orrequestAnimationFrame
. Code which relies on this timing (usually by accident) will need to be adjusted. If a callback needs to execute after change detection, we recommendafterNextRender
instead of something likesetTimeout
. -
Newly created and views marked for check and reattached during change detection are now guaranteed to be refreshed in that same change detection cycle. Previously, if they were attached at a location in the view tree that was already checked, they would either throw
ExpressionChangedAfterItHasBeenCheckedError
or not be refreshed until some future round of change detection. In rare circumstances, this correction can cause issues. We identified one instance that relied on the previous behavior by reading a value on initialization which was queued to be updated in a microtask instead of being available in the current change detection round. The component only read this value during initialization and did not read it again after the microtask updated it. -
Testability methods
increasePendingRequestCount
,decreasePendingRequestCount
andgetPendingRequestCount
have been removed. This information is tracked with zones.
http
-
By default we now prevent caching of HTTP requests that require authorization . To opt-out from this behaviour use the
includeRequestsWithAuthHeaders
option inwithHttpTransferCache
.Example:
withHttpTransferCache({ includeRequestsWithAuthHeaders: true, })
platform-browser
- Deprecated
StateKey
,TransferState
andmakeStateKey
have been removed from@angular/platform-browser
, use the same APIs from@angular/core
.
platform-browser-dynamic
- No longer used
RESOURCE_CACHE_PROVIDER
APIs have been removed.
platform-server
-
deprecated
platformDynamicServer
has been removed. Add animport @​angular/compiler
and replace the usage withplatformServer
-
deprecated
ServerTransferStateModule
has been removed.TransferState
can be use without providing this module. -
deprecated
useAbsoluteUrl
andbaseUrl
been removed fromPlatformConfig
. Provide and absoluteurl
instead. -
Legacy handling or Node.js URL parsing has been removed from
ServerPlatformLocation
.The main differences are;
-
pathname
is always suffixed with a/
. -
port
is empty whenhttp:
protocol and port in url is80
-
port
is empty whenhttps:
protocol and port in url is443
-
router
- Guards can now return
RedirectCommand
for redirects in addition toUrlTree
. Code which expects onlyboolean
orUrlTree
values inRoute
types will need to be adjusted. - This change allows
Route.redirectTo
to be a function in addition to the previous string. Code which expectsredirectTo
to only be a string onRoute
objects will need to be adjusted. - When a a guard returns a
UrlTree
as a redirect, the redirecting navigation will now usereplaceUrl
if the initial navigation was also using thereplaceUrl
option. If this is not desirable, the redirect can configure newNavigationBehaviorOptions
by returning aRedirectCommand
with the desired options instead ofUrlTree
. - Providers available to the routed components always
come from the injector heirarchy of the routes and never inherit from
the
RouterOutlet
. This means that providers available only to the component that defines theRouterOutlet
will no longer be available to route components in any circumstances. This was already the case whenever routes defined providers, either through lazy loading anNgModule
or through explicitproviders
on the route config. - Providers available to the routed components always
come from the injector heirarchy of the routes and never inherit from
the
RouterOutlet
. This means that providers available only to the component that defines theRouterOutlet
will no longer be available to route components in any circumstances. This was already the case whenever routes defined providers, either through lazy loading anNgModule
or through explicitproviders
on the route config.
Deprecations
common
-
getCurrencySymbol
,getLocaleCurrencyCode
,getLocaleCurrencyName
,getLocaleCurrencySymbol
,getLocaleDateFormat
,getLocaleDateTimeFormat
,getLocaleDayNames
,getLocaleDayPeriods
,getLocaleDirection
,getLocaleEraNames
,getLocaleExtraDayPeriodRules
,getLocaleExtraDayPeriods
,getLocaleFirstDayOfWeek
,getLocaleId
,getLocaleMonthNames
,getLocaleNumberFormat
,getLocaleNumberSymbol
,getLocalePluralCase
,getLocaleTimeFormat
,getLocaleWeekEndRange
,getNumberOfCurrencyDigits
core
-
@Component.interpolation
is deprecated. Use Angular's delimiters instead.
http
-
HttpClientModule
,HttpClientXsrfModule
andHttpClientJsonpModule
As mentionned, those modules can be replaced by provider function only.
animations
Commit | Type | Description |
---|---|---|
bcce85af72 | refactor | remove deprecated matchesElement from AnimationDriver (#55479) |
common
Commit | Type | Description |
---|---|---|
d34c033902 | refactor | Deprecate Local Data API functions (#54483) |
3b0de30b37 | refactor | remove deprecated isPlatformWorkerApp and isPlatformWorkerUi API (#55302) |
compiler
Commit | Type | Description |
---|---|---|
91b007e58f | fix | add math elements to schema (#55631) |
33d0102304 | fix | allow comments between connected blocks (#55966) |
7fc7f3f05f | fix | capture all control flow branches for content projection in if blocks (#54921) |
a369f43fbd | fix | capture switch block cases for content projection (#54921) |
eb625d3783 | fix | declare for loop aliases in addition to new name (#54942) |
f824911510 | fix | For FatalDiagnosticError , hide the message field without affecting the emit (#55160) |
a040fb720a | fix | maintain multiline CSS selectors during CSS scoping (#55509) |
39624c6b12 | fix | output input flags as a literal (#55215) |
eba92cfa55 | fix | prevent usage of reserved control flow symbol in custom interpolation context. (#55809) |
7d5bc1c628 | fix | remove container index from conditional instruction (#55190) |
4eb0165750 | fix | remove support for unassignable expressions in two-way bindings (#55342) |
e1650e3b13 | fix | throw error if item name and context variables conflict (#55045) |
compiler-cli
Commit | Type | Description |
---|---|---|
5bd188a394 | feat | add partial compilation support for deferred blocks (#54908) |
b02b31a915 | feat | drop support for TypeScript older than 5.4 (#54961) |
78188e877a | fix | add diagnostic if initializer API is used outside of an initializer (#54993) |
69a83993b3 | fix | do not throw when retrieving TCB symbol for signal input with restricted access (#55774) |
4f4f41016e | fix | dom property binding check in signal extended diagnostic (#54324) |
7a16d7e969 | fix | don't type check the bodies of control flow nodes in basic mode (#55360) |
8d93597a82 | fix | fix type narrowing of @if with aliases (#55835) |
9b424d7224 | fix | preserve original reference to non-deferrable dependency (#54759) |
694ba79cbf | fix | report cases where initializer APIs are used in a non-directive class (#54993) |
6219341d26 | fix | report errors when initializer APIs are used on private fields (#54981) |
c04ffb1fa6 | fix | use switch statements to narrow Angular switch blocks (#55168) |
core
Commit | Type | Description |
---|---|---|
a730f09ae9 | feat | Add a public API to establish events to be replayed and an attribute to mark an element with an event handler. (#55356) |
fdd560ea14 | feat | Add ability to configure zone change detection to use zoneless scheduler (#55252) |
bce5e2344f | feat | Add build target for jsaction contract binary. (#55319) |
666d646575 | feat | Add event delegation library to queue up events and replay them when the application is ready (#55121) |
5f06ca8f55 | feat | add HOST_TAG_NAME token (#54751) |
a600a39d0c | feat | add support for fallback content in ng-content (#54854) |
146306a141 | feat | add support for i18n hydration (#54823) |
f09c5a7bc4 | feat | Add zoneless change detection provider as experimental (#55329) |
d28614b90e | feat | Modify EventType from an enum to an object. (#55323) |
ac863ded48 | feat | provide ExperimentalPendingTasks API (#55487) |
1ee9f32621 | feat | Synchronize changes from internal JSAction codebase. (#55182) |
d888da4606 | fix |
ApplicationRef.tick should respect OnPush for host bindings (#53718) |
64f870c12b | fix |
ApplicationRef.tick should respect OnPush for host bindings (#53718) (#53718) |
8cad4e8cbe | fix |
ComponentFixture autoDetect respects OnPush flag of host view (#54824) |
658cf8c384 | fix |
ComponentFixture stability should match ApplicationRef (#54949) |
2fc11eae9e | fix | account for re-projected ng-content elements with fallback content (#54854) |
0cbd73c6e9 | fix | add warning when using zoneless but zone.js is still loaded (#55769) |
d5edfde6ee | fix | afterRender hooks registered outside change detection can mark views dirty (#55623) |
de7447d15e | fix | Angular should not ignore changes that happen outside the zone (#55102) |
ba8e465974 | fix | Change Detection will continue to refresh views while marked for check (#54734) |
5a10f405d3 | fix | complete the removal of deprecation async function (#55491) |
24bc0ed4f2 | fix | ComponentFixture autodetect should detect changes within ApplicationRef.tick (#54733) |
1c0ec56c46 | fix | correctly project single-root content inside control flow (#54921) |
840c375255 | fix | do not save point-in-time setTimeout and rAF references (#55124) |
10c5cdb49c | fix | ensure change detection runs in a reasonable timeframe with zone coalescing (#54578) |
ad045efd4b | fix | Ensure views marked for check are refreshed during change detection (#54735) |
69085ea26e | fix | error about provideExperimentalCheckNoChangesForDebug uses wrong name (#55824) |
0147e0b85a | fix | exhaustive checkNoChanges should only do a single pass (#55839) |
e02bcf89cf | fix | Fix clearing of pending task in zoneless cleanup implementation (#55074) |
0cec9e4f9a | fix | Fix null dereference error addEvent (#55353) |
44c0ed83a6 | fix | hide implementation details of ExperimentalPendingTasks (#55516) |
314112de99 | fix | Prevent markForCheck during change detection from causing infinite loops (#54900) |
a5fa279b6e | fix | prevent i18n hydration from cleaning projected nodes (#54823) |
6534c035c0 | fix | Remove deprecated Testability methods (#53768) |
a5c57c7484 | fix | resolve error for multiple component instances that use fallback content (#55478) |
f44a5e4604 | fix | support content projection and VCRs in i18n (#54823) |
0510930a25 | fix | TestBed should not override NgZone from initTestEnvironment (#55226) |
e9a0c86766 | fix | TestBed should not override NgZone from initTestEnvironment (#55226) |
700c0520bb | fix | Update ApplicationRef.tick loop to only throw in dev mode (#54848) |
a99cb7ce5b | fix | zoneless scheduler should check if Zone is defined before accessing it (#55118) |
1fd63e9cff | refactor | deprecate @Component.interpolation (#55778) |
forms
Commit | Type | Description |
---|---|---|
1c736dc3b2 | feat | Unified Control State Change Events (#54579) |
61007dced0 | fix | Add event for forms submitted & reset (#55667) |
2e27ca9ddf | fix | Allow canceled async validators to emit. (#55134) |
http
Commit | Type | Description |
---|---|---|
6f88d80758 | feat | allow caching requests with different origins between server and client (#55274) |
8eacb6e4b9 | feat | exclude caching for authenticated HTTP requests (#55034) |
d9b339fdbc | fix | resolve withRequestsMadeViaParent behavior with withFetch (#55652) |
ef665a40a5 | refactor | Deprecate HttpClientModule & related modules (#54020) |
language-service
Commit | Type | Description |
---|---|---|
6d1b82df32 | fix | allow external projects to use provided compiler options (#55035) |
a48afe0d94 | fix | avoid generating TS syntactic diagnostics for templates (#55091) |
bd236cc150 | fix | implement getDefinitionAtPosition for Angular templates (#55269) |
4166dfc1b6 | fix | prevent underlying TS Service from handling template files (#55003) |
b7f2fd4739 | fix | use type-only import in plugin factory (#55996) |
migrations
Commit | Type | Description |
---|---|---|
f914f6a362 | feat | Migration schematics for HttpClientModule (#54020) |
8459ee46cb | fix | handle more cases in HttpClientModule migration (#55640) |
c4b2f18709 | fix | migrate HttpClientTestingModule in test modules (#55803) |
bb4a4016a9 | fix | preserve existing properties in HttpClientModule migration (#55777) |
f93e5180be | fix | resolve multiple structural issues with HttpClient migration (#55557) |
platform-browser
Commit | Type | Description |
---|---|---|
45ae7a6b60 | feat | add withI18nSupport() in developer preview (#55130) |
23f914f101 | fix | Use the right namespace for mathML. (#55622) |
cba336d4f1 | refactor | remove deprecated transfer state APIs (#55474) |
platform-browser-dynamic
Commit | Type | Description |
---|---|---|
eb20c1a8b1 | refactor | unused RESOURCE_CACHE_PROVIDER API has been removed (#54875) |
platform-server
Commit | Type | Description |
---|---|---|
5674c644ab | fix | add nonce attribute to event record script (#55495) |
e71e869112 | fix | remove event dispatch script from HTML when hydration is disabled (#55681) |
07ac017731 | refactor | remove deprecated platformDynamicServer API (#54874) |
e8b588d8b7 | refactor | remove deprecated ServerTransferStateModule API (#54874) |
3b1967ca64 | refactor | remove deprecated useAbsoluteUrl and baseUrl from PlatformConfig (#54874) |
2357d3566c | refactor | remove legacy URL handling logic (#54874) |
router
Commit | Type | Description |
---|---|---|
4a42961393 | feat |
withNavigationErrorHandler can convert errors to redirects (#55370) |
8735af08b9 | feat | Add ability to return UrlTree with NavigationBehaviorOptions from guards (#45023) |
87f3f27f90 | feat | Allow resolvers to return RedirectCommand (#54556) |
2b802587f2 | feat | Allow Route.redirectTo to be a function which returns a string or UrlTree (#52606) |
60f1d681e0 | fix | preserve replaceUrl when returning a urlTree from CanActivate (#54042) |
3839cfbb18 | fix | Routed components never inherit RouterOutlet EnvironmentInjector (#54265) |
da906fdafc | fix | Routed components never inherit RouterOutlet EnvironmentInjector (#54265) |
service-worker
Commit | Type | Description |
---|---|---|
3bc63eaaf3 | fix | avoid running CDs on controllerchange (#54222) |
e598634c10 | fix | remove controllerchange listener when app is destroyed (#55365) |
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.
Merge request reports
Activity
Artifact update problemRenovate failed to update an artifact related to this branch. You probably do not want to merge this MR as-is.
Renovate will retry this branch, including artifacts, only when one of the following happens:- any of the package files in this branch needs updating, or
- the branch becomes conflicted, or
- you click the rebase/retry checkbox if found above, or
- you rename this MR's title to start with "rebase!" to trigger it manually
The artifact failure details are included below:
File name: package-lock.json
npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: @angular-devkit/build-angular@17.3.17 npm ERR! Found: @angular/compiler-cli@20.0.5 npm ERR! node_modules/@angular/compiler-cli npm ERR! dev @angular/compiler-cli@"^20.0.0" from the root project npm ERR! npm ERR! Could not resolve dependency: npm ERR! peer @angular/compiler-cli@"^17.0.0" from @angular-devkit/build-angular@17.3.17 npm ERR! node_modules/@angular-devkit/build-angular npm ERR! dev @angular-devkit/build-angular@"^17.3.11" from the root project npm ERR! npm ERR! Conflicting peer dependency: @angular/compiler-cli@17.3.12 npm ERR! node_modules/@angular/compiler-cli npm ERR! peer @angular/compiler-cli@"^17.0.0" from @angular-devkit/build-angular@17.3.17 npm ERR! node_modules/@angular-devkit/build-angular npm ERR! dev @angular-devkit/build-angular@"^17.3.11" from the root project npm ERR! npm ERR! Fix the upstream dependency conflict, or retry npm ERR! this command with --force, or --legacy-peer-deps npm ERR! to accept an incorrect (and potentially broken) dependency resolution. npm ERR! npm ERR! See /opt/renovate/data/cache/others/npm/eresolve-report.txt for a full report. npm ERR! A complete log of this run can be found in: npm ERR! /opt/renovate/data/cache/others/npm/_logs/2025-06-26T09_15_59_431Z-debug-0.log
Edited by NMaaS Renovatementioned in issue #271
added 16 commits
-
f2a03778...031a3033 - 15 commits from branch
develop
- 74c3e215 - Update angular monorepo to v20
-
f2a03778...031a3033 - 15 commits from branch
added 5 commits
-
74c3e215...e2eecb96 - 4 commits from branch
develop
- fd497615 - Update angular monorepo to v20
-
74c3e215...e2eecb96 - 4 commits from branch