Chrome Release Summary

Chrome version: 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0

Chrome 49

Enabled (30) | Origin Trial (0) | Behind a flag (0) | Deprecated (1) | Removed (2)

Enabled by default in 49

This release of Chrome had 30 new features.

'noopener' link relation

The 'noreferrer' link relation currently governs both referrer policy for a navigation, as well as the 'opener' attribute of any newly created browsing context. The 'noopener' link relation gives devlopers the ability to control the latter without opting into the former. #

This feature was specified in this Spec.

Resources

Docs: https://html.spec.whatwg.org/#following-hyperlinkshttps://html.spec.whatwg.org/#dom-open

No linked samples

Audio Output Devices API

This feature will incorporate a set of JavaScript APIs that let a Web application direct the audio output of a media element to authorized devices other than the system or user agent default. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement

Samples: https://webrtc.github.io/samples/src/content/devices/multi/

Background Sync API

An API that extends Service Workers with an onsync event. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WICG/BackgroundSync/blob/master/explainer.mdhttps://github.com/WICG/BackgroundSync

Samples: https://wicg.github.io/BackgroundSync/demo/

CHACHA20_POLY1305 cipher suites for TLS

Chrome 31 deployed a new TLS cipher suite based on Prof. Dan Bernstein's ChaCha20 and Poly1305 algorithms. They run three times faster than AES-GCM on devices that don't have AES hardware acceleration, including most Android phones. These have now made their way through the standardization process. We'll be deploying the standardized variant in Chrome 49. #

This feature was specified in this Spec.

Resources

Docs: https://googleonlinesecurity.blogspot.com/2014/04/speeding-up-and-strengthening-https.html

No linked samples

CSP: Insecure source expressions match secure URLs.

In the wake of Sniffly, it seems pretty reasonable to prevent folks from locking themselves into insecurity. To that end, Insecure schemes in source expressions now match their secure variants. That is, `http:` is equivalent to `http: https:`, and `http://a.com` to `http://a.com https://a.com`. #

This feature was specified in this Spec.

CSS Custom Properties (CSS Variables)

Introduces cascading variables as a new primitive value type that is accepted by all CSS properties, and custom properties for defining them. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://googlechrome.github.io/samples/css-custom-properties/index.html

Case-insensitive Attribute Selector Matching

An additional modifier ('i') for attribute selectors, that allows an author to match an attribute (ASCII) case-insensitively. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors

Samples: http://css4-selectors.com/selector/css4/attribute-case-sensitivity/https://googlechrome.github.io/samples/css-attribute-case-sensitivity/index.html

Cookie Prefixes

This feature adds a set of restrictions upon the names which may be used for cookies with specific properties. These restrictions enable user agents to smuggle cookie state to the server within the confines of the existing "Cookie" request header syntax, and limits the ways in which cookies may be abused. In a nutshell: `__Secure-*` cookies have to have the `Secure` flag, and `__Host-*` cookies have to have `Path=/`, can't have `Domain`, and might require `Secure` (depending on the setter). #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://googlechrome.github.io/samples/cookie-prefixes/index.html

Default parameters (ES6)

Allows formal parameters to be initialized with default values if no value (or 'undefined') is passed. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters

Samples: https://googlechrome.github.io/samples/default-parameters-es6/index.html

Destructuring (ES6)

Destructuring assignment allows extracting data from arrays or objects using a syntax that mirrors array and object literals. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

Samples: https://googlechrome.github.io/samples/destructuring-es6/index.html

Fetch API: New value "navigate" for Request.mode

Introduce a new value "navigate" for Request.mode of the Fetch API. "navigate" mode is intended to be used only for navigation. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://googlechrome.github.io/samples/service-worker/custom-offline-page/

FetchEvent.clientId attribute

A read-only attribute that indicates the id of the Client object that initiated this fetch request. For a navigation request and worker (dedicated worker and shared worker) script fetch, this attribute returns null. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/FetchEvent/clientId

