38441 Commits

Author SHA1 Message Date
Alex Rickabaugh 36ee538d3f docs: release notes for the v22.0.0-rc.2 release 2026-05-28 10:03:20 -07:00
Alex Rickabaugh 99c1eebcd5 docs: release notes for the v21.2.15 release 2026-05-28 09:53:57 -07:00
Pawel Kozlowski e2ccea9f45 docs: release notes for the v19.2.24 release 2026-05-28 16:45:57 +02:00
Pawel Kozlowski 25922d1755 docs: release notes for the v20.3.23 release 2026-05-28 16:29:09 +02:00
Angular Robot 80d6a3bcbb build: update bazel dependencies
See associated pull request for more information.
2026-05-28 16:17:44 +02:00
Angular Robot 4f79cfb2f5 build: update all github actions
See associated pull request for more information.
2026-05-28 16:09:16 +02:00
Kam 34d577f697 refactor(docs-infra): extract magic 27 in navigation-list tooltip threshold
The matTooltip on navigation list items was disabled when the label was
shorter than the literal `27`, repeated across four bindings in the
template. Lift the value to a protected readonly field so the threshold
has a name and lives in one place.
2026-05-28 16:08:08 +02:00
Alan Agius ec138c3645 fix(compiler): prevent namespaced SVG <style> elements from being stripped
Updates the template preparser to exclude namespaced SVG style tags (':svg:style') from the style elements set.

Previously, ':svg:style' elements were incorrectly classified as PreparsedElementType.STYLE, which caused them to be completely stripped from the final template DOM tree during the Render3 template transform and pushed into standard component stylesheets. By limiting the style element parsing to standard 'style' tags, namespaced SVG style tags remain safely in the template AST as normal DOM elements, preserving local SVG styling.

Closes #68977
2026-05-28 14:02:45 +02:00
Bhuvansh855 0e6cb4151c docs: fix grammar issues in resource guide 2026-05-28 13:48:01 +02:00
Angular Robot db59909c06 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-05-27 16:39:56 -07:00
Leon Senft 6981cd782a refactor(compiler): emit instructions for foreign components
When a template element matches an imported foreign component, the compiler
omits standard element instructions (`ɵɵelementStart`/`ɵɵelement`) and instead
generates a single `ɵɵforeignComponent` call. The call passes the exact foreign
import wrapper expression defined in `@Component.foreignImports` along with an
aggregated object literal containing all static attributes and property
bindings.
2026-05-27 16:39:00 -07:00
Cameron Smick 06d3758929 refactor(core): replace the type of the getDirectiveMetadata property of ExternalCoreGlobalUtils with the type of the getDirectiveMetadata property of FrameworkAgnosticGlobalUtils.
Modifying these types will allow Client-Only Wiz (and other frameworks) to implement ExternalCoreGlobalUtils & InternalCoreGlobalUtils instead of FrameworkAgnosticGlobalUtils, which includes additional properties they shouldn't implement.
2026-05-27 16:37:30 -07:00
Cameron Smick d069c55ab4 refactor(core): Split the ng global into internal and external objects
Split the `ng` global interface into two interfaces:
* `ExternalCoreGlobalUtils` includes all the functionality which has been shipped in a long-lived Angular version externally and which is subject to the versioning constraints described above.
* `InternalCoreGlobalUtils` includes internal-only functionality which has **not** been shipped in a long-lived Angular version.

This split means that all APIs in `InternalCoreGlobalUtils` can be iterated and evolved at a much faster pace. Angular DevTools can support those features, and we can make breaking changes more-or-less whenever we want. The downside is that external Angular developers cannot take advantage of those APIs or else we would be subject to the same versioning constraint we're trying to avoid here.

