Note: This PR body was truncated due to platform limits.
This PR contains the following updates:
Release Notes
angular/angular (@angular/animations)
Compare Source
core
| Commit |
Type |
Description |
| a6a2621bf9 |
fix |
fix memory leak with event replay |
| 5239e471a1 |
fix |
handle cancelled traversals in fake navigation |
Compare Source
compiler
| Commit |
Type |
Description |
| 8e808740c9 |
fix |
better types for a few expression AST nodes |
| 63b1cdcf70 |
fix |
produce accurate span for typeof and void expressions |
| 3c3ae0cb64 |
fix |
provide location information for literal map keys |
| 523dbaf1c3 |
fix |
stop ThisReceiver inheritance from ImplicitReceiver |
compiler-cli
| Commit |
Type |
Description |
| 4d9c4567ed |
fix |
ensure component import diagnostics are reported within the imports expression |
| cd405685af |
fix |
fix up spelling of diagnostic |
| 778460fcca |
fix |
support qualified names in typeof type references |
core
| Commit |
Type |
Description |
| 7c74674eb0 |
fix |
avoid leaking view data in animations |
| 0edbee4550 |
fix |
explicitly cast signal node value to String |
| f9c29572d2 |
fix |
sanitize sensitive attributes on SVG script elements |
forms
| Commit |
Type |
Description |
| e3fba182f9 |
feat |
add [formField] directive |
| 561772b152 |
fix |
allow custom controls to require dirty input |
| f0fb1d8581 |
fix |
allow custom controls to require hidden input |
| ec110f170b |
fix |
allow custom controls to require pending input |
| ae1dc16bb0 |
fix |
clean up abort listener after timeout |
| 9748b0d5da |
fix |
support custom controls with non signal-based models |
| 6bd22df987 |
fix |
Support readonly arrays in signal forms |
router
| Commit |
Type |
Description |
| 41cd4a6af8 |
fix |
Fix RouterLink href not updating with queryParamsHandling |
| 5e9e09aee0 |
fix |
handle errors from view transition updateCallbackDone promise |
Compare Source
Breaking Changes (affecting only experimental features)
forms
-
The shape of SignalFormsConfig.classes has changed
Previously each function in the classes map took a FieldState. Now
it takes a Field directive.
For example if you previously had:
provideSignalFormsConfig({
classes: {
'my-valid': (state) => state.valid()
}
})
You would need to update to:
provideSignalFormsConfig({
classes: {
'my-valid': ({state}) => state().valid()
}
})
(cherry picked from commit 348f149)
-
(cherry picked from commit ae0c590)
core
| Commit |
Type |
Description |
| 4c8fb3631d |
fix |
throw better errors for potential circular references |
| 48492524ea |
fix |
use mutable ResponseInit type for RESPONSE_INIT token |
forms
| Commit |
Type |
Description |
| 81772b420d |
feat |
pass field directive to class config |
| 729b96476b |
refactor |
rename field to fieldTree in FieldContext and ValidationError |
language-service
| Commit |
Type |
Description |
| e0694df3ec |
fix |
avoid interpolation highlighting inside @let |
| 5047be4bc1 |
fix |
Prevent language service from crashing on suggestion diagnostic errors |
Compare Source
core
| Commit |
Type |
Description |
| 69d243abb74 |
fix |
avoid false-positive deprecation when using InjectionToken with factory only |
forms
| Commit |
Type |
Description |
| 4fd2b722b40 |
fix |
fix signal forms type error |
Compare Source
compiler
| Commit |
Type |
Description |
| f901cc9eb32 |
perf |
chain query creation instructions |
compiler-cli
| Commit |
Type |
Description |
| 65297c62011 |
fix |
expand type for native controls with a dynamic type |
forms
| Commit |
Type |
Description |
| f254ff4f2e0 |
feat |
expose element on signal forms Field directive |
| 5880fbc73c6 |
feat |
redo the signal forms metadata API |
| 55fc677cef4 |
fix |
add signals for dirty, hidden, and pending states in custom controls |
| cbb10179c80 |
fix |
allow resetting with empty string |
| bf1c12cd932 |
fix |
memoize reads of child fields in signal forms (#65802) |
| 6d7475582f9 |
fix |
Reuse key in parent in compat structure |
Compare Source
compiler-cli
| Commit |
Type |
Description |
| 5a80a48e96 |
fix |
avoid allocating an object for signals in production mode |
| 1f1856e897 |
fix |
check that field radio button values are strings |
core
| Commit |
Type |
Description |
| 8c3304c766 |
fix |
run animation queue in environment injector context |
| 4bb085311e |
fix |
unable to inject viewProviders when host directive with providers is present |
| 609699ae17 |
perf |
tree shake unused dynamic [field] binding instructions (#65599) |
forms
| Commit |
Type |
Description |
| 6b4ab876e8 |
feat |
Allows transforms on FormUiControl signals |
| a5dbd4b382 |
fix |
support dynamic [field] bindings (#65599) |
http
| Commit |
Type |
Description |
| 20474d3f0f |
fix |
enable XSRF protection for same-origin absolute URLs |
router
| Commit |
Type |
Description |
| 48b89f9fbe |
fix |
handle errors from view transition finished promise |
Compare Source
compiler
| Commit |
Type |
Description |
| 78fd159b78 |
fix |
prevent XSS via SVG animation attributeName and MathML/SVG URLs |
Compare Source
compiler-cli
| Commit |
Type |
Description |
| 39c577bc36 |
fix |
do not type check native controls with ControlValueAccessor |
| 8d3a89a477 |
fix |
escape angular control flow in jsdoc |
| bc34083d34 |
fix |
ignore non-existent files |
core
| Commit |
Type |
Description |
| 0ea1e07174 |
fix |
apply bootstrap-options migration to platformBrowserDynamic |
| 70507b8c1c |
fix |
debug data causing memory leak for root effects |
| a55482fca3 |
fix |
notify profiler events in case of errors |
| 49ad7c6508 |
fix |
use injected DOCUMENT for CSP_NONCE |
| cc1ec09931 |
perf |
avoid repeat searches for field directive |
forms
| Commit |
Type |
Description |
| 7d5c7cf99a |
feat |
add DI option for classes on Field directive |
| 8acf5d2756 |
fix |
allow dynamic type bindings on signal form controls |
| de5fca94c5 |
fix |
run reset as untracked |
http
| Commit |
Type |
Description |
| 3240d856d9 |
fix |
prevent XSRF token leakage to protocol-relative URLs |
migrations
| Commit |
Type |
Description |
| f394215b14 |
fix |
detect structural ngTemplateOutlet and ngComponentOutlet |
Compare Source
Blog post "Announcing Angular v21".
Breaking Changes
common
- (test only) -
TestBed now provides a fake PlatformLocation
implementation that supports the Navigation API. This may break some
tests, though we have not observed any failures internally. You can revert to the
old default for TestBed by providing the MockPlatformLocation from
@angular/common/testing in your providers:
{provide: PlatformLocation, useClass: MockPlatformLocation}
-
ngComponentOutletContent is now of type Node[][] | undefined instead of any[][] | undefined.
- NgModuleFactory has been removed, use NgModule instead.
compiler-cli
-
- Previously hidden type issues in host bindings may show up in your builds. Either resolve the type issues or set
"typeCheckHostBindings": false in the angularCompilerOptions section of your tsconfig.
- The Angular compiler now produces an error when the
the
emitDeclarationOnly TS compiler option is enabled as this mode is
not supported.
core
-
The server-side bootstrapping process has been changed to eliminate the reliance on a global platform injector.
Before:
const bootstrap = () => bootstrapApplication(AppComponent, config);
After:
const bootstrap = (context: BootstrapContext) =>
bootstrapApplication(AppComponent, config, context);
A schematic is provided to automatically update main.server.ts files to pass the BootstrapContext to the bootstrapApplication call.
In addition, getPlatform() and destroyPlatform() will now return null and be a no-op respectively when running in a server environment.
-
Using a combination of provideZoneChangeDetection
while also removing ZoneJS polyfills will no longer result in the
internal scheduler being disabled. All Angular applications now
consistenly use the same scheduler, and those with the Zone change detection
provider include additional automatic scheduling behaviors based on
NgZone stabilization.
-
- TypeScript versions less than 5.9 are no longer supported.
-
(test only) - Using provideZoneChangeDetection in the
TestBed providers would previously prevent TestBed from rethrowing
errors as it should. Errors in the test will now be rethrown, regardless
of the usage of provideZoneChangeDetection. Tests should be adjusted to
prevent or account for these errors. As in previous major versions,
this behavior can be disabled with rethrowApplicationErrors: false in
configureTestingModule as a last resort.
-
ignoreChangesOutsideZone is no longer available as an
option for configuring ZoneJS change detection behavior.
-
Angular no longer provides a change detection scheduler
for ZoneJS-based change detection by default. Add
provideZoneChangeDetection to the providers of your
bootstrapApplication function or your AppModule (if using
bootstrapModule). This provider addition will be covered by an
automated migration.
-
moduleId was removed from Component metadata.
-
The interpolation option on Components has been removed. Only the default {{ ... }} is now supported.
elements
-
Fix signal input getter behavior in custom elements.
Before this change, signal inputs in custom elements required function calls to access their values (elementRef.newInput()), while decorator inputs were accessed directly (elementRef.oldInput). This inconsistency caused confusion and typing difficulties.
The getter behavior has been standardized so signal inputs can now be accessed directly, matching the behavior of decorator inputs:
Before:
- Decorator Input:
elementRef.oldInput
- Signal Input:
elementRef.newInput()
After:
- Decorator Input:
elementRef.oldInput
- Signal Input:
elementRef.newInput
forms
- This new directive will conflict with existing FormArray directives or formArray inputs on the same element.
platform-browser
- The deprecated
ApplicationConfig export from @angular/platform-browser has been removed.
Please import ApplicationConfig from @angular/core instead.
router
-
lastSuccessfulNavigation is now a signal and needs to be invoked
- Router navigations may take several additional
microtasks to complete. Tests have been found to often be highly
dependent on the exact timing of navigation completions with respect to
the microtask queue. The most common fix for tests is to ensure all
navigations have been completed before making assertions. On rare
occasions, this can also affect production applications. This can be
caused by multiple subscriptions to router state throughout the application,
both of which trigger navigations that happened to not conflict with the
previous timing.
upgrade
-
UpgradeAdapter is no longer available. Use
upgrade/static instead
zone.js
- IE/Non-Chromium Edge are not supported anymore.
Deprecations
http
-
HttpResponseBase.statusText is deprecated
common
compiler
| Commit |
Type |
Description |
| ecea909bcc |
fix |
don't choke on unbalanced parens in declaration block |
| 04dd75ba94 |
fix |
support arbitrary nesting in :host-context() |
| f54cc4f28a |
fix |
support commas in :host() argument |
| 814b2713f5 |
fix |
support complex selectors in :nth-child() |
| aad6ced0ef |
fix |
support one additional level of nesting in :host() |
compiler-cli
| Commit |
Type |
Description |
| 563dbd998c |
feat |
Adds diagnostic for misconfigured @defer triggers (#64069) |
| 0571b335b9 |
feat |
enable type checking of host bindings by default (#63654) |
| 5b55200edf |
fix |
allow value to be set on radio fields |
| ab98b2425f |
fix |
capture metadata for undecorated fields (#63957) |
| be7110342b |
fix |
disallow compiling with the emitDeclarationOnly TS compiler option enabled (#61609) |
| bd322ca410 |
fix |
do not flag custom control required inputs as missing when field is present |
| 471da8a311 |
fix |
infer type of custom field controls |
| 96cb0cffda |
fix |
infer types of signal forms set on native inputs |
| 71ab11ccf0 |
fix |
make field detection logic more robust |
| 1f389b8b97 |
fix |
missingStructuralDirective diagnostic produces false negatives (#64579) |
| 7fd3db0423 |
fix |
remove internal syntax-related flags (#63787) |
| c371251e4c |
fix |
report invalid bindings on form controls |
| 01290ab275 |
fix |
use any when checking field interface conformance |
core
elements
forms
http
language-server
| Commit |
Type |
Description |
| 3f7111a9c3 |
fix |
fix directory renaming on Windows |
language-service
| Commit |
Type |
Description |
| 89095946cf |
fix |
address potential memory leak during project creation |
| 80e00ff4e5 |
fix |
prevent interpolation from superseding block braces (#64392) |
migrations
| Commit | Type | Description |
| --------
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
- [ ] If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.