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 51

Enabled (27) | Origin Trial (0) | Behind a flag (1) | Deprecated (3) | Removed (3)

Enabled by default in 51

This release of Chrome had 27 new features.

'SameSite' cookie attribute

Same-site cookies (née "First-Party-Only" (née "First-Party")) allow servers to mitigate the risk of CSRF and information leakage attacks by asserting that a particular cookie should only be sent with requests initiated from the same registrable domain. #

This feature was specified in this Spec.

AES_256_GCM for TLS.

Historically, TLS used AES ciphers based on a flawed CBC-mode-based construction. These ciphers are fragile and very difficult to implement securely. TLS 1.2 added better ciphers based on AES-GCM. We current support AES_128_GCM, but many servers order by key size above all else, placing the legacy AES_256_CBC above our preferred AES_128_GCM. To simplify server configuration and negotiate modern ciphers with more existing servers, we'll be adding AES_256_GCM as well. #

This feature was specified in this Spec.

Array subclassing and Symbol.species support

ES2015 changes the semantics of Arrays and certain other classes to create subclass instances from certain methods, and allow a new interception point, Symbol.species, to control whether it's actually the subclass or another class which is instantiated. For example, Array.prototype.map constructs instances of the subclass as its output, with the option to customize this by changing Symbol.species #

This feature was specified in this Spec.

Resources

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

No linked samples

Asynchronous Blob Construction

Large blobs previously blocked the renderer while transferring data to the browser. This is now asynchronous, which speeds up blob construction. This is the first part of the plan to allow blob data to be saved on disk, which removes the 500MB limit on blob storage. #

This feature was specified in this Spec.

Resources

Docs: https://bit.ly/BlobStorageRefactorhttps://bit.ly/BlobStorageRefactorPreso

No linked samples

CSS border-image: respect border style

Blink will begin to require a border style in order to paint border images. This has always been required by the spec, but has not been enforced. In order to not be affected by this change, add e.g. 'border-style:solid' where border-image is used. #

This feature was specified in this Spec.

Resources

Docs: https://lists.w3.org/Archives/Public/www-style/2015Dec/0080.html

Samples: http://codepen.io/Savago/pen/yYrgyK

Correct handling of percentages in children of flex items

Certain flex items should be considered to have definite sizes (see spec URL), and therefore if a child element of a flex item uses percentage sizes, they should work. #

This feature was specified in this Spec.

Resources

Docs: http://crbug.com/542388http://crbug.com/346275

Samples: http://jsbin.com/zefuxiviso/2/edit?html,output

Credential Management API

The API provides a programmatic interface to the browser's credential manager. In short, an origin can request a user's credentials to sign them in, or can ask the browser to save credentials on the user's behalf. Both of these requests are user-mediated. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/Credential_Management_APIhttps://developer.mozilla.org/en-US/docs/Web/API/Credentialhttps://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainerhttps://developer.mozilla.org/en-US/docs/Web/API/FederatedCredentialhttps://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential

No linked samples

ES2015 RegExp subclassing semantics

This feature allows RegExp subclasses to override RegExp.prototype.exec and flags to change the semantics of higher-level functionality, such as String.prototype.replace. Previous JavaScript versions always used the original value of exec from replace. This feature makes it easier to implement new RegExp subclasses by changing a single core piece, without duplicating the higher level integration logic. #

This feature was specified in this Spec.

ExtendableMessageEvent on ServiceWorkerGlobalScope

ServiceWorker.postMessage() now results in an ExtendableMessageEvent fired on ServiceWorkerGlobalScope as a 'message' event. ExtendableMessageEvent.waitUntil() extends its lifetime until a passed Promise is settled. Before this change, postMessage() resulted in a MessageEvent fired on the global scope. #

This feature was specified in this Spec.

Resources

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

Samples: https://googlechrome.github.io/samples/service-worker/post-message/index.html

Function "name" property (ES6)

In ECMAScript 2015, the "name" property on anonymous Function objects is sometimes set based on the syntactic position of the function (or class) expression. For example: var x = function() { }; x.name === 'x' #

This feature was specified in this Spec.

Intersection Observer

The Intersection Observer API can be used to asynchronously observe changes in the intersection of a target Element with an ancestor element (for infinite scrolling lists) or the top-level document's viewport (for 'viewability' tracking). #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WICG/IntersectionObserver/blob/gh-pages/explainer.mdhttps://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API

No linked samples

Iterable Array-like DOM interfaces

Adds `Symbol.iterator` to any DOM interface containing an indexed property getter, and a "length" property, such as HTMLAllCollection, FileList or MediaList. This enables their use in ECMAScript 6 for-of loops. #

