38441 Commits

Author SHA1 Message Date
Angular Robot 4f048e7de3 build: update dependency typescript to v6.0.3
See associated pull request for more information.
2026-05-04 13:05:58 -07:00
Alex Rickabaugh 0ea50ffe5a fix(forms): ensure debounced async validators produce pending status during debounce
When using a debounced async validator, the pending status from the internal
debounced resource was not flowing through to the resource created by the
factory. Replicate the 'chain' logic using the new privately exported ɵchain
function to propagate the loading status correctly.

Fixes #68105
2026-05-04 13:03:07 -07:00
Andrew Scott c84642ac16 feat(router): add unmatchedInputBehavior option to componentInputBinding
Introduce a new configuration option `unmatchedInputBehavior` to the `componentInputBinding` feature. This option allows users to configure the behavior when a component input is not matched by any key in the router data.

The available values are:
- 'alwaysUndefined': (Default) Always binds undefined to unmatched inputs.
- 'undefinedIfStale': Binds undefined only if the input was previously available in the router data for the active route in the outlet.

This feature addresses concerns raised in #63835 and #52946 regarding the retention of default values for inputs that were never targeted by the router, while still ensuring that stale data is cleared when a parameter is removed.
2026-05-01 16:04:52 -07:00
Angular Robot aab7dd48c0 build: update dependency bazel_lib to v3.3.1
See associated pull request for more information.
2026-05-01 16:04:14 -07:00
Sam Severance cd20dd07ce refactor(forms): improve clarity in SelectMultipleControlValueAccessor.writeValue
Rename the _optionMap forEach parameter from `o` to `id` and tighten its
type from `any` to `string`, removing the now-redundant `.toString()` call.
2026-05-01 16:02:34 -07:00
Matthieu Riegler b723734b72 refactor(migrations): fix incremental-hydration migration
Migration is now idempotent

fixes #68500
2026-05-01 16:01:28 -07:00
Nikolaos G. Ntaiko 429c665901 Fix typo in computed signals section 2026-05-01 16:00:48 -07:00
Matthieu Riegler 7c8c3347ef refactor(http): Add reportUploadProgress & reportDownloadProgress options
In order to raise an error on upload progress on the `FetchBackend`, we split `reportProgress` into 2 respective properties.

DEPRECATED: The `reportProgress` option is deprecated please use `reportUploadProgress` &  `reportDownloadProgress` instead.
2026-05-01 16:00:00 -07:00
Matthieu Riegler d91070ee4f refactor(devtools): cleanup
This are not the droids you are looking for.
2026-05-01 15:59:40 -07:00
tmpln 0ea27f4e65 fix(core): visit ng-let expression value in signal migration schematics
Before this fix, references to inputs inside @let statements were not
accounted for.
2026-05-01 15:59:15 -07:00
Kam c2f7403774 fix(docs-infra): exempt form validator names from API auto-linking
Add required, pattern, min, max, minLength and maxLength to LINK_EXEMPT
so FieldState property names stop auto-linking to the validator
functions of the same name.
2026-05-01 15:58:43 -07:00
Matthew Beck 0fa8f98f4f test: add NgModule compliance test with 'bootstrap' & local compilation
There was not a test demonstrating local compilation with the
'bootstrap' param on NgModule. This test adds one, among other NgModule
fields in one. These other fields are broadly covered already, but this
rolls them into one test exercising all fields.
2026-05-01 15:58:05 -07:00
Angular Robot fd8568f3c5 build: update alessbell/pull-request-comment-branch action to v2
See associated pull request for more information.
2026-05-01 15:57:44 -07:00
Angular Robot 9c7cbcd263 build: update all non-major dependencies
See associated pull request for more information.
2026-05-01 15:57:16 -07:00
Angular Robot 7ef1881d12 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2026-05-01 15:56:08 -07:00
SkyZeroZx 11721509b0 refactor(core): Makes @defer(hydrate ...) runtime tree-shakable
This commit updates `@defer` logic related to incremental hydration to be tree-shakable.

If hydrate triggers are used in a `@defer` block, the compiler emits a single top-level call to `ɵɵenableIncrementalHydrationRuntime`, placed once per create block before the first `ɵɵdefer` that requires it.

As a result, the incremental hydration runtime is only included in the bundle when hydrate is explicitly used.
2026-05-01 15:54:55 -07:00
Georgi Serev 9d803c51f4 feat(devtools): create a new settings menu
Create a new settings menu with more available space for new options and better organization and classification.
2026-05-01 15:54:26 -07:00
cexbrayat 1ab654cf28 fix(core): allow explicit read generic with signal input transforms
Using explicit single generic arguments with transforms (for example, input<boolean>(false, {transform: booleanAttribute})) previously failed overload resolution.