No linked samples

HTMLMediaElement.disableRemotePlayback

This attribute allows websites to tell the UA that they do not wish for a media element to be played remotely. The UA will prevent the element from being played remotely and will not show any UI advertising remote playback. #

This feature was specified in this Spec.

HTTP Client Hints: Save-Data

The “Save-Data” header field is a boolean that, in requests, indicates client’s explicit opt-in for reduced data usage, due to high transfer costs, slow connection speeds, or other reasons. When communicated to origins, it allows them to deliver alternate content honoring such preference - e.g. smaller image and video resources, alternate "light mode" markup, etc. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2016/02/save-data?hl=en

No linked samples

High Resolution Time Stamp for Events

Change Event.timeStamp to be a DOMHighResTimeStamp which is a high resolution monotonic time with microseconds resolution instead DOMTimeStamp which is an epoch time with millisecond resolution. For input events, the timestamp value will represent the underlying OS timestamp for the event. High resolution monotonic timestamp for input events enables new functionality such as accurate measurement of pointer velocity, simple input latency measurements, and etc. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/whatwg/dom/issues/23https://lists.w3.org/Archives/Public/public-whatwg-archive/2014May/0055.html

Samples: https://googlechrome.github.io/samples/event-timestamp/index.htmlhttp://rbyers.net/scroll-latency.html

MediaRecorder

Encode audio and video streams in the browser. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder_APIhttps://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder

Samples: https://webrtc.github.io/samples/src/content/getusermedia/record/https://simpl.info/mr

Presentation API: PresentationConnection.close()

Add support for close() method in Presentation API's PresentationConnection interface. This method allows closing a connection without terminating the session. This is in addition of terminate() that is already available. #

This feature was specified in this Spec.

Promise rejection tracking events

Introduces a pair of events on the global objects, unhandledrejection and rejectionhandled, for tracking promise rejections. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://googlechrome.github.io/samples/promise-rejection-events/index.htmlhttps://jsbin.com/vewagenoku/edit?html%2Coutput

Proxies (ES6)

Proxies are objects for which the programmer has to define the semantics in JavaScript. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy

Samples: https://googlechrome.github.io/samples/proxies-es6/

Reflect (ES6)

Improved imperative methods for invoking, examining or modifying values at runtime. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect

No linked samples

Service Worker: WindowClient.navigate()

The method can instruct a controlled window client to navigate to a different url. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/WindowClient/navigate

Samples: https://googlechrome.github.io/samples/service-worker/windowclient-navigate/index.html

Sloppy mode block bindings (let, class, const, function) (ES6)

Enable ES6-style block-scoped bindings including let and class in sloppy mode, and modify semantics of const and function to operate according to ES6 in sloppy mode. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/lethttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/consthttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/functionhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/class

No linked samples

Symbol.toStringTag (ES6)

Using Symbol.toStringTag, user-defined types can return customized output when passed to Object.prototype.toString (either directly or as a result of string coercion) by storing a descriptive string in a Symbol.toStringTag-keyed property. #

This feature was specified in this Spec.

URLSearchParams

The URLSearchParams interface allows developers to (shock!) manipulate the search params of a URL. It also provides a mechanism to POST data via `fetch()` with a urlencoded body vs. the multipart body that `FormData` produces. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParamshttps://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/append

Samples: https://googlechrome.github.io/samples/urlsearchparams/index.html

WebAudio: Add IIRFilterNode

Add a new node, IIRFilterNode, that implements a general IIR filter. The coefficients are fixed at creation and not changeable with no automation functions allowed. #

This feature was specified in this Spec.

Resources

Docs: http://webaudio.github.io/web-audio-api/#the-iirfilternode-interfacehttps://github.com/WebAudio/web-audio-api/issues/323https://github.com/WebAudio/web-audio-api/pull/556

No linked samples

WebAudio: OfflineAudioContext.suspend() and resume()