This means we can use `InternalCoreGlobalUtils` as a kind of "beta" channel for new DevTools APIs. Once that functionality is validated and the design is stabilized, the feature can be moved into `ExternalCoreGlobalUtils` and made available for external Angular developers when we're ready to commit to the long-lived version constraint. This will hopefully help us strike a better balance between iterating on new APIs quickly and maintaining stable APIs for external Angular users.
2026-05-27 16:37:30 -07:00
Matthieu Riegler 2acca1165d fix(http): Introduce a max buffer size for fetch requests on SSR
By default, the `FetchBackend` on SSR will limit the response body size to 10 MB.
If the response body exceeds this limit, an error will be thrown.

This default value can be configured by providing by setting the `maxResponseBodySize` in `provideServerRendering`.

This is to prevent DoS on the server when loading large files
2026-05-27 16:36:51 -07:00
Alex Rickabaugh a68a33e733 docs: release notes for the v20.3.22 release 2026-05-27 16:00:26 -07:00
Alex Rickabaugh 161c79d6cb docs: release notes for the v19.2.23 release 2026-05-27 15:50:15 -07:00
Yenya030 34090cb12e fix(http): exclude withCredentials requests from transfer cache
Update the transfer cache check to safely exclude all requests sent with the `withCredentials` flag.

By default, the HTTP transfer cache avoids caching user-specific responses to prevent sensitive data exposure or incorrect caching. While requests with explicit headers like `Cookie` or `Authorization` are excluded by default, requests can also be sent with credentials via the `withCredentials` flag without having those headers explicitly declared on the request object.

To keep user-specific responses from being cached, exclude `withCredentials` requests unconditionally, even when the `includeRequestsWithAuthHeaders` option is set to true.
2026-05-27 14:13:16 -07:00
Yenya030 ab459798d9 fix(http): skip TransferCache for cookie-bearing requests by default
Treat requests with a Cookie header like other auth-bearing requests and skip TransferCache caching them by default.

This preserves the explicit opt-in path via includeRequestsWithAuthHeaders, adds regression coverage for cookie-bearing requests, and updates the SSR guide to document the behavior.
2026-05-27 14:13:16 -07:00
Matthieu Riegler 6388675878 fix(http): prevent httpResource from leaking a subscription
Priori to this commit, in the case the subscription was emitting synchronous we were leaking the subscription. This commit fixes it.
2026-05-27 13:06:47 -07:00
Matthieu Riegler e0e902a8fa fix(core): prevent rxResource from leaking a subscription
Priori to this commit, in the case the subscription was emitting synchronous we were leaking the subscription. This commit fixes it.
2026-05-27 13:06:47 -07:00
RonGamzu 6f56202755 docs: fix typos in source code comments 2026-05-27 11:18:21 -07:00
Ricardo Chavarria 48b4625fb3 docs(docs-infra): add Spanish community translation
Add https://docs.angular.lat/ (Español) to the community translations section.
2026-05-27 11:16:53 -07:00
cexbrayat 842cf8f31b refactor(forms): mark date and limit signal forms APIs public
Promote the signal forms date validator and limit metadata APIs from experimental to public API.
2026-05-27 11:16:19 -07:00
Angular Robot b8e13872e0 build: update pnpm to v11.3.0
See associated pull request for more information.
2026-05-27 11:15:04 -07:00
Angular Robot bc9d033fe2 build: lock file maintenance
See associated pull request for more information.
2026-05-27 11:12:33 -07:00
tjshiu 30a8a2c4bd docs: modernize combobox and select guides and examples
Upgrades the guides and interactive examples to use modern signal-based APIs,
restoring the nested search dialogs and introducing datepicker grids.
2026-05-27 11:11:34 -07:00
Kam 8c3e46fb53 docs: fix preposition in libraries naming callout
The naming callout said the ng- prefix is "used from the Angular framework". Change to "used by", matching standard usage and the surrounding prose.
2026-05-27 11:09:40 -07:00
Harmeet Singh 741fcc4abf docs: clarify signals effect import source 2026-05-27 11:08:48 -07:00
Joey Perrott 983433d7f5 build: update dev-infra actions to 649c3afeaa46674507b9625537e49de54a695e2b
Updates the dev-infra action pin to the latest merge commit to resolve the retired Gemini model 404 failure.
2026-05-27 11:07:52 -07:00
Cameron Smick 23f3894c40 refactor(devtools): make the hydration property of DevToolsNode optional
Make the `hydration`` property of `DevToolsNode`` optional as frameworks like Client-Only Wiz don't have the same hydration concept as Angular and will not set one for nodes returned from `getComponentForest`.
2026-05-27 10:54:31 -07:00
Kristiyan Kostadinov abc61aaf7c fix(core): do not register dom triggers when defer blocks are in manual mode
Fixes that we were registering DOM triggers even if the `@defer` block is set up to be rendered manually. This matches the behavior we already have for timer triggers.

