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
This commit is contained in:
Doug Parker 2025-04-04 18:17:03 -07:00 committed by Pawel Kozlowski
parent 61012cb239
commit 8aaefa7b63
2 changed files with 17 additions and 18 deletions

View file

@ -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.

View file

@ -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.
<docs-code language="text">
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
</docs-code>
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.