Releases: angular/angular
v19.0.0-next.3
19.0.0-next.3 (2024-09-04)
compiler
| Commit | Description |
|---|---|
| add diagnostic for unused standalone imports (#57605) |
core
| Commit | Description |
|---|---|
| drop support for TypeScript 5.4 (#57577) | |
| initial version of the output migration (#57604) | |
introduce afterRenderEffect (#57549) |
elements
| Commit | Description |
|---|---|
support output()-shaped outputs (#57535) |
http
| Commit | Description |
|---|---|
| Dynamicaly call the global fetch implementation (#57531) |
language-service
| Commit | Description |
|---|---|
| add code fix for unused standalone imports (#57605) | |
add code reactoring action to migrate @Input to signal-input (#57214) |
|
| allow code refactorings to compute edits asynchronously (#57214) |
Breaking Changes
core
-
- TypeScript versions less than 5.5 are no longer supported.
v18.2.3
v19.0.0-next.2
19.0.0-next.2 (2024-08-28)
common
| Commit | Description |
|---|---|
| automatically use sizes auto in NgOptimizedImage (#57479) |
compiler-cli
| Commit | Description |
|---|---|
| reduce duplicate component style resolution (#57502) |
core
| Commit | Description |
|---|---|
| avoid leaking memory if component throws during creation (#57546) | |
| Do not bubble capture events. (#57476) | |
| fallback to default ng-content with empty projectable nodes. (#57480) | |
| Fix fixture.detectChanges with autoDetect disabled and zoneless (#57416) | |
| Schedulers run in zone above Angular rather than root (#57553) |
elements
| Commit | Description |
|---|---|
switch to ComponentRef.setInput & remove custom scheduler (#56728) |
http
| Commit | Description |
|---|---|
| Dynamicaly call the global fetch implementation (#57531) |
router
| Commit | Description |
|---|---|
| Do not unnecessarily run matcher twice on route matching (#57530) |
upgrade
| Commit | Description |
|---|---|
| Address Trusted Types violations in @angular/upgrade (#57454) |
Breaking Changes
core
-
Render default fallback with empty
projectableNodes.When passing an empty array to
projectableNodesin thecreateComponentAPI, the default fallback content of theng-contentwill be rendered if present. To prevent rendering the default content, passdocument.createTextNode('')as aprojectableNode.For example:
// 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]] });
-
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 usefakeAsync: these timers will now be visible tofakeAsync
and can be affected bytickorflush.
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.
v18.2.2
18.2.2 (2024-08-28)
core
| Commit | Description |
|---|---|
| avoid leaking memory if component throws during creation (#57546) | |
| Do not bubble capture events. (#57476) |
http
| Commit | Description |
|---|---|
| Dynamicaly call the global fetch implementation (#57531) |
router
| Commit | Description |
|---|---|
| Do not unnecessarily run matcher twice on route matching (#57530) |
upgrade
| Commit | Description |
|---|---|
| Address Trusted Types violations in @angular/upgrade (#57454) |
v19.0.0-next.1
19.0.0-next.1 (2024-08-22)
compiler-cli
| Commit | Description |
|---|---|
| ensure template style elements are preprocessed as inline styles (#57429) |
core
| Commit | Description |
|---|---|
| support TypeScript 5.6 (#57424) | |
Allow zoneless scheduler to run inside fakeAsync (#56932) |
|
| ComponentFixture autoDetect feature works like production (#55228) | |
| handle hydration of components that project content conditionally (#57383) |
migrations
| Commit | Description |
|---|---|
| account for members with doc strings and no modifiers (#57389) | |
| avoid migrating route component in tests (#57317) | |
| preserve type when using inject decorator (#57389) |
Breaking Changes
core
- The
autoDetectfeature ofComponentFixturewill 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.
v18.2.1
18.2.1 (2024-08-22)
core
| Commit | Description |
|---|---|
Allow zoneless scheduler to run inside fakeAsync (#56932) |
|
| handle hydration of components that project content conditionally (#57383) |
migrations
| Commit | Description |
|---|---|
| account for members with doc strings and no modifiers (#57389) | |
| avoid migrating route component in tests (#57317) | |
| preserve type when using inject decorator (#57389) |
v19.0.0-next.0
19.0.0-next.0 (2024-08-14)
core
| Commit | Description |
|---|---|
| rethrow errors during ApplicationRef.tick in TestBed (#57200) |
router
| Commit | Description |
|---|---|
Add routerOutletData input to RouterOutlet directive (#57051) |
|
| Align RouterModule.forRoot errorHandler with provider error handler (#57050) | |
| Update Resolve interface to include RedirectCommand like ResolveFn (#57309) |
Breaking Changes
core
-
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 writeexpect(() => TestBed.inject(ApplicationRef).tick()).toThrow() TestBedwill reject any outstandingComponentFixture.whenStablepromises. A jasmine test,
for example, could writeexpectAsync(fixture.whenStable()).toBeRejected().
As a last resort, you can configure errors to not be rethrown by
settingrethrowApplicationErrorstofalseinTestBed.configureTestingModule. - Instead of waiting for automatic change detection to happen, trigger
router
- The
Router.errorHandlerproperty has been removed.
Adding an error handler should be configured in either
withNavigationErrorHandlerwithprovideRouteror 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
Resolveinterface now includes
RedirectCommand.
v18.2.0
18.2.0 (2024-08-14)
compiler
| Commit | Description |
|---|---|
| Add extended diagnostic to warn when there are uncalled functions in event bindings (#56295) (#56295) |
compiler-cli
| Commit | Description |
|---|---|
run JIT transform on classes with jit: true opt-out (#56892) |
|
| add warning for unused let declarations (#57033) | |
| emitting references to ngtypecheck files (#57138) | |
| extended diagnostic visitor not visiting template attributes (#57033) | |
run JIT transforms on @NgModule classes with jit: true (#57212) |
core
| Commit | Description |
|---|---|
| Add 'flush' parameter option to fakeAsync to flush after the test (#57239) | |
| add ng generate schematic to convert to inject (#57056) | |
| Add whenStable helper on ApplicationRef (#57190) | |
| bootstrapModule can configure NgZone in providers (#57060) | |
| Allow hybrid CD scheduling to support multiple "Angular zones" (#57267) | |
| Deprecate ignoreChangesOutsideZone option (#57029) | |
| Do not run image performance warning checks on server (#57234) | |
| handle shorthand assignment in the inject migration (#57134) | |
| rename the equality function option in toSignal (#56769) | |
| warnings for oversized images and lazy-lcp present with bootstrapModule (#57060) |
language-service
| Commit | Description |
|---|---|
| support writing code refactorings (#56895) | |
| quick exit if no code fixes can exist (#57000) |
migrations
| Commit | Description |
|---|---|
| add migration to convert standalone component routes to be lazy loaded (#56428) | |
| account for parameters with union types (#57127) | |
| add alias to inject migration (#57127) | |
| avoid duplicating comments when generating properties (#57367) | |
| preserve optional parameters (#57367) | |
| remove generic arguments from the injected type reference (#57127) | |
| remove unused imports in inject migration (#57179) | |
| unwrap injected forwardRef (#57127) | |
| speed up signal input migration by combining two analyze phases (#57318) |
router
| Commit | Description |
|---|---|
| Add defaultQueryParamsHandling to router configuration (#57198) |
v18.1.5
18.1.5 (2024-08-14)
compiler-cli
| Commit | Description |
|---|---|
| generate valid TS 5.6 type checking code (#57303) |
core
| Commit | Description |
|---|---|
| Account for addEventListener to be passed a Window or Document. (#57282) | |
| Account for addEventListener to be passed a Window or Document. (#57354) | |
| complete post-hydration cleanup in components that use ViewContainerRef (#57300) | |
| skip hydration for i18n nodes that were not projected (#57356) | |
| take skip hydration flag into account while hydrating i18n blocks (#57299) |
v18.2.0-rc.0
18.2.0-rc.0 (2024-08-07)
compiler
| Commit | Description |
|---|---|
| reduce chance of conflicts between generated factory and local variables (#57181) |
compiler-cli
| Commit | Description |
|---|---|
improve performance of interpolatedSignalNotInvoked extended diagnostic (#57291) |
core
| Commit | Description |
|---|---|
| Add 'flush' parameter option to fakeAsync to flush after the test (#57239) | |
| Add whenStable helper on ApplicationRef (#57190) |
Breaking Changes
zone.js
fakeAsyncwill now flush pending timers at the end of
the given function by default. To opt-out of this, you can use{flush: false}in options parameter offakeAsync