# @mdn/browser-compat-data release notes (v1.x)

## [v1.1.2](https://github.com/mdn/browser-compat-data/releases/tag/v1.1.2)

October 29, 2020

**This is the final release under the name `mdn-browser-compat-data`.**
This package is now published as `@mdn/browser-compat-data`. For more information, read _[Upgrading from `mdn-browser-compat-data` 1.1 to `@mdn/browser-compat-data` 2.0.x](https://github.com/mdn/browser-compat-data/blob/v1.1.2/UPGRADE-2.0.x.md)_.

**Notable changes**

- Data about how the aspect ratio is computed for some HTML elements has been moved from the `css.properties.aspect-ratio.internal-value` feature to `aspect_ratio_computed_from_attributes` subfeatures of the affected HTML elements ([#6918](https://github.com/mdn/browser-compat-data/issues/6918))
- The following features have been removed because they were never implemented:
  - `api.BudgetService.getBudget` ([#6924](https://github.com/mdn/browser-compat-data/issues/6924))
  - `api.BudgetService.getCost` ([#6924](https://github.com/mdn/browser-compat-data/issues/6924))
  - `api.BudgetState` ([#6924](https://github.com/mdn/browser-compat-data/issues/6924))
  - `api.DocumentOrShadowRoot.nodeFromPoint` ([#6929](https://github.com/mdn/browser-compat-data/issues/6929))
  - `api.DocumentOrShadowRoot.nodesFromPoint` ([#6929](https://github.com/mdn/browser-compat-data/issues/6929))
  - `api.Window.restore` ([#6987](https://github.com/mdn/browser-compat-data/issues/6987))

**Statistics**

- 22 contributors have changed 169 files with 4,226 additions and 2,883 deletions in 174 commits ([`v1.1.1...v1.1.2`](https://github.com/mdn/browser-compat-data/compare/v1.1.1...v1.1.2))
- 12,266 total features
- 721 total contributors
- 3,087 total stargazers

## [v1.1.1](https://github.com/mdn/browser-compat-data/releases/tag/v1.1.1)

October 15, 2020

**Deprecation notice**
This package is now published as `@mdn/browser-compat-data`. For more information, read _[Upgrading from `mdn-browser-compat-data` 1.1 to `@mdn/browser-compat-data` 2.0.x](https://github.com/mdn/browser-compat-data/blob/v1.1.1/UPGRADE-2.0.x.md)_.

**Statistics**

- 14 contributors have changed 52 files with 1,624 additions and 1,054 deletions in 49 commits ([`v1.1.0...v1.1.1`](https://github.com/mdn/browser-compat-data/compare/v1.1.0...v1.1.1))
- 12,246 total features
- 710 total contributors
- 3,049 total stargazers

## [v1.1.0](https://github.com/mdn/browser-compat-data/releases/tag/v1.1.0)

October 8, 2020

**Notice**

This package is now published as `@mdn/browser-compat-data`. For more information, read _[Upgrading from `mdn-browser-compat-data` 1.1 to `@mdn/browser-compat-data` 2.0.x](https://github.com/mdn/browser-compat-data/blob/v1.1.0/UPGRADE-2.0.x.md)_.

**Notable changes**

- Deprecation: if you require this package (with the `mdn-` package name), then a warning will be emitted ([#6777](https://github.com/mdn/browser-compat-data/issues/6777))
- Deprecation: if you're running Node.js version 8, then a warning will be emitted ([#6777](https://github.com/mdn/browser-compat-data/issues/6777))
- Feature moves and removals:
  - `api.DOMTokenList.remove_whitespace_and_duplicates` has been split into `api.DOMTokenList.remove_duplicates` and `api.DOMTokenList.trim_whitespace` ([#6691](https://github.com/mdn/browser-compat-data/issues/6691))
  - `api.AudioContext.createConstantSource` was removed because it duplicated `api.BaseAudioContext.createConstantSource` ([#6799](https://github.com/mdn/browser-compat-data/issues/6799))
  - `api.Document.contains` was removed because it duplicated `api.Node.contains` ([#6850](https://github.com/mdn/browser-compat-data/issues/6850))

**Statistics**

- 10 contributors have changed 58 files with 1,795 additions and 1,495 deletions in 39 commits ([`v1.0.40...v1.1.0`](https://github.com/mdn/browser-compat-data/compare/v1.0.40...v1.1.0))
- 12,243 total features
- 706 total contributors
- 3,030 total stargazers

## [v1.0.40](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.40)

October 1, 2020

**Notice**: In the future, this package will be published as `@mdn/browser-compat-data`. For more information, read [#6640](https://github.com/mdn/browser-compat-data/issues/6640).

**Statistics**

- 10 contributors have changed 20 files with 496 additions and 271 deletions in 11 commits ([`v1.0.39...v1.0.40`](https://github.com/mdn/browser-compat-data/compare/v1.0.39...v1.0.40))
- 12,242 total features
- 704 total contributors
- 3,016 total stargazers

## [v1.0.39](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.39)

September 24, 2020

**Notice**: In the future, this package will be published as `@mdn/browser-compat-data`. To give feedback on this and other upcoming breaking changes, please read [#6640](https://github.com/mdn/browser-compat-data/issues/6640).

**Notable changes**

- `api.Element.name` was removed because it's actually implemented as part of several `HTML*Element.name` interfaces ([#6751](https://github.com/mdn/browser-compat-data/issues/6751) and [#6683](https://github.com/mdn/browser-compat-data/issues/6683))
- `api.Element.accessKey` was removed because there's no indication that the feature was implemented in any browser (in contrast to `api.HTMLElement.accessKey`) ([#6746](https://github.com/mdn/browser-compat-data/issues/6746))

**Statistics**

- 10 contributors have changed 76 files with 3,678 additions and 2,715 deletions in 19 commits ([`v1.0.38...v1.0.39`](https://github.com/mdn/browser-compat-data/compare/v1.0.38...v1.0.39))
- 12,242 total features
- 701 total contributors
- 2,999 total stargazers

## [v1.0.38](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.38)

September 17, 2020

**Notice**: In the future, this package will be published under a new, scoped name. To give feedback on this and other upcoming breaking changes, please read [#6640](https://github.com/mdn/browser-compat-data/issues/6640).

**Notable changes**

- `css.at-rules.media.light-level` was removed because it was never implemented in any browser and has been dropped from the Media Queries specification ([#6706](https://github.com/mdn/browser-compat-data/issues/6706))
- `api.CSSTransition.CSSTransition` was removed because it was never actually implemented in any browser ([#6707](https://github.com/mdn/browser-compat-data/issues/6707))

**Statistics**

- 12 contributors have changed 161 files with 1,348 additions and 1,146 deletions in 25 commits ([`v1.0.37...v1.0.38`](https://github.com/mdn/browser-compat-data/compare/v1.0.37...v1.0.38))
- 12,195 total features
- 699 total contributors
- 2,987 total stargazers

## [v1.0.37](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.37)

September 10, 2020

**Notice**: In the future, this package will be published under a new, scoped name. To give feedback on this and other upcoming breaking changes, please read [#6640](https://github.com/mdn/browser-compat-data/issues/6640).

**Notable changes**

- CSS property data for `-ms-grid-columns` and `-ms-grid-row` was restructured ([#6599](https://github.com/mdn/browser-compat-data/issues/6599))
  - `css.properties.-ms-grid-columns` was removed (its data is now reflected as `"alternative_name"` data in `css.properties.grid-template-columns`)
  - `css.properties.-ms-grid-rows` was removed (its data is now reflected as `"alternative_name"` data in `css.properties.grid-template-rows`)
- `api.Console.timestamp` is now `api.Console.timeStamp` to correct a typo ([#6650](https://github.com/mdn/browser-compat-data/issues/6650))
- `api.Gamepad.Gamepad` was removed because the constructor never existed ([#6664](https://github.com/mdn/browser-compat-data/issues/6664))

**Statistics**

- 10 contributors have changed 50 files with 965 additions and 720 deletions in 18 commits ([`v1.0.36...v1.0.37`](https://github.com/mdn/browser-compat-data/compare/v1.0.36...v1.0.37))
- 12,195 total features
- 696 total contributors
- 2,968 total stargazers

## [v1.0.36](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.36)

September 3, 2020

**News**

In the future, this package will be published under a new, scoped name. To give feedback on this and other upcoming breaking changes, please read [#6640](https://github.com/mdn/browser-compat-data/issues/6640).

**Notable changes**

- `svg.elements.discard.begin` and `svg.elements.discard.href` were removed as dubious ([#6600](https://github.com/mdn/browser-compat-data/issues/6600))

**Statistics**

- 27 contributors have changed 173 files with 1,712 additions and 13,220 deletions in 61 commits ([`v1.0.35...v1.0.36`](https://github.com/mdn/browser-compat-data/compare/v1.0.35...v1.0.36))
- 12,198 total features
- 695 total contributors
- 2,962 total stargazers

## [v1.0.35](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.35)

August 20, 2020

**Notable changes**

- `api.CSS.wmin` is now `api.CSS.vmin` to correct a typo ([#6507](https://github.com/mdn/browser-compat-data/issues/6507))
- `api.RTCStatsEvent` was removed because it never shipped in any browser ([#6516](https://github.com/mdn/browser-compat-data/issues/6516))
- `api.Response.trailer` was removed because it never shipped in any browser ([#6543](https://github.com/mdn/browser-compat-data/issues/6543))

**Statistics**

- 20 contributors have changed 34 files with 1,024 additions and 1,070 deletions in 39 commits ([`v1.0.34...v1.0.35`](https://github.com/mdn/browser-compat-data/compare/v1.0.34...v1.0.35))
- 12,190 total features
- 684 total contributors
- 2,914 total stargazers

## [v1.0.34](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.34)

August 6, 2020

**Notable changes**

- None

**Statistics**

- 10 contributors have changed 36 files with 884 additions and 156 deletions in 29 commits ([`v1.0.33...v1.0.34`](https://github.com/mdn/browser-compat-data/compare/v1.0.33...v1.0.34))
- 12191 total features
- 675 total contributors
- 2881 total stargazers

## [v1.0.33](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.33)

July 30, 2020

**Statistics**

- 12 contributors have changed 27 files with 720 additions and 103 deletions in 19 commits ([`v1.0.32...v1.0.33`](https://github.com/mdn/browser-compat-data/compare/v1.0.32...v1.0.33))
- 12178 total features
- 673 total contributors
- 2869 total stargazers

## [v1.0.32](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.32)

July 23, 2020

**Notable changes**

- Updated our data guideline for irrelevant features to allow data removal if "a feature is unsupported in all releases in the past five years.".
- Removed CSS data that meets the new criteria in https://github.com/mdn/browser-compat-data/pull/6418 and https://github.com/mdn/browser-compat-data/pull/6407.
- Data for `FinalizationRegistry.prototype.cleanupSome` has been removed in https://github.com/mdn/browser-compat-data/pull/6426 due to the method not being standardized and available yet.

**Statistics**

- 13 contributors have changed 38 files with 249 additions and 1984 deletions in 19 commits ([`v1.0.31...v1.0.32`](https://github.com/mdn/browser-compat-data/compare/v1.0.31...v1.0.32))
- 12167 total features
- 667 total contributors
- 2855 total stargazers

## [v1.0.31](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.31)

July 16, 2020

**Notable changes**

- none

**Statistics**

- 12 contributors have changed 13 files with 408 additions and 61 deletions in 15 commits ([`v1.0.30...v1.0.31`](https://github.com/mdn/browser-compat-data/compare/v1.0.30...v1.0.31))
- 12196 total features
- 664 total contributors
- 2835 total stargazers

## [v1.0.30](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.30)

July 9, 2020

**Notable changes**

- The data for `api.CSSMathNegate.values` is now at `api.CSSMathNegate.value` (typo fix in https://github.com/mdn/browser-compat-data/pull/6371)

**Statistics**

- 5 contributors have changed 13 files with 411 additions and 25 deletions in 11 commits ([`v1.0.29...v1.0.30`](https://github.com/mdn/browser-compat-data/compare/v1.0.29...v1.0.30))
- 12189 total features
- 663 total contributors
- 2825 total stargazers

## [v1.0.29](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.29)

July 2, 2020

**Notable changes**

- none

**Statistics**

- 18 contributors have changed 50 files with 833 additions and 311 deletions in 29 commits ([`v1.0.28...v1.0.29`](https://github.com/mdn/browser-compat-data/compare/v1.0.28...v1.0.29))
- 12181 total features
- 662 total contributors
- 2808 total stargazers

## [v1.0.28](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.28)

June 25, 2020

**Notable changes**

- none

**Statistics**

- 7 contributors have changed 11 files with 95 additions and 46 deletions in 9 commits ([`v1.0.27...v1.0.28`](https://github.com/mdn/browser-compat-data/compare/v1.0.27...v1.0.28))
- 12172 total features
- 654 total contributors
- 2784 total stargazers

## [v1.0.27](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.27)

June 22, 2020

**Notable changes**

- Safari 14 supports WebExtensions
- The following Streams API constructor data points have been removed ([#6314](https://github.com/mdn/browser-compat-data/issues/6314)):
  - `api.ReadableByteStreamController.ReadableByteStreamController`
  - `api.ReadableStreamBYOBRequest.ReadableStreamBYOBRequest`
  - `api.ReadableStreamDefaultController.ReadableStreamDefaultController`
  - `api.WritableStreamDefaultController.WritableStreamDefaultController`

**Statistics**

- 4 contributors have changed 112 files with 4455 additions and 364 deletions in 7 commits ([`v1.0.26...v1.0.27`](https://github.com/mdn/browser-compat-data/compare/v1.0.26...v1.0.27))
- 12172 total features
- 651 total contributors
- 2774 total stargazers

## [v1.0.26](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.26)

June 18, 2020

**Notable changes**

- none

**Statistics**

- 6 contributors have changed 25 files with 1501 additions and 398 deletions in 18 commits ([`v1.0.25...v1.0.26`](https://github.com/mdn/browser-compat-data/compare/v1.0.25...v1.0.26))
- 12170 total features
- 651 total contributors
- 2768 total stargazers

## [v1.0.25](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.25)

June 11, 2020

**Notable changes**

- The `javascript.builtin.Intl.Collator.caseFirst` data has been moved to `javascript.builtin.Intl.Collator.Collator.caseFirst` ([#6253](https://github.com/mdn/browser-compat-data/issues/6253))
- JS operator data has been moved to remove unnecessary group trees ([#6246](https://github.com/mdn/browser-compat-data/issues/6246), [#6270](https://github.com/mdn/browser-compat-data/issues/6270), [#6272](https://github.com/mdn/browser-compat-data/issues/6272), [#6276](https://github.com/mdn/browser-compat-data/issues/6276)).
  - These JS operator groups have been dissolved: comparison, bitwise, assignment, arithmetic.
  - Find the operators now directly under the operators tree, for example: `javascript.operators.bitwise.and` -> `javascript.operators.bitwise_and`

**Statistics**

- 17 contributors have changed 81 files with 4690 additions and 2291 deletions in 32 commits ([`v1.0.24...v1.0.25`](https://github.com/mdn/browser-compat-data/compare/v1.0.24...v1.0.25))
- 12166 total features
- 637 total contributors
- 2758 total stargazers

## [v1.0.24](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.24)

June 4, 2020

**Notable changes**

- The following data point has been removed:
  - `css.selectors.read-write.matches_editable_elements` ([#6244](https://github.com/mdn/browser-compat-data/issues/6244))
- The following data has been moved ([#6235](https://github.com/mdn/browser-compat-data/issues/6235)):
  - `javascript.operators.logical.and` -> `javascript.operators.logical_and`
  - `javascript.operators.logical.or` -> `javascript.operators.logical_or`
  - `javascript.operators.logical.not` -> `javascript.operators.logical_not`

**Statistics**

- 15 contributors have changed 45 files with 1304 additions and 498 deletions in 22 commits ([`v1.0.23...v1.0.24`](https://github.com/mdn/browser-compat-data/compare/v1.0.23...v1.0.24))
- 12129 total features
- 629 total contributors
- 2741 total stargazers

## [v1.0.23](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.23)

May 28, 2020

**Notable changes**

- The following [irrelevant features](./docs/data-guidelines/index.md#removal-of-irrelevant-features) have been removed:
  - `javascript.builtins.String.quote` ([#6207](https://github.com/mdn/browser-compat-data/issues/6207))
  - `javascript.builtins.String.replace.flags` ([#6206](https://github.com/mdn/browser-compat-data/issues/6206))
  - `api.LocalFileSystem` and `api.LocalFileSystemSync` ([#6163](https://github.com/mdn/browser-compat-data/issues/6163))

**Statistics**

- 11 contributors have changed 32 files with 1260 additions and 621 deletions in 21 commits ([`v1.0.22...v1.0.23`](https://github.com/mdn/browser-compat-data/compare/v1.0.22...v1.0.23))
- 12123 total features
- 628 total contributors
- 2726 total stargazers

## [v1.0.22](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.22)

May 21, 2020

**Notable changes**

- The following [irrelevant features](./docs/data-guidelines/index.md#removal-of-irrelevant-features) have been removed:
  - `javascript.builtins.Date.toLocaleFormat` ([#6183](https://github.com/mdn/browser-compat-data/issues/6183))
  - `javascript.builtins.String.match.flags` ([#6184](https://github.com/mdn/browser-compat-data/issues/6184))
  - `javascript.statements.try_catch.conditional_clauses` ([#6192](https://github.com/mdn/browser-compat-data/issues/6192))
- `javascript.statements.default.exports` has moved to `javascript.statements.exports.default` (see [#5869](https://github.com/mdn/browser-compat-data/issues/5869)).
- A new guideline for how [Permissions API permissions data](./docs/data-guidelines/api.md#permissions-api-permissions-permissionname_permission) is stored has been accepted and the descriptions have been fixed, see https://github.com/mdn/browser-compat-data/pull/6156.

**Statistics**

- 14 contributors have changed 47 files with 806 additions and 541 deletions in 38 commits ([`v1.0.21...v1.0.22`](https://github.com/mdn/browser-compat-data/compare/v1.0.21...v1.0.22))
- 12122 total features
- 627 total contributors
- 2714 total stargazers

## [v1.0.21](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.21)

May 14, 2020

**Notable changes**

- None

**Statistics**

- 16 contributors have changed 87 files with 1221 additions and 498 deletions in 26 commits ([`v1.0.20...v1.0.21`](https://github.com/mdn/browser-compat-data/compare/v1.0.20...v1.0.21))
- 12118 total features
- 623 total contributors
- 2702 total stargazers

## [v1.0.20](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.20)

May 7, 2020

**Notable changes**

- None

**Statistics**

- 11 contributors have changed 45 files with 1911 additions and 241 deletions in 35 commits ([`v1.0.19...v1.0.20`](https://github.com/mdn/browser-compat-data/compare/v1.0.19...v1.0.20))
- 12092 total features
- 621 total contributors
- 2690 total stargazers

## [v1.0.19](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.19)

April 30, 2020

**Notable changes**

- A new guideline for deleting irrelevant data is now in place. (https://github.com/mdn/browser-compat-data/pull/6018)

**Statistics**

- 12 contributors have changed 39 files with 1930 additions and 1264 deletions in 24 commits ([`v1.0.18...v1.0.19`](https://github.com/mdn/browser-compat-data/compare/v1.0.18...v1.0.19))
- 12068 total features
- 619 total contributors
- 2681 total stargazers

## [v1.0.18](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.18)

April 23, 2020

**Notable changes**

- None

**Statistics**

- 23 contributors have changed 31 files with 1346 additions and 488 deletions in 42 commits ([`v1.0.17...v1.0.18`](https://github.com/mdn/browser-compat-data/compare/v1.0.17...v1.0.18))
- 12053 total features
- 615 total contributors
- 2670 total stargazers

## [v1.0.17](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.17)

April 9, 2020

**Notable changes**

- None

**Statistics**

- 8 contributors have changed 45 files with 529 additions and 504 deletions in 29 commits ([`v1.0.16...v1.0.17`](https://github.com/mdn/browser-compat-data/compare/v1.0.16...v1.0.17))
- 12043 total features
- 601 total contributors
- 2642 total stargazers

## [v1.0.16](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.16)

April 2, 2020

**Notable changes**

- None

**Statistics**

- 16 contributors have changed 140 files with 3214 additions and 1517 deletions in 39 commits ([`v1.0.15...v1.0.16`](https://github.com/mdn/browser-compat-data/compare/v1.0.15...v1.0.16))
- 12040 total features
- 600 total contributors
- 2634 total stargazers

## [v1.0.15](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.15)

March 26, 2020

**Notable changes**

- None

**Statistics**

- 12 contributors have changed 55 files with 1332 additions and 323 deletions in 17 commits ([`v1.0.14...v1.0.15`](https://github.com/mdn/browser-compat-data/compare/v1.0.14...v1.0.15))
- 12007 total features
- 597 total contributors
- 2625 total stargazers

## [v1.0.14](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.14)

March 23, 2020

**Notable changes**

- Besides regular data updates, this release contains a fix for a bug introduced in the last release (1.0.13). Support was changed Node versions <10.0.0 and it is now restored support to Node versions ≥8.0.0. See [#5852](https://github.com/mdn/browser-compat-data/issues/5852) and [#5863](https://github.com/mdn/browser-compat-data/issues/5863).

**Statistics**

- 5 contributors have changed 37 files with 824 additions and 247 deletions in 8 commits ([`v1.0.13...v1.0.14`](https://github.com/mdn/browser-compat-data/compare/v1.0.13...v1.0.14))
- 12003 total features
- 597 total contributors
- 2619 total stargazers

## [v1.0.13](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.13)

March 19, 2020

**Warning**: This release contains a breaking change for Node versions <10.0.0. The next patch release restores support to Node versions ≥8.0.0 See [#5852](https://github.com/mdn/browser-compat-data/issues/5852) and [#5863](https://github.com/mdn/browser-compat-data/issues/5863).

**Notable changes**

- None

**Statistics**

- 16 contributors have changed 64 files with 2443 additions and 1399 deletions in 30 commits ([`v1.0.12...v1.0.13`](https://github.com/mdn/browser-compat-data/compare/v1.0.12...v1.0.13))
- 11991 total features
- 595 total contributors
- 2611 total stargazers

## [v1.0.12](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.12)

March 12, 2020

**Notable changes**

- None

**Statistics**

- 8 contributors have changed 20 files with 445 additions and 375 deletions in 13 commits ([`v1.0.11...v1.0.12`](https://github.com/mdn/browser-compat-data/compare/v1.0.11...v1.0.12))
- 11969 total features
- 591 total contributors
- 2597 total stargazers

## [v1.0.11](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.11)

March 5, 2020

**Notable changes**

- None

**Statistics**

- 8 contributors have changed 19 files with 1581 additions and 515 deletions in 16 commits ([`v1.0.10...v1.0.11`](https://github.com/mdn/browser-compat-data/compare/v1.0.10...v1.0.11))
- 11968 total features
- 590 total contributors
- 2583 total stargazers

## [v1.0.10](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.10)

February 27, 2020

**Notable changes**

- None

**Statistics**

- 11 contributors have changed 50 files with 724 additions and 319 deletions in 29 commits ([`v1.0.9...v1.0.10`](https://github.com/mdn/browser-compat-data/compare/v1.0.9...v1.0.10))
- 11953 total features
- 590 total contributors
- 2566 total stargazers

## [v1.0.9](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.9)

February 20, 2020

**Notable changes**

- Edge compat data has been updated throughout due to engine change (see https://github.com/mdn/browser-compat-data/issues/5214)

**Statistics**

- 11 contributors have changed 1264 files with 10265 additions and 7001 deletions in 34 commits ([`v1.0.8...v1.0.9`](https://github.com/mdn/browser-compat-data/compare/v1.0.8...v1.0.9))
- 11949 total features
- 586 total contributors
- 2546 total stargazers

## [v1.0.8](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.8)

February 13, 2020

**Notable changes**

- None

**Statistics**

- 12 contributors have changed 114 files with 7954 additions and 5973 deletions in 37 commits ([`v1.0.7...v1.0.8`](https://github.com/mdn/browser-compat-data/compare/v1.0.7...v1.0.8))
- 11935 total features
- 584 total contributors
- 2538 total stargazers

## [v1.0.7](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.7)

February 13, 2020

**Notable changes**

- None

**Statistics**

- 11 contributors have changed 327 files with 3039 additions and 2724 deletions in 65 commits ([`v1.0.6...v1.0.7`](https://github.com/mdn/browser-compat-data/compare/v1.0.6...v1.0.7))
- 11887 total features
- 581 total contributors
- 2529 total stargazers

## [v1.0.6](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.6)

January 23, 2020

**Notable changes**

- None

**Statistics**

- 13 contributors have changed 45 files with 1139 additions and 547 deletions in 30 commits ([`v1.0.5...v1.0.6`](https://github.com/mdn/browser-compat-data/compare/v1.0.5...v1.0.6))
- 11887 total features
- 576 total contributors
- 2505 total stargazers

## [v1.0.5](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.5)

January 16, 2020

**Notable changes**

- None

**Statistics**

- 12 contributors have changed 99 files with 1409 additions and 1941 deletions in 34 commits ([`v1.0.4...v1.0.5`](https://github.com/mdn/browser-compat-data/compare/v1.0.4...v1.0.5))
- 11876 total features
- 575 total contributors
- 2488 total stargazers

## [v1.0.4](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.4)

January 9, 2020

**Notable changes**

- None

**Statistics**

- 18 contributors have changed 240 files with 3938 additions and 1330 deletions in 96 commits ([`v1.0.3...v1.0.4`](https://github.com/mdn/browser-compat-data/compare/v1.0.3...v1.0.4))
- 11886 total features
- 572 total contributors
- 2480 total stargazers

## [v1.0.3](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.3)

December 19, 2019

**Notable changes**

- None

**Statistics**

- 10 contributors have changed 339 files with 3,745 additions and 758 deletions in 29 commits ([`v1.0.2...v1.0.3`](https://github.com/mdn/browser-compat-data/compare/v1.0.2...v1.0.3))
- 11,875 total features
- 567 total contributors
- 2,451 total stargazers

## [v1.0.2](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.2)

December 12, 2019

**Notable changes**

- None

**Statistics**

- 17 contributors have changed 742 files with 7115 additions and 3324 deletions in 41 commits ([`v1.0.1...v1.0.2`](https://github.com/mdn/browser-compat-data/compare/v1.0.1...v1.0.2))
- 11859 total features
- 565 total contributors
- 2434 total stargazers

## [v1.0.1](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.1)

December 4, 2019

**Notable changes**

- None

**Statistics**

- 19 contributors have changed 258 files with 2499 additions and 1656 deletions in 68 commits ([`v1.0.0...v1.0.1`](https://github.com/mdn/browser-compat-data/compare/v1.0.0...v1.0.1))
- 11849 total features
- 560 total contributors
- 2420 total stargazers

## [v1.0.0](https://github.com/mdn/browser-compat-data/releases/tag/v1.0.0)

November 21, 2019

The mdn-browser-compat-data 1.0.0 release is a non-breaking release! It is the 100th release of fresh compat data brought to you by the MDN team at Mozilla.

From now on: we're guaranteeing data structure stability and any changes to how the data is exposed will be communicated using minor and major version bumps. Compatibility data will still be continuously updated on a weekly basis and the patch version will be used if data-only updates happened. So, you can expect a 1.0.1 release next week.

**Statistics**

- 18 contributors have changed 306 files with 2117 additions and 1024 deletions in 42 commits ([`v0.0.99...v1.0.0`](https://github.com/mdn/browser-compat-data/compare/v0.0.99...v1.0.0))
- 11827 total features
- 556 total contributors
- 2381 total stargazers