Before this fix, type-checking produced:
````
✘ [ERROR] TS2769: No overload matches this call.
  Overload 1 of 5, '(initialValue: boolean, opts?: InputOptionsWithoutTransform<boolean> | undefined): InputSignal<boolean>', gave the following error.
    Type '(value: unknown) => boolean' is not assignable to type 'undefined'.
  Overload 2 of 5, '(initialValue: undefined, opts: InputOptionsWithoutTransform<boolean>): InputSignal<boolean | undefined>', gave the following error.
    Argument of type 'true' is not assignable to parameter of type 'undefined'. [plugin angular-compiler]
```

This change adds specialized overloads for explicit read generics.
2026-05-01 15:53:56 -07:00
Alex Rickabaugh a4145dea06 Revert "fix(language-service): Add support for @Input with transforms"
This reverts commit dc9c72da9b. Reason: breaking
targets in g3.
2026-05-01 11:05:56 -07:00
Andrew Kushnir 2b624580e5 ci: update PullApprove config
This commit updates the PullApprove config to keep myself as a reviewer, but do not auto-assign PR reviews.
2026-04-30 16:13:18 -07:00
SkyZeroZx c5c35d992c docs: update @Service remove preview warning 2026-04-30 16:12:23 -07:00
Charles Lyding d4248ab89b docs: update angular developer skill and document migrations
Update the MCP documentation to reflect the removal of find_examples and modernize tools from the server. Add a new file documenting automatic migrations as the preferred alternative.
2026-04-30 16:11:50 -07:00
Alan Agius 116f55ce30 refactor(docs-infra): use Node.js temp APIs in deploy action
Replaces the 'tmp' package with native 'node:os' and 'node:fs' APIs to create temporary files in the system temp directory.
2026-04-30 16:10:54 -07:00
Alan Agius 0fcc120a95 refactor: remove tools/contributing-stats
Removes the tools/contributing-stats directory which is no longer used.
2026-04-30 16:10:54 -07:00
Alan Agius 62d19b5531 refactor: remove tools/legacy-saucelabs
Removes the tools/legacy-saucelabs directory which is no longer used.
2026-04-30 16:10:54 -07:00
Alan Agius b7230f398c refactor: remove karma-js.conf.js
Removes the karma-js.conf.js file and its reference in BUILD.bazel.
2026-04-30 16:10:54 -07:00
Alan Agius 9fa673aeed refactor: remove .clang-format
Removes the .clang-format file from the repository.
2026-04-30 16:10:54 -07:00
Matthieu Riegler 8f94892a71 docs: add section about variable scopes
This is mostly a copy of the section we had on aio.
2026-04-30 16:10:28 -07:00
Kristiyan Kostadinov 7aad302c3e fix(core): mark service decorator as stable
Marks `@Service` as stable for v22.
2026-04-30 16:08:27 -07:00
Matthieu Riegler 28d38b582c refactor(common): update deprecation message
The old control flow is very much not recommended but we're not ready to remove it in v22.
2026-04-30 16:06:57 -07:00
Angular Robot ebffd80ce4 build: update all github actions
See associated pull request for more information.
2026-04-30 15:55:07 -07:00
Matthieu Riegler bc637a304f refactor(core): add support for default exports to injectAsync
ex:
```
await injectAsync(() => import('./test_service'))
```

We'll be reusing the features that were already used by the router to support components lazy-loading.
2026-04-30 15:53:07 -07:00
Angular Robot 9dc4e44eea build: update cross-repo angular dependencies
See associated pull request for more information.
2026-04-30 15:52:21 -07:00
Matthieu Riegler dc9c72da9b fix(language-service): Add support for @Input with transforms
Prior to this change @Input with transforms were not linked by language service and you couldn't navigate on it.
2026-04-30 15:51:48 -07:00
Alan Agius 9d7a609458 fix(core): validate security-sensitive attributes in i18n bindings
Ensures that security-sensitive attributes (e.g., sandbox, allow) are correctly validated when applied through i18n-* dynamic attribute bindings, preventing potential policy bypasses.

Closes #68418
2026-04-30 15:47:12 -07:00
Andrew Scott d919f9a13e refactor: attempt stronger automatic comment blocking
Updates the PR review skill to have stronger language against automatic comment posting
without explicit approval
2026-04-30 15:45:40 -07:00
hawkgs 9fa4be9d09 test(zone.js): vitest patch for testing (#68395)
Test `fakeAsync` API in Vitest when Zone.js `vitest` patch applied.

PR Close #68395
2026-04-30 15:44:35 -07:00
Charles Lyding 62c6e3b7ee feat(zone.js): support vitest patching in zone.js/testing (#68395)
To support `fakeAsync` usage while using `vitest` as a test runner, Zone.js
now provides patching when using the `zone.js/testing` package import.
This patching is similar to that of the existing jasmine, mocha, and jest
functionality.

PR Close #68395
2026-04-30 15:44:35 -07:00
wowDAS Markus Ramšak 6aa40f6c04 docs: fix typo in CHANGELOG.md 2026-04-30 15:43:30 -07:00
Matthieu Riegler 6413e703fa refactor(http): refactor http options
Use shared types to ease maintenance of the http client apis.

fixes #64513
2026-04-30 15:42:32 -07:00
Alex Rickabaugh e0536091f5 perf(forms): optimize reactivity by using shallow array equality
Add `shallowArrayEquals` to computed signals returning arrays of errors or reasons in Signal Forms. This prevents unnecessary downstream invalidations when the content of the arrays remains unchanged.
2026-04-30 15:41:45 -07:00
Sonu Kapoor 4c9afb68a3 fix(core): respect ngSkipHydration on components with projectable nodes in LContainers
When a component is created dynamically via ViewContainerRef.createComponent
and receives projectable nodes (e.g. raw DOM nodes or embedded view root nodes),
applying ngSkipHydration to its host element did not prevent NG0503 from being
thrown during SSR serialization.

The root cause is an asymmetry in the serialization pipeline. For inline child
components, serializeLView already guards the annotateHostElementForHydration
call with a ngSkipHydration attribute check, so the component's lView is never
serialized when hydration is opted out. For components hosted inside an
LContainer (created via ViewContainerRef.createComponent), serializeLContainer
called serializeLView unconditionally — bypassing that guard entirely. When
serializeLView then encountered a projection slot backed by a raw DOM node
array, it threw NG0503 regardless of the ngSkipHydration flag.

The fix adds the same guard inside serializeLContainer before calling
serializeLView: if the child lView belongs to a component whose host element
carries ngSkipHydration, the lView serialization is skipped. This matches the
existing behavior for inline components and allows the documented workaround to
actually work for dynamically created ones.

Fixes #67928
2026-04-29 16:09:14 -07:00
Andrew Scott 2eae497a04 feat(compiler-cli): support external TCBs with copied content in specific mode
This change adds a new  that allows environments that cannot support inline TCBs (such as the language service or source-to-source transforms where TS compilation and emit are downstream) to still perform template type checking.

    Instead of inlining the TCB into the original source file when non-exported symbols are referenced, we now copy the file content to the .ngtypecheck.ts shim file and generate the external TCB there, if requested by the inlining mode. This preserves the local scope of the original file while keeping the original file unmodified.
2026-04-29 16:08:33 -07:00
Alon Mishne 12d4844c8b release: cut the v22.0.0-next.10 release v22.0.0-next.10 2026-04-29 16:03:12 -07:00
Alon Mishne 662560effc docs: release notes for the v21.2.11 release 2026-04-29 15:40:46 -07:00
Kam 13c0422029 docs(docs-infra): open update guide external links in new tabs
External links in the update guide opened inconsistently. Override
marked's link renderer to add `target="_blank" rel="noopener noreferrer"`
to external anchors and apply the `external-link-with-icon` mixin for
the icon. Convert raw HTML and bare URLs in recommendations.ts to
markdown so they all flow through the renderer.
2026-04-29 13:59:42 -07:00
Kam 2101b13653 docs: document allowedHosts SSR requirement in v21 update guide
The GHSA-x288-3778-4hhx patch requires `allowedHosts` on
`CommonEngine` or SSR silently falls back to CSR. Add a checklist
item to the v21 update guide.
2026-04-29 13:59:12 -07:00
Angular Robot 82890dd9f5 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2026-04-29 13:58:03 -07:00
Andrew Scott af24a4ae3a fix(vscode-extension): Look for tsdk override in the new js/ts.tsdk.path setting
recent versions of vscode use js/ts.tsdk.path rather than typescript.tsdk

relates to #68423
2026-04-29 13:39:15 -07:00
Bhuvansh855 9f7d41f296 docs: improve clarity in dependency injection guide 2026-04-29 13:38:17 -07:00