This feature was specified in this Spec.

Iterable NodeList

Add Symbol.iterator method to NodeList, as well as methods `keys()`, `values()`, `entries()` and `forEach()`. This will allow NodeList to be traversed via ES6 iteration statements: for (let node of document.querySelectorAll('.my-class') { ... } ... or via document.querySelectorAll('.my-class').forEach(node => { ... } #

This feature was specified in this Spec.

Resources

Docs: https://dom.spec.whatwg.org/#interface-nodelist

No linked samples

Media Capture from Canvas

“Media Capture from DOM Elements” document by W3C defines captureStream() method that allows the capture of the <canvas> element in the form of a MediaStream. We want to implement the necessary Blink and Chromium sections that would create this stream by accessing the canvas output according to the given frame rate constraints. #

This feature was specified in this Spec.

Resources

Docs: https://goo.gl/BFJY52

Samples: https://webrtc.github.io/samples/src/content/capture/canvas-pc/

Non-standard contenteditable=plaintext-only limits white-space CSS property

Blink supports plaintext-only editing mode by contenteditable=plaintext-only and -webkit-user-modify:read-write-plaintext-only. This is a non-standard feature inherited from WebKit. An element with plaintext-only editing silently changes white-space CSS property: normal to pre-wrap, nowrap to pre, pre-line to pre-wrap, in order to insert \n by typing Enter key instead of <br>, and insert a space character by typing a space key instead of &nbsp; #

This feature was specified in this Spec.

Origin Trials Framework

Implement a framework for exposing experimental features in the browser, but only to specific/registered origins, for limited duration and subject to global usage caps. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/GoogleChrome/OriginTrials/blob/gh-pages/explainer.mdhttps://github.com/GoogleChrome/OriginTrials/blob/gh-pages/developer-guide.mdhttps://docs.google.com/document/d/1qVP2CK1lbfmtIJRIm6nwuEFFhGhYbtThLQPo3CSTtmg/edit?usp=sharing

No linked samples

Passive event listeners

Expose "passive" boolean in the EventListenerOptions dictionary. Implement the behaviour with respect to dispatching passive EventListeners so that calling preventDefault inside executing the passive registered callback only generates a warning to the console. Can be used to dramatically improve scrolling performance. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/RByers/EventListenerOptions/blob/gh-pages/explainer.md

Samples: https://rbyers.github.io/scroll-latency.html

Presentation API

Gives ability to access external presentation-type displays and use them for presenting web content. #

This feature was specified in this Spec.

Resources

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

Samples: https://googlechrome.github.io/samples/presentation-api/https://googlechromelabs.github.io/presentation-api-samples/photowall/

RTCPeerConnection promise-based methods

Add promise-based versions of RTCPeerConnection methods: setLocalDescription, setRemoteDescription, addIceCandidate, createOffer and createAnswer. To be done in 2 steps. First, setLocalDescription, setRemoteDescription and addIceCandidate (anticipated in M50). The new versions of these don't have any overloading issues that can cause problems to existing code. For createOffer and createAnswer the overloading issues will be solved before adding the promised-based versions (anticipated in M51). #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://webrtc.github.io/samples/

Referrer Policy - HTML referrerpolicy attribute

Support for the HTML referrerpolicy attribute on elements: <a>, <area>, <img>, <iframe> (and possibly others) allowing authors to set a Referrer-Policy for a single request associated with the HTML element referencing a sub-resource. More details are disclosed in the spec. #

This feature was specified in this Spec.

Resources

Docs: https://goo.gl/aMFGRYhttps://developer.mozilla.org/en-US/docs/Web/HTML/Element/ahttps://developer.mozilla.org/en-US/docs/Web/HTML/Element/imghttps://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframehttps://developer.mozilla.org/en-US/docs/Web/HTTP/Headershttps://developer.mozilla.org/en-US/docs/Web/HTTP/Content_negotiationhttps://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta

No linked samples

ReferrerPolicy: HTMLLinkElement referrerpolicy attribute

Support for the HTML referrerpolicy attribute on < link> elements allowing authors to set a Referrer-Policy for a single request associated with the HTML element referencing a sub-resource. More details are disclosed in the spec. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement/referrerPolicyhttps://developer.mozilla.org/en-US/docs/Web/HTML/Element/link

No linked samples

Remove propagation of mouse wheel events to parent iframe.

When an iframe does not handle a mouse wheel event it is currently dispatched to the parent iframe. Mouse wheel events are unique in this dispatching aspect and other vendors FireFox and Microsoft both don't dispatch the event to the parent iframe. This request is to make Chrome match FF and Edge. Some public discussion has happened on Fireכox's bug where a web developer asked Mozilla to implement similar behavior to chrome. #

This feature was specified in this Spec.

Resources

Docs: https://bugzilla.mozilla.org/show_bug.cgi?id=1084121

Samples: http://dtapuska.github.io/564042/iframe-scroll.html

Remove: OSX-specific appearances of

Remove the following -webkit-appearance values: -webkit-appearance: continuous-capacity-level-indicator -webkit-appearance: discrete-capacity-level-indicator -webkit-appearance: relevancy-level-indicator -webkit-appearance: rating-level-indicator #

This feature was specified in this Spec.

Resources

Docs: http://trac.webkit.org/wiki/Styling%20Form%20Controls

No linked samples

UIEvents KeyboardEvent |key| attribute

The KeyboardEvent |key| attribute contains information about the character being generated by the key event. #

This feature was specified in this Spec.

Resources

Docs: http://www.w3.org/TR/uievents/#interface-KeyboardEventhttps://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key

Samples: https://googlechrome.github.io/samples/keyboardevent-key-attribute/https://w3c.github.io/uievents/tools/key-event-viewer.html

URL.searchParams readonly attribute

Access the query portion of a URL by way of a URLSearchParams object. #

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/URL

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

Web Animations JavaScript API [level 1 interop part 2]

A unified model for supporting animation and synchronization on the Web platform. This feature covers bug and interop fixes to bring Chrome in line with the spec: lists of values in keyframes; remove dashed-names as keys in keyframes. #

This feature was specified in this Spec.

WebAudio: OfflineAudioContext.length attribute

Add a length attribute to an OfflineAudioContext that indicates the length (in frames) that the offline context will render. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WebAudio/web-audio-api/issues/690https://github.com/WebAudio/web-audio-api/pull/691

No linked samples

Origin Trials in-progress in 51

This release of Chrome had 0 new origin trials.

Flagged features in 51

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

Clients.get(id)

A method that gets a service worker's Client object matching a given id and returns a promise that resolves with it. #

This feature was specified in this Spec.

Resources

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

No linked samples

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 51

This release of Chrome had 3 features deprecated.

Deprecate DHE-based ciphers

Last year, we raised the minimum TLS Diffie-Hellman group size from 512-bit to 1024-bit. As mentioned then, 1024-bit is insufficient for the long-term. However, metrics report that around 95% of DHE connections seen by Chrome use 1024-bit DHE. This, compounded with how DHE is negotiated in TLS, makes it difficult to move past 1024-bit. Servers should upgrade to ECDHE if available. Otherwise, ensure a plain-RSA cipher suite is enabled. #

This feature was specified in this Spec.

Deprecate and remove: 'results' attribute for

In Blink, 'results' attribute just adds a magnifier icon to an INPUT field. It's a cosmetic feature. In desktop Safari, it controls how many submitted queries are shown in a popup opened by clicking the magnifier icon. This is a WebKit-extension, and it seems no one tried to standardize it. #

This feature was specified in this Spec.

Resources

Docs: https://developer.apple.com/library/iad/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/Attributes.html#//apple_ref/doc/uid/TP40008058-results

No linked samples

Service Worker: remove URL.createObjectURL and URL.revokeObjectURL

Per FileAPI: https://w3c.github.io/FileAPI/#creating-revoking change: https://github.com/w3c/FileAPI/commit/b9c2275df53cf3a808f1f272f3d6134d1b920549 URL.createObjectURL and URL.revokeObjectURL should not be exposed in Service Workers. #

This feature was specified in this Spec.

Removed features in 51

This release of Chrome had 3 features removed.

Custom messages in onbeforeunload dialogs

A window’s onbeforeunload property may be set to a function that returns a string. If the function returns a string, then before unloading the page, a dialog is shown to have the user confirm that they indeed want to navigate away. The string provided by the function will no longer be shown in the dialog. Rather, a generic string not under the control of the webpage will be shown. #

This feature was specified in this Spec.

Deprecate and remove SPDY/3.1

SPDY/3.1 is the experimental application layer protocol that provides performance improvements over HTTP/1.1 by, for example, connection multiplexing and server push. SPDY/3.1 is superseded by HTTP/2, which was published as an RFC last May. #

This feature was specified in this Spec.

Deprecate and remove TLS Next Protocol Negotiation

NPN was the TLS extension used to negotiate SPDY (and, in transition, HTTP/2). During the standardization process, NPN was replaced with ALPN, published as RFC 7301 in July 2014. We intend to remove NPN at the same time as the SPDY removal. #

This feature was specified in this Spec.