Fixes #68800.
2026-05-27 10:53:59 -07:00
Matthieu Riegler d7161fd431 fix(devtools): Add support for null-prototype objects
null-prototype don't inherite from the Object prototype and thus don't have constructors.

fixes #68798
2026-05-27 10:53:32 -07:00
Kam d808866f89 refactor(language-server): drop duplicate isAngularCore helpers in session
session.ts defined isAngularCore, isExternalAngularCore, and
isInternalAngularCore as byte-identical copies of the already-exported
versions in utils.ts. Only isAngularCore was used locally; the other
two were dead. handlers/template_info.ts already imports the utils
version. Remove the duplicates and import isAngularCore from utils.
2026-05-27 10:52:49 -07:00
Bhuvansh855 fdf0bf9a62 fix(docs-infra): improve inline code layout
Remove inline-block layout behavior from inline code elements
to improve wrapping and spacing in multiline documentation
paragraphs.
2026-05-27 10:52:14 -07:00
Joey Perrott a648e8e914 ci: configure setup and use pnpm in benchmark comparison workflow
The benchmark comparison workflow fails because it runs pnpm install
without setting up node and pnpm first. We configure the setup steps
manually so that checkouts from forks are supported.

Additionally, we update the benchmark comparison script (index.mts)
to use pnpm rather than hardcoded yarn commands to install
dependencies when checking out revisions.
2026-05-27 10:51:37 -07:00
Alan Agius 26f4ed5056 fix(dev-infra): draft GitHub release to support immutable releases
Update the release tool to create the GitHub release in a draft state initially and publish it only after the extension asset (.vsix) has been successfully uploaded.

GitHub shifted towards immutable releases. If a release is published instantly upon creation,the assets will not be able to be uploaded.
2026-05-27 10:50:20 -07:00
aparziale fcecf7016e docs: update CDK Overlay URL
Update CDK Overlay URL for strategy select.md and multiselect.md

Fixed #68914
2026-05-27 10:48:39 -07:00
Matthieu Riegler 7977a4b9bc docs(docs-infra): remove firebase studio launcher 2026-05-27 10:48:10 -07:00
Alan Agius e38db9b618 build: add explanation comment to confirmModulesPurge setting
Add a detailed comment to the `confirmModulesPurge: false` setting in
`pnpm-workspace.yaml`. This comment explains that this setting avoids
interactive prompts when `node_modules` needs to be purged and
recreated. This prevents package installation commands from hanging or
failing in non-interactive contexts (such as CI/CD pipelines, container
builds, or automated editor/agent environments) where stdin is
not a TTY.
2026-05-27 10:46:52 -07:00
Cheng-Hsuan Tsai 8f0ac6459e docs: update Angular Aria guides 2026-05-27 10:46:22 -07:00
Cheng-Hsuan Tsai cf2e6ec16d docs: modernize Aria guides 2026-05-27 10:45:49 -07:00
Andrew Scott fa7580061b fix(zone.js): avoid type error on custom object rejection with rejection property
Ensure that when a custom object with a 'rejection' property is thrown as a raw promise rejection, the unhandled promise rejection error logger does not crash with a TypeError while trying to access undefined zone properties.

