From 8aaefa7b634b7efef404cc40a87b2c02112c597d Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Fri, 4 Apr 2025 18:17:03 -0700 Subject: [PATCH] docs: expand Angular's browser policy by adopting the "widely available" Baseline (#60754) This effectively expands Angular's existing browser support policy to be defined as browsers covered by the "widely available" Baseline (effectively browsers released <30 months ago). Each major version will choose a date shortly before release and pin its version support to the "widely available" Baseline of that date. For now, I'm arbitrarily picking March 31st as I try to land the general infra and policy change, but we'll likely update the exact date a little closer to the v20 RC. PR Close #60754 --- adev/src/content/reference/versions.md | 19 +++++++++++++++---- adev/src/content/tools/cli/build.md | 16 ++-------------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/adev/src/content/reference/versions.md b/adev/src/content/reference/versions.md index 00bc677acbe..5495926bda2 100644 --- a/adev/src/content/reference/versions.md +++ b/adev/src/content/reference/versions.md @@ -69,8 +69,21 @@ Until Angular v9, Angular and Angular CLI versions were not synced. ## Browser support -Angular supports most recent browsers. -This includes the following specific versions: +Angular uses the ["widely available" Baseline](https://web.dev/baseline) to define browser +support. For each major version, Angular supports browsers included in the Baseline of a +chosen date near the release date for that major. + +The "widely available" Baseline includes browsers released less than 30 months (2.5 years) +of the chosen date within Baseline's core browser set (Chrome, Edge, Firefox, Safari) and +targets supporting approximately 95% of web users. + +| Angular | Baseline Date | Browser Set | +| ------- | ------------- | --------------------------- | +| v20 | 2025-03-31 | [Browser Set][browsers-v20] | + +[browsers-v20]: https://browsersl.ist/#q=Chrome+%3E%3D+105%0AChromeAndroid+%3E%3D+105%0AEdge+%3E%3D+105%0AFirefox+%3E%3D+104%0AFirefoxAndroid+%3E%3D+104%0ASafari+%3E%3D+16%0AiOS+%3E%3D+16 + +Angular versions prior to v20 support the following specific browser versions: | Browser | Supported versions | | :------ | :------------------------------------------ | @@ -81,8 +94,6 @@ This includes the following specific versions: | iOS | 2 most recent major versions | | Android | 2 most recent major versions | -HELPFUL: Angular's continuous integration process runs unit tests of the framework on all of these browsers for every pull request, using [Sauce Labs](https://saucelabs.com). - ## Polyfills Angular is built on the latest standards of the web platform. diff --git a/adev/src/content/tools/cli/build.md b/adev/src/content/tools/cli/build.md index 41eb4b2c7ef..0c7c792ece2 100644 --- a/adev/src/content/tools/cli/build.md +++ b/adev/src/content/tools/cli/build.md @@ -132,21 +132,9 @@ If the best option is to use a CommonJS dependency, you can disable these warnin The Angular CLI uses [Browserslist](https://github.com/browserslist/browserslist) to ensure compatibility with different browser versions. Depending on supported browsers, Angular will automatically transform certain JavaScript and CSS features to ensure the built application does not use a feature which has not been implemented by a supported browser. However, the Angular CLI will not automatically add polyfills to supplement missing Web APIs. Use the `polyfills` option in `angular.json` to add polyfills. -Internally, the Angular CLI uses the below default `browserslist` configuration which matches the [browsers that are supported](reference/versions#browser-support) by Angular. +By default, the Angular CLI uses a `browserslist` configuration which [matches browsers supported by Angular](reference/versions#browser-support) for the current major version. - - -last 2 Chrome versions -last 1 Firefox version -last 2 Edge major versions -last 2 Safari major versions -last 2 iOS major versions -last 2 Android major versions -Firefox ESR - - - -To override the internal configuration, run [`ng generate config browserslist`](cli/generate/config), which generates a `.browserslistrc` configuration file in the project directory. +To override the internal configuration, run [`ng generate config browserslist`](cli/generate/config), which generates a `.browserslistrc` configuration file in the project directory matching Angular's supported browsers. See the [browserslist repository](https://github.com/browserslist/browserslist) for more examples of how to target specific browsers and versions. Avoid expanding this list to more browsers. Even if your application code more broadly compatible, Angular itself might not be.