Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions features/accessor-methods.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ name: Accessor methods
description: The `__defineGetter__()` and `__defineSetter__()` methods of objects bind a function to a property, which is called on setting or reading the property.
spec: https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.prototype-legacy-accessor-methods
discouraged:
reason: TC39 included accessor methods in Annex B of the ECMAScript specification, which covers JavaScript features with "one or more undesirable characteristics and in the absence of legacy usage would be removed."
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't really know why this was stuffed into Annex B (the spec does not provide more specific text, unlike getYear(), so I just quote from the spec directly.

according_to:
- https://tc39.es/ecma262/multipage/additional-ecmascript-features-for-web-browsers.html#sec-additional-ecmascript-features-for-web-browsers
# No `alternatives` because it would be `alternatives:
Expand Down
1 change: 1 addition & 0 deletions features/arguments-callee.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ discouraged:
# From note 4: "The definition of this property […] exists to ensure that it
# is not defined in any other manner by conforming ECMAScript
# implementations."
reason: JavaScript strict mode prohibits accessing `arguments.callee`.
according_to:
- https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-arguments-exotic-objects
compat_features:
Expand Down
1 change: 1 addition & 0 deletions features/clip.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ description: The `clip` CSS property sets the visible area of an absolutely posi
spec: https://drafts.fxtf.org/css-masking-1/#clip-property
group: clipping-shapes-masking
discouraged:
reason: The CSS Masking specification deprecated the `clip` property.
according_to:
- https://drafts.fxtf.org/css-masking-1/#clip-property
alternatives:
Expand Down
1 change: 1 addition & 0 deletions features/color-adjust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ description: The `color-adjust` shorthand CSS property allows multiple performan
spec: https://drafts.csswg.org/css-color-adjust-1/#color-adjust
group: print
discouraged:
reason: The CSS Color Adjustment specification described the `color-adjust` as deprecated, to prevent authors from accidentally resetting color adjustments in unexpected contexts.
according_to:
- https://drafts.csswg.org/css-color-adjust-1/#color-adjust
alternatives:
Expand Down
1 change: 1 addition & 0 deletions features/color-contrast.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ description: "The `color-contrast()` CSS function picks a color from a list that
spec: https://drafts.csswg.org/css-color-5/#contrast-color
group: color-types
discouraged:
reason: The CSS Color specification renamed `color-contrast()` to `contrast-color()`.
# See these CSSWG discussions
# https://github.com/w3c/csswg-drafts/issues/7557
# https://github.com/w3c/csswg-drafts/issues/7359
Expand Down
1 change: 1 addition & 0 deletions features/css-object-model-discouraged.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ description: The DOM level 2 style specification defined interfaces to access an
spec: https://www.w3.org/TR/DOM-Level-2-Style/
group: cssom
discouraged:
reason: The DOM level 2 CSS object model was excluded from the later CSS object model (CSSOM) specification.
according_to:
- https://www.w3.org/TR/DOM-Level-2-Style/#Overview-status
alternatives:
Expand Down
1 change: 1 addition & 0 deletions features/date-get-year-set-year.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ description: The `getYear()` and `setYear()` methods of `Date` objects get and s
spec: https://tc39.es/ecma262/multipage/additional-ecmascript-features-for-web-browsers.html#sec-date.prototype.getyear
group: javascript
discouraged:
reason: The `getYear()` and `setYear()` methods use a truncated number instead of the actual year number, known as a year 2000 problem.
according_to:
- https://tc39.es/ecma262/multipage/additional-ecmascript-features-for-web-browsers.html#sec-additional-ecmascript-features-for-web-browsers
# No `alternatives` because it would be `alternatives: [date]`. In the future
Expand Down
2 changes: 2 additions & 0 deletions features/date-to-gmt-string.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@ name: toGMTString()
description: The `toGMTString()` method of `Date` objects is an alias to the `toUTCString()` method.
spec: https://tc39.es/ecma262/multipage/additional-ecmascript-features-for-web-browsers.html#sec-date.prototype.togmtstring
discouraged:
reason: The method exists "principally for compatibility with old code."
according_to:
- https://tc39.es/ecma262/multipage/additional-ecmascript-features-for-web-browsers.html#sec-additional-ecmascript-features-for-web-browsers
- https://tc39.es/ecma262/multipage/additional-ecmascript-features-for-web-browsers.html#sec-date.prototype.togmtstring
# No `alternatives` because it would be `alternatives: [date]`. In the future
# it'd be nice to have an internal reference to the `toUTCString()` method
# instead.
Expand Down
1 change: 1 addition & 0 deletions features/device-queries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ description: The `device-aspect-ratio`, `device-height`, and `device-width` medi
spec: https://drafts.csswg.org/mediaqueries-5/#mf-deprecated
group: media-queries
discouraged:
reason: Device media queries do not reflect available layout, only the physical size of the device.
according_to:
- https://drafts.csswg.org/mediaqueries-5/#mf-deprecated
alternatives:
Expand Down
1 change: 1 addition & 0 deletions features/document-colors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ name: Document colors
description: A document's `bgColor`, `fgColor`, `alinkColor`, `linkColor`, and `vlinkColor` properties get and set the background, foreground, active link, link, and visited link colors of that document.
spec: https://html.spec.whatwg.org/multipage/obsolete.html
discouraged:
reason: Document color attributes are superseded by CSS.
according_to:
- https://html.spec.whatwg.org/multipage/obsolete.html
alternatives:
Expand Down
1 change: 1 addition & 0 deletions features/document-write.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ spec: https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html
discouraged:
# The spec doesn't actually discourage against open and close, but these methods are
# really only useful for writing anyway, so we're marking the whole feature as discouraged.
reason: The dynamic markup insertion API, which includes `document.write()`, has "very idiosyncratic behavior" which can be difficult to debug.
according_to:
- https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#document.write()
alternatives:
Expand Down
1 change: 1 addition & 0 deletions features/escape-unescape.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ description: The `escape()` and `unescape()` built-in Javascript methods encode
spec: https://tc39.es/ecma262/multipage/additional-ecmascript-features-for-web-browsers.html#sec-escape-string
group: javascript
discouraged:
reason: TC39 included the `escape()` and `unescape()` methods in Annex B of the ECMAScript specification, which covers JavaScript features with "one or more undesirable characteristics and in the absence of legacy usage would be removed."
according_to:
- https://tc39.es/ecma262/multipage/additional-ecmascript-features-for-web-browsers.html#sec-additional-ecmascript-features-for-web-browsers
# No `alternatives` because it would be `alternatives: [javascript]`. In the
Expand Down
1 change: 1 addition & 0 deletions features/execcommand.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ description: The `execCommand()` method reads and writes from the clipboard and
spec: https://w3c.github.io/editing/docs/execCommand/
group: clipboard
discouraged:
reason: The `execCommand()` method is "not implemented consistently or fully by user agents, and it is not expected that this will change in the foreseeable future."
according_to:
- https://w3c.github.io/editing/docs/execCommand/
alternatives:
Expand Down
1 change: 1 addition & 0 deletions features/external.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ name: window.external
description: The `window.external.AddSearchProvider()` and `window.external.IsSearchProviderInstalled()` do nothing. Historically, they added external search providers to the browser.
spec: https://html.spec.whatwg.org/multipage/obsolete.html#external
discouraged:
reason: The `window.external.AddSearchProvider()` and `window.external.IsSearchProviderInstalled()` methods do nothing, by specification.
according_to:
- https://html.spec.whatwg.org/multipage/obsolete.html#external
compat_features:
Expand Down
1 change: 1 addition & 0 deletions features/font-stretch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ name: font-stretch
description: The `font-stretch` CSS property selects a font face from a font family based on width, either by a keyword such as `condensed` or a percentage.
spec: https://drafts.csswg.org/css-fonts-4/#font-stretch-prop
discouraged:
reason: The `font-stretch` CSS property is superseded by `font-width`.
according_to:
- https://drafts.csswg.org/css-fonts-4/#font-stretch-prop
alternatives:
Expand Down
1 change: 1 addition & 0 deletions features/functions-caller-arguments.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ description: The `caller` and `arguments` properties of a non-strict mode `Funct
group: javascript
spec: https://tc39.es/ecma262/multipage/error-handling-and-language-extensions.html#sec-forbidden-extensions
discouraged:
reason: The `caller` and `arguments` properties of a `Function` object are not available in strict mode code.
according_to:
- https://tc39.es/ecma262/multipage/error-handling-and-language-extensions.html#sec-forbidden-extensions
compat_features:
Expand Down
1 change: 1 addition & 0 deletions features/glyph-orientation-vertical.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ description: The `glyph-orientation-vertical` CSS property sets the orientation
spec: https://drafts.csswg.org/css-writing-modes-4/#glyph-orientation
group: css
discouraged:
reason: The `glyph-orientation-vertical` property was defined by SVG 1.1 and formally obsoleted by SVG 2.
according_to:
- https://drafts.csswg.org/css-writing-modes-4/#glyph-orientation
alternatives:
Expand Down
5 changes: 2 additions & 3 deletions features/host-context.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@ group:
compat_features:
- css.selectors.host-context
discouraged:
# reason: >
# The CSS Working Group removed it from the specification, due to opposition
# from vendors, performance considerations, and interest in alternatives.
reason: >
The CSS Working Group removed `:host-context()` from the specification, due to opposition from vendors, performance considerations, and interest in alternatives.
according_to:
- https://github.com/w3c/csswg-drafts/issues/1914#issuecomment-2737310093
alternatives:
Expand Down
1 change: 1 addition & 0 deletions features/html-wrapper-methods.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ description: JavaScript built-in methods such as, `String.bold()` and `String.it
spec: https://tc39.es/ecma262/multipage/additional-ecmascript-features-for-web-browsers.html#sec-additional-properties-of-the-string.prototype-object
group: javascript
discouraged:
reason: HTML wrapper methods exist only for backwards compatibility. Use DOM APIs to create elements instead.
according_to:
- https://tc39.es/ecma262/multipage/additional-ecmascript-features-for-web-browsers.html#sec-additional-ecmascript-features-for-web-browsers
alternatives:
Expand Down
4 changes: 4 additions & 0 deletions features/ime-mode.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@ description: The `ime-mode` CSS property sets the state of the input method edit
spec: https://drafts.csswg.org/css-ui-3/#input-method-editor
group: css
discouraged:
reason: You should not modify the state of input method editor. Instead, you should use hints (such as a `lang` or `inputmode` attribute) to help the browser select the right user interface for text input.
according_to:
- https://drafts.csswg.org/css-ui-3/#input-method-editor
alternatives:
- inputmode
- lang-attr
compat_features:
- css.properties.ime-mode
2 changes: 2 additions & 0 deletions features/import-assertions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ name: Import assertions
description: 'Module `import … assert { type: "json" }` and `import … assert { type: "css" }` JavaScript statements load JSON and CSS data.'
spec: https://github.com/tc39/proposal-import-attributes/tree/abca60286360b47f9a6be25a28f489c2cb157beb
discouraged:
reason: Import assertions are superseded by import attributes.
removal_date: 2024-06-13
according_to:
- https://github.com/tc39/proposal-import-attributes/pull/131
alternatives:
Expand Down
1 change: 1 addition & 0 deletions features/is-input-pending.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ name: isInputPending()
description: The `navigator.scheduling.isInputPending()` method checks if there are pending input events, such as touch or mouse events. This allows you to yield from long-running scripts that might be blocking user interaction.
spec: https://wicg.github.io/is-input-pending/
discouraged:
reason: The `navigator.scheduling.isInputPending()` method may incorrectly return `false` and is not the only case where you might expect to yield.
according_to:
- https://web.dev/articles/optimize-long-tasks#isinputpending
alternatives:
Expand Down
1 change: 1 addition & 0 deletions features/mediacontroller.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ name: MediaController
description: "The playback of multiple `<video>` or `<audio>` elements can be coordinated by a `MediaController` instance, for example to synchronize a sign-language interpreter track with the main video track."
spec: https://www.w3.org/TR/2018/SPSD-html5-20180327/embedded-content-0.html#synchronising-multiple-media-elements
discouraged:
reason: The `MediaController` API was dropped from the specification due to lack of implementations.
according_to:
# The PR that removed the feature from the HTML spec was https://github.com/w3c/html/pull/357.
# Linking to the issue discussion seems more appropriate.
Expand Down
3 changes: 3 additions & 0 deletions features/mutation-events.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@ description: Mutation events like `DOMSubtreeModified`, `DOMNodeInserted`, or `D
spec: https://w3c.github.io/uievents/
group: dom
discouraged:
removal_date: 2025-12-31
reason: Mutation events negatively impact performance and they were selected for removal from the web as part of Interop 2025.
according_to:
- https://www.w3.org/TR/2024/WD-uievents-20240906/#legacy-mutationevent-events
- https://github.com/web-platform-tests/interop/issues/784
alternatives:
- mutationobserver
compat_features:
Expand Down
2 changes: 2 additions & 0 deletions features/overflow-overlay.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ spec: https://drafts.csswg.org/css-overflow-3/#propdef-overflow
group: css
caniuse: css-overflow-overlay
discouraged:
reason: >
Some old browsers may implement non-standard behavior for `overflow: overlay`.
according_to:
- https://drafts.csswg.org/css-overflow-3/#valdef-overflow-overlay
alternatives:
Expand Down
1 change: 1 addition & 0 deletions features/page-break-aliases.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ description: The `page-break-before`, `page-break-inside`, and `page-break-after
spec: https://drafts.csswg.org/css-break-4/#page-break-properties
group: layout
discouraged:
reason: The `page-break-` alias properties exist only for backwards compatibility with pages that predate the `break-` properties.
according_to:
- https://drafts.csswg.org/css-break-4/#page-break-properties
alternatives:
Expand Down
1 change: 1 addition & 0 deletions features/performancetiming.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ description: The `window.performance.timing` and `window.performance.navigation`
spec: https://w3c.github.io/navigation-timing/#obsolete
group: performance
discouraged:
reason: This feature is supserseded by the `PerformanceNavigationTiming` API.
according_to:
- https://w3c.github.io/navigation-timing/#obsolete
alternatives:
Expand Down
2 changes: 1 addition & 1 deletion features/portal.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ description: The `<portal>` HTML element embeds another page into the current pa
spec: https://wicg.github.io/portals/
caniuse: portals
discouraged:
# "The Portals proposal is not currently being actively pursued."
reason: The `<portal>` element was removed from browsers in favor of other proposals.
according_to:
- https://github.com/WICG/portals/blob/421e74f5bb3e12d6d439ad19654a1463a5cb9b0a/README.md?plain=1#L1
alternatives:
Expand Down
2 changes: 2 additions & 0 deletions features/private-network-access.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ name: Private network access
description: "The `Access-Control-Request-Private-Network: true` and `Access-Control-Allow-Private-Network: true` HTTP request and response headers establish permission for websites to make requests to internal networks, such as to routers."
spec: https://wicg.github.io/private-network-access/
discouraged:
removal_date: 2025-06-26
reason: Private network access caused compatibility problems and is superseded by local network access.
according_to:
- https://github.com/WICG/local-network-access?tab=readme-ov-file#local-network-access
- https://developer.chrome.com/blog/pna-on-hold
Expand Down
1 change: 1 addition & 0 deletions features/proto.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ name: __proto__
description: The `__proto__` property of objects partially exposes the prototype of an object.
spec: https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.prototype.__proto__
discouraged:
reason: Changing `__proto__` is slow and can cause surprising bugs.
according_to:
- https://tc39.es/ecma262/multipage/additional-ecmascript-features-for-web-browsers.html#sec-additional-ecmascript-features-for-web-browsers
# No `alternatives` because it would be `alternatives: [object]`. In the
Expand Down
1 change: 1 addition & 0 deletions features/regexp-compile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ name: RegExp compile()
description: The `compile()` method of `RegExp` objects recompiles an existing regular expression object using a new pattern and flags.
spec: https://tc39.es/ecma262/multipage/additional-ecmascript-features-for-web-browsers.html#sec-regexp.prototype.compile
discouraged:
reason: The `compile()` method duplicates behavior of the `RegExp()` constructor and it exists only for backwards compatibility.
according_to:
- https://tc39.es/ecma262/multipage/additional-ecmascript-features-for-web-browsers.html#sec-additional-ecmascript-features-for-web-browsers
# No `alternatives` because it would be `alternatives: [regexp]`. In the
Expand Down
4 changes: 4 additions & 0 deletions features/regexp-static-properties.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,12 @@ name: RegExp static properties
description: The `RegExp` object has several static properties to access the input and results of the most-recent regular expression match.
spec: https://github.com/tc39/proposal-regexp-legacy-features
discouraged:
reason: The `RegExp` static properties may have unintended side effects.
according_to:
- https://github.com/tc39/proposal-regexp-legacy-features
# No `alternatives` because it would be `alternatives: [regexp]`. In the
# future it'd be nice to have an internal reference to the RegExp instance
# methods. See: https://github.com/web-platform-dx/web-features/issues/2676
compat_features:
- javascript.builtins.RegExp.input
- javascript.builtins.RegExp.lastMatch
Expand Down
3 changes: 2 additions & 1 deletion features/speech-recognition-grammar.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
name: Speech recognition grammar
description: "The `SpeechRecognition.grammars` property of the Web Speech API represents a set of words or patterns of words that the recognition service should recognize, used for when the recognition service's accuracy is low. This feature has been removed due to advancements in speech recognition."
description: "The `SpeechRecognition.grammars` property of the Web Speech API represents a set of words or patterns of words that the recognition service should recognize, used for when the recognition service's accuracy is low."
spec: https://webaudio.github.io/web-speech-api/#speechreco-section
discouraged:
# SpeechGrammar and SpeechGrammarList have been removed from the Web Speech API spec.
# There is no alternative API to point to because speech recognition has improved
# significantly, removing the need for grammar-based recognition.
reason: Advancements in speech recognition mean that speech grammars are not needed to achieve low error rates.
according_to:
- https://github.com/WebAudio/web-speech-api/pull/117
group: speech
Expand Down
3 changes: 2 additions & 1 deletion features/svg-discouraged.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
name: SVG 1.1 (discouraged)
name: SVG 1.1
description: The SVG 1.1 image format has several components that were excluded from SVG 2, such as fonts, alternate glyphs, and the `xlink` namespace.
spec: https://www.w3.org/TR/SVG11/
discouraged:
according_to:
- https://svgwg.org/svg2-draft/changes.html#substantial
reason: SVG 2 omittted some parts of SVG 1.1 to "improv[e] the usability and precision of the language."
alternatives:
- svg
- font-face
Expand Down
3 changes: 2 additions & 1 deletion features/table-discouraged.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
name: Table styling
description: Attributes and properties of table elements, such as `align`, `vAlign`, `noWrap`, `bgcolor`, or `char` set various visual presentation properties of the table and its sections and cells. These are obsolete, and some of them have no effect. Use CSS instead.
description: Attributes and properties of table elements, such as `align`, `vAlign`, `noWrap`, `bgcolor`, or `char` set various visual presentation properties of the table and its sections and cells.
spec: https://html.spec.whatwg.org/multipage/obsolete.html
group: html-elements
discouraged:
reason: Some table styling attributes have no effect. They are superseded by CSS.
according_to:
- https://html.spec.whatwg.org/multipage/obsolete.html
# No alternatives, because it would either be a long list of features, or just "CSS".
Expand Down
1 change: 1 addition & 0 deletions features/text-decoration-line-blink.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ group:
- animation
- css
discouraged:
reason: Browsers may ignore the `blink` value.
according_to:
- https://drafts.csswg.org/css-text-decor-3/#valdef-text-decoration-line-blink
alternatives:
Expand Down
1 change: 1 addition & 0 deletions features/webvr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ description: The `navigator.getVRDisplays()` API represents virtual reality (VR)
spec: https://immersive-web.github.io/webvr/spec/1.1/
caniuse: webvr
discouraged:
reason: Development of the WebVR API halted in favor of WebXR.
according_to:
- https://immersive-web.github.io/webvr/spec/1.1/#abstract
alternatives:
Expand Down
Loading