Also wrap microtask queue draining and task frame counter updates with defensive try-finally blocks to guarantee internal scheduler states are properly reset under any potential call stack exception unwinding scenarios.
2026-05-27 10:45:13 -07:00
SkyZeroZx 31399c2171 fix(service-worker): Preserves HTTP cache mode in asset group requests
Ensures explicit HTTP cache mode from incoming requests is forwarded and maintained when creating fetch requests for assets, aligning with expected fetch behavior and preventing unintended cache handling.
2026-05-27 10:43:14 -07:00
SkyZeroZx 5b0e9663e5 fix(service-worker): Preserves explicit 'credentials: omit' in asset requests
Ensures that explicitly provided `credentials: 'omit'` options are preserved
when creating new requests, preventing unintended credential inclusion.
2026-05-27 10:43:14 -07:00
Alan Agius ce1c0f7ab9 fix(core): normalize tag names in runtime i18n attribute security context lookup (#68868)
Normalize namespaced tag names (e.g., :xhtml:a to a) inside i18nResolveSanitizer before looking up their security context. This ensures custom namespaced tag attributes undergo correct translation sanitization at runtime.

PR Close #68868
2026-05-27 10:40:22 -07:00
Alan Agius 4d79a52b2f fix(compiler): normalize tag names with custom namespaces in DomElementSchemaRegistry (#68868)
Custom XML/XHTML namespaced elements (e.g., <xhtml:a>) fall back to the standard HTML namespace during element creation at compile-time/runtime. However, their property and security context lookups inside the schema registry were incorrectly performed using the full namespaced tag name (e.g., :xhtml:a), which bypassed the default a|href sanitization registry and incorrectly returned SecurityContext.NONE instead of SecurityContext.URL.

This commit introduces tag name normalization inside DomElementSchemaRegistry for custom namespaces (other than the built-in svg and math namespaces). Custom namespaced tag names are now normalized to their simple HTML element counterparts for all registry queries, ensuring that correct property schema validation and dynamic security sanitization rules (such as URL sanitization) are enforced at runtime.

PR Close #68868
2026-05-27 10:40:22 -07:00
Alan Agius 75033d2001 fix(compiler): sanitize dynamic href and xlink:href bindings on SVG a elements (#68868)
Dynamic bindings to `href` and `xlink:href` attributes on SVG `<a>` elements (`<svg:a>`) were previously unmapped in the DOM security schema. As a result, they bypassed sanitization completely, creating a potential XSS vulnerability if bound to untrusted user inputs (e.g., `javascript:` URLs).

This fix mitigates this risk by:

1. Registering `href` and `xlink:href` on `<svg:a>` elements under the `SecurityContext.URL` context in both the compiler and core DOM security schemas.

2. Enabling template compilation to output runtime URL sanitization checks (`ɵɵsanitizeUrl`) on these attributes.

3. Adding regression and verification test cases to ensure dynamic SVG link bindings are safely sanitized at runtime while static values are correctly allowed.

PR Close #68868
2026-05-27 10:40:22 -07:00
Alan Agius 861d37e669 build: update minimum supported Node.js versions
Update the minimum supported Node.js versions for v22 and v24. Specifically, the minimum supported version for Node.js v22 is bumped to v22.22.3, and for v24 it is bumped to v24.15.0. This ensures compatibility with newer runtime versions and coordinates ranges across monorepo packages.
2026-05-27 10:39:17 -07:00
Matthieu Riegler e5f3b9def8 refactor(core): extend sanitization test coverage
This ensures that #68576 actually fixed a sanitization issue on uppercase elements/attributes
2026-05-27 10:38:11 -07:00
Matthieu Riegler 140c4d04cb fix(platform-server): prevent SSRF bypasses via backslash URLs in HttpClient
Encoding backslashes ensures that they are not normalized to slashes and where they could generate a protocol relative URL.
2026-05-27 10:23:29 -07:00