1. EventTarget.addEventListener()

    The modern standard API for adding DOM event handlers. Introduced in the DOM Level 2 Events spec. Also implies support for `removeEventListener`, the [capture phase](https://dom.spec.whatwg.org/#dom-event-capturing_phase) of DOM event dispatch, as well as the `stopPropagation()` and `preventDefault()` event methods.

  2. calc() as CSS unit value

    Method of allowing calculated values for length units, i.e. `width: calc(100% - 3em)`

  3. Canvas (basic support)

    Method of generating fast, dynamic graphics using JavaScript.

  4. ChildNode.remove()

    DOM node method to remove the node itself from the document.

  5. classList (DOMTokenList)

    Method of easily manipulating classes on elements, using the `DOMTokenList` object.

  6. Node.compareDocumentPosition()

    Compares the relative position of two nodes to each other in the DOM tree.

  7. CSS color() function

    The CSS `color()` function allows the browser to display colors in any color space, such as the P3 color space which can display colors outside of the default sRGB color space.

  8. :dir() CSS pseudo-class

    Matches elements based on their directionality. `:dir(ltr)` matches elements which are Left-to-Right. `:dir(rtl)` matches elements which are Right-to-Left.

  9. CSS element() function

    This function renders a live image generated from an arbitrary HTML element

  10. CSS Environment Variables env()

    Usage of environment variables like `safe-area-inset-top`.

  11. CSS filter() function

    This function filters a CSS input image with a set of filter functions (like blur, grayscale or hue)

  12. :has() CSS relational pseudo-class

    Select elements containing specific content. For example, `a:has(img)` selects all `<a>` elements that contain an `<img>` child.

  13. LCH and Lab color values

    The `lch()` and `lab()` color functions are based on the CIE LAB color space, representing colors in a way that closely matches human perception and provides access to a wider spectrum of colors than offered by the usual RGB color space.

  14. :is() CSS pseudo-class

    The `:is()` (formerly `:matches()`, formerly `:any()`) pseudo-class checks whether the element at its position in the outer selector matches any of the selectors in its selector list. It's useful syntactic sugar that allows you to avoid writing out all the combinations manually as separate selectors. The effect is similar to nesting in Sass and most other CSS preprocessors.

  15. CSS math functions min(), max() and clamp()

    More advanced mathematical expressions in addition to `calc()`

  16. selector list argument of :not()

    Selectors Level 3 only allowed `:not()` pseudo-class to accept a single simple selector, which the element must not match any of. Thus, `:not(a, .b, [c])` or `:not(a.b[c])` did not work. Selectors Level 4 allows `:not()` to accept a list of selectors. Thus, `:not(a):not(.b):not([c])` can instead be written as `:not(a, .b, [c])` and `:not(a.b[c])` works as intended.

  17. CSS Paged Media (@page)

    CSS at-rule (`@page`) to define page-specific rules when printing web pages, such as margin per page and page dimensions.

  18. CSS.supports() API

    The CSS.supports() static method returns a Boolean value indicating if the browser supports a given CSS feature, or not.

  19. CSS Variables (Custom Properties)

    Permits the declaration and usage of cascading variables in stylesheets.

  20. CSS3 attr() function for all properties

    While `attr()` is supported for effectively all browsers for the `content` property, CSS Values and Units Level 5 adds the ability to use `attr()` on **any** CSS property, and to use it for non-string values (e.g. numbers, colors).

  21. Document.execCommand()

    Allows running commands to manipulate the contents of an editable region in a document switched to designMode

  22. Element.closest()

    DOM method that returns the current element if it matches the given selector, or else the closest ancestor element that matches the given selector, or else null.

  23. document.elementFromPoint()

    Given coordinates for a point relative to the viewport, returns the element that a click event would be dispatched at if the user were to click the point (in other words, the element that hit-testing would find).

  24. ECMAScript 2015 (ES6)

    Support for the ECMAScript 2015 specification. Features include Promises, Modules, Classes, Template Literals, Arrow Functions, Let and Const, Default Parameters, Generators, Destructuring Assignment, Rest & Spread, Map/Set & WeakMap/WeakSet and many more.

  25. JavaScript modules: dynamic import()

    Loading JavaScript modules dynamically using the import() syntax

  26. Element.getBoundingClientRect()

    Method to get the size and position of an element's bounding box, relative to the viewport.

  27. crypto.getRandomValues()

    Method of generating cryptographically random values.

  28. Element.insertAdjacentElement() & Element.insertAdjacentText()

    Methods for inserting an element or text before or after a given element, or appending or prepending an element or text to a given element's list of children.

  29. Element.insertAdjacentHTML()

    Inserts a string of HTML into a specified position in the DOM relative to the given element.

  30. KeyboardEvent.getModifierState()

    `KeyboardEvent` method that returns the state (whether the key is pressed/locked or not) of the given modifier key.

  31. localeCompare()

    The `localeCompare()` method returns a number indicating whether a reference string comes before or after or is the same as the given string in sort order.

  32. matches() DOM method

    Method of testing whether or not a DOM element matches a given selector. Formerly known (and largely supported with prefix) as matchesSelector.

  33. Object RTC (ORTC) API for WebRTC

    Enables mobile endpoints to talk to servers and web browsers with Real-Time Communications (RTC) capabilities via native and simple JavaScript APIs

  34. String.prototype.padStart(), String.prototype.padEnd()

    The `padStart()` and `padEnd()` methods pad the current string with a given string (eventually repeated) so that the resulting string reaches a given length. The pad is applied from the start (left) of the current string for `padStart()`, and applied from the end (right) of the current string for `padEnd()`.

  35. relList (DOMTokenList)

    Method of easily manipulating rel attribute values on elements, using the DOMTokenList object (similar to classList).

  36. Element.scrollIntoViewIfNeeded()

    If the element is fully within the visible area of the viewport, it does nothing. Otherwise, the element is scrolled into view. A proprietary variant of the standard `Element.scrollIntoView()` method.

  37. Efficient Script Yielding: setImmediate()

    Yields control flow without the minimum delays enforced by setTimeout

  38. url api: `url()` constructor

  39. types: `abs()`

  40. types: `cos()`

  41. types: `exp()`

  42. types: `log()`

  43. types: `max()`

  44. types: `min()`

  45. types: `mod()`

  46. types: `pow()`

  47. types: `ray()`

  48. types: `rem()`

  49. types: `sin()`

  50. types: `tan()`