Adds suspend() and resume() feature in OfflineAudioContext to support the synchronous graph manipulation with the render block precision (k-rate) in the non-realtime audio rendering. #

This feature was specified in this Spec.

WebAudio: decodeAudioData returns a Promise

AudioContext.decodeAudioData returns a Promise<AudioBuffer> that is resolved when decoding the audio data is finished. This is in addition to the existing callbacks, which are now optional. #

This feature was specified in this Spec.

Resources

Docs: http://webaudio.github.io/web-audio-api/#widl-AudioContext-decodeAudioData-Promise-AudioBuffer--ArrayBuffer-audioData-DecodeSuccessCallback-successCallback-DecodeErrorCallback-errorCallbackhttps://developer.mozilla.org/en-US/docs/Web/API/AudioContext/decodeAudioData

No linked samples

WebRTC API for choosing key pair algorithm (RSA, ECDSA) for certificates used in DTLS handshake

A WebRTC JavaScript API is added to control the key pair algorithm (RSA, ECDSA) to use for the self-signed certificates generated when DTLS is used for peerconnections. Changes to API surface: RTCCertificate class added, RTCPeerConnection.generateCertificate static method added, RTCConfiguration.certificates (sequence<RTCCertificate>) member added. This feature was behind a flag starting in Chrome 48 and Opera 35. Earlier, this feature was erroneously marked as shipping in M52 #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/RTCCertificatehttps://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/generateCertificate

No linked samples

addEventListener/removeEventListener EventListenerOptions API

Add an additional API to addEventListener/removeEventListener which takes EventListenerOptions dictionary. void [add|remove]EventListener(DOMString type, EventListener listener, EventListenerOptions options); Currently other platforms (Gecko) add additional booleans to the argument list to modify the behavior of the added event listeners. We'd like to turn this into a dictionary (EventListenerOptions) so that is a more flexible API for future work. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/whatwg/dom/pull/82https://github.com/RByers/EventListenerOptionshttps://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListenerhttps://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener

No linked samples

addEventListener/removeEventListener non-optional arguments

For a very long time, the first two arguments (type and listener) of addEventListener and removeEventListener have been optional, where they are non-optional in the spec and other browsers. This will change, so that calling these methods with zero or one argument will start to throw exceptions. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListenerhttps://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener

Samples: https://googlechrome.github.io/samples/event-listeners-mandatory-arguments/index.html

Origin Trials in-progress in 49

This release of Chrome had 0 new origin trials.

Flagged features in 49

This release of Chrome had 0 are available behind a flag.

Deprecations and Removals

Deprecation policy

To keep the platform healthy, we sometimes remove APIs from the Web Platform which have run their course. There can be many reasons why we would remove an API, such as:

Some of these changes will have an effect on a very small number of sites. To mitigate issues ahead of time, we try to give developers advanced notice so they can make the required changes to keep their sites running.

Chrome currently has a process for deprecations and removals of API's, essentially:

You can find a list of all deprecated features on chromestatus.com using the deprecated filter and removed features by applying the removed filter. We will also try to summarize some of the changes, reasoning, and migration paths in these posts.

Deprecated features in 49

This release of Chrome had 1 features deprecated.

Remove Non-standard getComputedStyle(e).css* behaviour

getComputedStyle(e).css* (except for .cssFloat) is non-standard behaviour that only Blink and WebKit support. In all cases it is aliased by getComputedStyle(e).*. We are proposing to deprecate and remove this functionality in an upcoming release. #

This feature was specified in this Spec.

Removed features in 49

This release of Chrome had 2 features removed.

Deprecate & Remove webkitMovementX/Y

Remove prefixed version of MouseEvent.webkitMovementX/Y leaving Pointer Lock specification version: MouseEvent.movementX/Y. #

This feature was specified in this Spec.

Navigator.getStorageUpdates()

The getStorageUpdates() method for Navigator is no longer in the spec, and is a no-op. #

This feature was specified in this Spec.