Deliver web apps with confidence 🚀
MIT License
Bot releases are hidden (Show)
Published by thePunderWoman 4 months ago
Commit | Description |
---|---|
do not generate aliased variables with the same name (#56154) |
Published by thePunderWoman 4 months ago
Published by pkozlowski-opensource 5 months ago
Published by pkozlowski-opensource 5 months ago
Commit | Description |
---|---|
optimize track function that only passes $index (#55872) |
Commit | Description |
---|---|
interpolatedSignalNotInvoked diagnostic for class, style, attribute and animation bindings (#55969) |
Commit | Description |
---|---|
handle elements with local refs in event replay serialization logic (#56076) | |
link errors to ADEV (#55554) | |
typo in zoneless warning (#55974) |
Commit | Description |
---|---|
handle empty ngSwitchCase (#56105) |
Published by dylhunn 5 months ago
Published by dylhunn 5 months ago
Commit | Description |
---|---|
remove deprecated matchesElement from AnimationDriver (#55479) |
Commit | Description |
---|---|
Deprecate Local Data API functions (#54483) | |
remove deprecated isPlatformWorkerApp and isPlatformWorkerUi API (#55302) |
Commit | Description |
---|---|
Unified Control State Change Events (#54579) | |
Add event for forms submitted & reset (#55667) | |
Allow canceled async validators to emit. (#55134) |
Commit | Description |
---|---|
add withI18nSupport() in developer preview (#55130) | |
Use the right namespace for mathML. (#55622) | |
remove deprecated transfer state APIs (#55474) |
Commit | Description |
---|---|
unused RESOURCE_CACHE_PROVIDER API has been removed (#54875) |
Commit | Description |
---|---|
avoid running CDs on controllerchange (#54222) |
|
remove controllerchange listener when app is destroyed (#55365) |
matchesElement
method has been removed from AnimationDriver
as it is unused.isPlatformWorkerUi
and isPlatformWorkerApp
have been removed without replacement, as they serve no purpose since the removal of the WebWorker platform.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 the
OnPush
change detection strategy.
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 the
OnPush
change detection strategy.
The ComponentFixture
autoDetect
feature will no
longer refresh the component's host view when the component is OnPush
and not marked dirty. This exposes existing issues in components which
claim to be OnPush
but do not correctly call markForCheck
when they
need to be refreshed. If this change causes test failures, the easiest
fix is to change the component to ChangeDetectionStrategy.Default
.
ComponentFixture.whenStable
now matches the
ApplicationRef.isStable
observable. Prior to this change, stability
of the fixture did not include everything that was considered in
ApplicationRef
. whenStable
of the fixture will now include unfinished
router navigations and unfinished HttpClient
requests. This will cause
tests that await
the whenStable
promise to time out when there are
incomplete requests. To fix this, remove the whenStable
,
instead wait for another condition, or ensure HttpTestingController
mocks responses for all requests. Try adding HttpTestingController.verify()
before your await 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 the TestBed
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 in bootstrapApplication
or add
schedulingMode: NgZoneSchedulingMode.NgZoneOnly
to the
BootstrapOptions
of bootstrapModule
.
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 using
ChangeDetectorRef.detectChanges
. This will be surfaced as a runtime
error with the NG0103
code.
async
has been removed, use waitForAsync
instead.
The ComponentFixture.autoDetect
feature now executes
change detection for the fixture within ApplicationRef.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 to ApplicationRef
(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 either
setTimeout
or requestAnimationFrame
. Code which relies on this
timing (usually by accident) will need to be adjusted. If a callback
needs to execute after change detection, we recommend afterNextRender
instead of something like setTimeout
.
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
and getPendingRequestCount
have been
removed. This information is tracked with zones.
By default we now prevent caching of HTTP requests that require authorization . To opt-out from this behaviour use the includeRequestsWithAuthHeaders
option in withHttpTransferCache
.
Example:
withHttpTransferCache({
includeRequestsWithAuthHeaders: true,
})
StateKey
, TransferState
and makeStateKey
have been removed from @angular/platform-browser
, use the same APIs from @angular/core
.RESOURCE_CACHE_PROVIDER
APIs have been removed.deprecated platformDynamicServer
has been removed. Add an import @angular/compiler
and replace the usage with platformServer
deprecated ServerTransferStateModule
has been removed. TransferState
can be use without providing this module.
deprecated useAbsoluteUrl
and baseUrl
been removed from PlatformConfig
. Provide and absolute url
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 when http:
protocol and port in url is 80
port
is empty when https:
protocol and port in url is 443
RedirectCommand
for redirectsUrlTree
. Code which expects only boolean
or UrlTree
Route
types will need to be adjusted.Route.redirectTo
to be a functionredirectTo
toRoute
objects will need to be adjusted.UrlTree
as a redirect, thereplaceUrl
if the initialreplaceUrl
option. If this is notNavigationBehaviorOptions
byRedirectCommand
with the desired options instead of UrlTree
.RouterOutlet
. This means that providers available only to theRouterOutlet
will no longer be available toNgModule
or through explicit providers
on the route config.RouterOutlet
. This means that providers available only to theRouterOutlet
will no longer be available toNgModule
or through explicit providers
on the route config.getCurrencySymbol
, getLocaleCurrencyCode
, getLocaleCurrencyName
, getLocaleCurrencySymbol
, getLocaleDateFormat
, getLocaleDateTimeFormat
, getLocaleDayNames
, getLocaleDayPeriods
, getLocaleDirection
, getLocaleEraNames
, getLocaleExtraDayPeriodRules
, getLocaleExtraDayPeriods
, getLocaleFirstDayOfWeek
, getLocaleId
, getLocaleMonthNames
, getLocaleNumberFormat
, getLocaleNumberSymbol
, getLocalePluralCase
, getLocaleTimeFormat
, getLocaleWeekEndRange
, getNumberOfCurrencyDigits
@Component.interpolation
is deprecated. Use Angular'sHttpClientModule
, HttpClientXsrfModule
and HttpClientJsonpModule
As mentionned, those modules can be replaced by provider function only.
Published by dylhunn 5 months ago
Commit | Description |
---|---|
allow comments between connected blocks (#55966) | |
prevent usage of reserved control flow symbol in custom interpolation context. (#55809) |
Commit | Description |
---|---|
remove controllerchange listener when app is destroyed (#55365) |
Published by atscott 5 months ago
Commit | Description |
---|---|
deprecate @Component.interpolation (#55778) |
Commit | Description |
---|---|
Add event for forms submitted & reset (#55667) | |
Allow canceled async validators to emit. (#55134) |
Commit | Description |
---|---|
migrate HttpClientTestingModule in test modules (#55803) | |
preserve existing properties in HttpClientModule migration (#55777) |
@Component.interpolation
is deprecated. Use Angular'sPublished by atscott 5 months ago
Published by AndrewKushnir 5 months ago
Commit | Description |
---|---|
add math elements to schema (#55631) | |
maintain multiline CSS selectors during CSS scoping (#55509) |
Commit | Description |
---|---|
resolve withRequestsMadeViaParent behavior with withFetch (#55652) |
Commit | Description |
---|---|
handle more cases in HttpClientModule migration (#55640) |
Commit | Description |
---|---|
Use the right namespace for mathML. (#55622) |
Commit | Description |
---|---|
remove event dispatch script from HTML when hydration is disabled (#55681) |
Published by AndrewKushnir 5 months ago
Published by AndrewKushnir 6 months ago
Commit | Description |
---|---|
resolve multiple structural issues with HttpClient migration (#55557) |
Commit | Description |
---|---|
Scroller should scroll as soon as change detection completes (#55105) |
Published by AndrewKushnir 6 months ago
Commit | Description |
---|---|
don't type check the bodies of control flow nodes in basic mode (#55558) |
Commit | Description |
---|---|
render hooks should not specifically run outside the Angular zone (#55399) |
Commit | Description |
---|---|
Scroller should scroll as soon as change detection completes (#55105) |
Published by AndrewKushnir 6 months ago
Commit | Description |
---|---|
remove deprecated matchesElement from AnimationDriver (#55479) |
Commit | Description |
---|---|
Deprecate Local Data API functions (#54483) |
Commit | Description |
---|---|
don't type check the bodies of control flow nodes in basic mode (#55360) |
Commit | Description |
---|---|
Migration schematics for HttpClientModule (#54020) |
Commit | Description |
---|---|
remove deprecated transfer state APIs (#55474) |
Commit | Description |
---|---|
add nonce attribute to event record script (#55495) |
Commit | Description |
---|---|
withNavigationErrorHandler can convert errors to redirects (#55370) |
matchesElement
method has been removed from AnimationDriver
as it is unused.async
has been removed, use waitForAsync
instead.By default we now prevent caching of HTTP requests that require authorization . To opt-out from this behaviour use the includeRequestsWithAuthHeaders
option in withHttpTransferCache
.
Example:
withHttpTransferCache({
includeRequestsWithAuthHeaders: true,
})
StateKey
, TransferState
and makeStateKey
have been removed from @angular/platform-browser
, use the same APIs from @angular/core
.getCurrencySymbol
, getLocaleCurrencyCode
, getLocaleCurrencyName
, getLocaleCurrencySymbol
, getLocaleDateFormat
, getLocaleDateTimeFormat
, getLocaleDayNames
, getLocaleDayPeriods
, getLocaleDirection
, getLocaleEraNames
, getLocaleExtraDayPeriodRules
, getLocaleExtraDayPeriods
, getLocaleFirstDayOfWeek
, getLocaleId
, getLocaleMonthNames
, getLocaleNumberFormat
, getLocaleNumberSymbol
, getLocalePluralCase
, getLocaleTimeFormat
, getLocaleWeekEndRange
, getNumberOfCurrencyDigits
HttpClientModule
, HttpClientXsrfModule
and HttpClientJsonpModule
As mentionned, those modules can be replaced by provider function only.
Published by AndrewKushnir 6 months ago
Published by pkozlowski-opensource 6 months ago
Commit | Description |
---|---|
remove deprecated isPlatformWorkerApp and isPlatformWorkerUi API (#55302) |
Commit | Description |
---|---|
remove container index from conditional instruction (#55190) | |
remove support for unassignable expressions in two-way bindings (#55342) |
Commit | Description |
---|---|
avoid running CDs on controllerchange (#54222) |
isPlatformWorkerUi
and isPlatformWorkerApp
have been removed without replacement, as they serve no purpose since the removal of the WebWorker platform.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 the TestBed
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 in bootstrapApplication
or add
schedulingMode: NgZoneSchedulingMode.NgZoneOnly
to the
BootstrapOptions
of bootstrapModule
.
Testability methods increasePendingRequestCount
,
decreasePendingRequestCount
and getPendingRequestCount
have been
removed. This information is tracked with zones.
Published by pkozlowski-opensource 6 months ago
Published by atscott 6 months ago
Commit | Description |
---|---|
invalid ImageKit quality parameter (#55193) | |
skip transfer cache on client (#55012) |
Commit | Description |
---|---|
output input flags as a literal (#55215) |
Commit | Description |
---|---|
TestBed should not override NgZone from initTestEnvironment (#55226) |
Commit | Description |
---|---|
implement getDefinitionAtPosition for Angular templates (#55269) |
Published by atscott 6 months ago
Published by jessicajaniuk 7 months ago
Commit | Description |
---|---|
For FatalDiagnosticError , hide the message field without affecting the emit (#55160) |
Commit | Description |
---|---|
use switch statements to narrow Angular switch blocks (#55168) |
Commit | Description |
---|---|
Unified Control State Change Events (#54579) |
Commit | Description |
---|---|
avoid generating TS syntactic diagnostics for templates (#55091) |
Commit | Description |
---|---|
avoid conflicts with some greek letters in control flow migration (#55113) |
Commit | Description |
---|---|
add withI18nSupport() in developer preview (#55130) |
Commit | Description |
---|---|
Allow resolvers to return RedirectCommand (#54556) |
|
Routed components never inherit RouterOutlet EnvironmentInjector (#54265) |
RouterOutlet
. This means that providers available only to theRouterOutlet
will no longer be available toNgModule
or through explicit providers
on the route config.