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 50

Enabled (22) | Origin Trial (0) | Behind a flag (1) | Deprecated (0) | Removed (10)

Enabled by default in 50

This release of Chrome had 22 new features.

Accept-encoding: br on HTTPS connection

Brotli (shortname "br") is used in WOFF 2.0 web fonts with great success. This is about making it available as an HTTP content-encoding method (e.g. Accept-Encoding: br). Advantages of Brotli over gzip: - significantly better compression density - comparable decompression speed #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://github.com/google/brotli

Access relative and absolute orientation sensors from Chrome for Android for Virtual and Augmented Reality

Summarized this feature includes the following changes/additions: - make 'deviceorientation' relative by default -- now compatible with Safari on iOS, -- better usability (no drift) for VR applications, -- not reliant on magnetometer hence no interference in the presence of magnetic fields. - add dedicated 'deviceorientationabsolute' event for AR applications. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2016/03/device-orientation-changeshttps://goo.gl/4TD4xVhttps://docs.google.com/document/d/1NaXxW5zxB9-RamaL9jx3e_msao-GGrvTnfXJpusWf84/edit#https://github.com/w3c/deviceorientation/issues/21

Samples: https://timvolodine.github.io/deviceorientation-test/http://jsbin.com/device-inertial-sensor-diagnostics

CSS column-fill property

column-fill is the one missing CSS property from the multicol spec (not counting break-after, break-before or break-inside, which really belong in a more generic spec for fragmentation). This property is used to tell the engine whether columns should be balanced or not. If they are balanced, each column gets similar amounts of content inside. If they are not balanced, each column will be filled to the height of the multicol container, until we run out of content. #

This feature was specified in this Spec.

DOMTokenList validation

DOMTokenList has a "supported tokens" concept which will enable feature detection of things like sandbox flags and link relations. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2016/03/domtokenlist-validation-added-in-chrome-50https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList/supports

No linked samples

FormData methods for inspection and modification

The FormData object allows pages to programmatically construct a list of key/value entries that can be submitted via XHR just like an HTML form. Previously, the object was write-only via a single append() method. The spec was fleshed out to add has(), get(), getAll(), delete(), set(), entries(), keys(), values(), forEach() and Symbol.iterator() methods to allow inspection, iteration and modification. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/FormDatahttps://developers.google.com/web/updates/2016/03/formdata-methods-for-inspection-and-modification

Samples: https://googlechrome.github.io/samples/formdata-methods/index.html

HTMLCanvasElement toBlob

Creates a Blob object representing a file containing the image in the canvas, and invokes a callback with a handle to that object. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2016/03/canvas-toblob-in-chrome-50https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob

No linked samples

HTMLMediaElement.play() returns a promise

This is allowing a simpler flow to know whether playback started or whether it failed. It also allows the UA to reject the promise if playback is not allowed in the current context, solving issues websites have to detect whether autoplay restrictions blocked the playback. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2016/03/play-returns-promise

Samples: https://googlechrome.github.io/samples/play-return-promise/index.html

ImageBitmap

An ImageBitmap object represents a bitmap image that can be painted to a canvas without undue latency. An ImageBitmap object can be obtained from a variety of different objects, using the createImageBitmap() method. ImageBitmap provides an asynchronous and resource efficient pathway to prepare textures for rendering in WebGL. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2016/03/createimagebitmap-in-chrome-50https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmaphttps://developer.mozilla.org/en-US/docs/Web/API/ImageBitmapFactories/createImageBitmap

Samples: https://ebidel.github.io/demos/images2video/index.html

Link rel=preload

Defines the "preload" keyword that may be used with `link` elements or Link header. This keyword provides a declarative fetch primitive that initiates an early fetch and separates fetching from resource execution. #

This feature was specified in this Spec.

Resources

Docs: https://www.smashingmagazine.com/2016/02/preload-what-is-it-good-for/https://developers.google.com/web/updates/2016/03/link-rel-preload

No linked samples

Media Source Extensions - SourceBuffer.mode attribute and 'sequence' AppendMode support

Add 'mode' attribute to SourceBuffer, and support the ability to use and switch among 'sequence' and 'segments' appendMode. 'segments' is the default (and current) behavior. 'sequence' enables web developers to simplify some types of media streaming apps that use Media Source Extensions (MSE). 'sequence' appendMode allows more flexibility to maintain a gap-free buffered media timeline for web apps. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2016/03/mse-sourcebufferhttps://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer/modehttps://msdn.microsoft.com/en-us/library/dn903679(v=vs.85).aspx

No linked samples

Merge DOMSettableTokenList into DOMTokenList

Merge DOMSettableTokenList into DOMTokenList in order to simplify spec and implementation. #

This feature was specified in this Spec.

Notification action icons

On some platforms the button rendered for a NotificationAction can display an icon. This change adds an optional icon url for notification actions. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2016/03/notifications

Samples: https://tests.peter.sh/notification-generator/#actions=3

Notification custom timestamps

By default, Web Notifications on Android display the time at which they were created in their top-right corner. However, this is not always appropriate. For example, when the device was offline the event could have happened in the past, or the notification could be shown for an upcoming meeting. The `timestamp` property enables developers to provide the time. Note that we don't visually surface the timestamp on desktop right now, but do use it to affect notification ordering. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2016/03/notifications

Samples: https://tests.peter.sh/notification-generator/#timestamp=2

Notification notificationclose event

Fire a notificationclose event when a notification has been closed by the user in the registered Service Worker. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2016/03/notifications

No linked samples

Notification renotify preference flag

Allows a developer to specify whether a notification should play sound, light, and vibrate alerts again when the notification replaces another notification which is currently displayed. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2016/03/notifications

Samples: https://tests.peter.sh/notification-generator/#tag=1;;renotify=true

Presentation API: implement PresentationConnection.on{connect,close,terminate} and deprecate onstatechange

Deprecate `PresentationConnection.onstatechange` and implement explicit state transition events `onconnect`, `onclose`, `onterminate`. Implement `PresentationConnectionCloseEvent` for `onclose`. This allows us to expose a `PresentationConnectionCloseReason` for clients listening for `onclose`. #

This feature was specified in this Spec.

Push API: Payloads

The ability to include payloads with messages send using the Push API. Message payloads must be encrypted. #

This feature was specified in this Spec.

Resources

Docs: https://w3c.github.io/push-api/#pushmessagedata-interfacehttps://tools.ietf.org/html/draft-ietf-webpush-encryption

Samples: https://github.com/googlechrome/push-encryption-node

RegExp @@match, @@search, @@replace, @@split (ES6)

Support well-known symbols to enhance the Regex capabilities #

This feature was specified in this Spec.

Resources

Docs: https://code.google.com/p/v8/issues/detail?id=4345https://code.google.com/p/v8/issues/detail?id=4343https://code.google.com/p/v8/issues/detail?id=4344https://code.google.com/p/v8/issues/detail?id=4305

No linked samples

Sequential focus navigation starting point

The feature 'sequential focus navigation starting point' defines where we start to search for focusable area for sequential focus navigation (TAB or Shift-TAB) when there is no focused area. #

This feature was specified in this Spec.

Web Animations JavaScript API [level 1 interop part 1]

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: Cancel events; Animation.id; pause() moves from idle to the paused state; deprecate dashed-names as keys in keyframes. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2016/03/web-animations-improvements

No linked samples

WebAudio: Biquad filters run at a-rate

Automations for the BiquadFilter node will run at a-rate (updated every frame) instead of the current k-rate (updated every rendering quantum of 128 frames) #

This feature was specified in this Spec.

Resources

Docs: http://webaudio.github.io/web-audio-api/#the-biquadfilternode-interface

No linked samples

X25519 for TLS

Curve25519, designed by Prof. Dan Bernstein, is one of the two curves selected by the CFRG for recommendation. When compared to P-256, the most commonly used curve in TLS today, it admits simpler, faster implementations that are more naturally resistant to side-channels. In Chrome 50, we will be adding support for X25519, the Diffie-Hellman primitive over curve25519, to TLS. #

This feature was specified in this Spec.

Origin Trials in-progress in 50

This release of Chrome had 0 new origin trials.

Flagged features in 50

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

Symbol.hasInstance (ES6)

Symbol.hasInstance enables customizing the behavior of the 'instanceof' operator. #

This feature was specified in this Spec.

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 50

This release of Chrome had 0 features deprecated.

Removed features in 50

This release of Chrome had 10 features removed.

Deprecate and Remove: -webkit-background-composite

Removing -webkit-background-composite as the property is non-standard and supported only by WebKit and Blink. #

This feature was specified in this Spec.

Deprecate and remove some nonstandard uses of RTCPeerConnection legacy methods.

The latest version of the WebRTC spec introduces new promise-based methods for the RTCPeerConnection interface while keeping support for legacy callback-based methods. Some nonstandard uses of the legacy methods prevent the implementation of the new promise-based methods due to overloading conflicts and they are now deprecated. More specifically, calling createOffer() and createAnswer() without providing a failure callback (mandatory in the spec, but optional in Chromium) is now deprecated. #

This feature was specified in this Spec.

Resources

Docs: https://w3c.github.io/webrtc-pc/#legacy-interface-extensionshttps://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/createOfferhttps://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/createAnswer

No linked samples

Deprecate/remove

Remove support for the "subresource" rel of HTMLLinkElement, as it is not useful, proprietary, and buggy. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2016/03/link-rel-preload

No linked samples

Document.defaultCharset

The defaultCharset attribute on the Document interface is non-standard and will be removed. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/whatwg/dom/issues/58

No linked samples

KeyboardEvent.prototype.keyLocation

The keyLocation attribute allows disambiguating between keys that are on multiple places on a keyboard, like numbers and Enter. It is an alias of the location attribute, which is the more widely supported and standardized form. The keyLocation attribute will be removed. #

This feature was specified in this Spec.

Object.observe()

Observe changes to JS objects. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observehttp://www.html5rocks.com/en/tutorials/es7/observe/

Samples: http://simpl.info/observe

Remove geolocation from Insecure Contexts

Per https://w3c.github.io/webappsec-secure-contexts/, we are deprecating and then removing geolocation from insecure contexts. Geolocation is a powerful feature that allows access to the user's precise location, which is a powerful privilege escalation for HTTP content injection. This will remove that attack vector by only allowing it over HTTPS. #

This feature was specified in this Spec.

Resources

Docs: Part of the larger effort to remove powerful features on insecure origins:https://chromium.org/Home/chromium-security/deprecating-powerful-features-on-insecure-originsblink-dev discussion and API owner approval:https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/ylz0Zoph76A/C1VNAhJ8BQAJ

No linked samples

Remove insecure TLS version fallback

TLS has a version negotiation mechanism to securely introduce new versions without breaking compatibility. Yet buggy servers implemented this wrong in the past, so browsers were forced to add (non-standard) insecure fallbacks to work around this. Unlike TLS's actual version negotiation, the fallback is insecure. Network attackers can downgrade to weaker versions, despite both client and server supporting newer, more secure versions. Note that this does *not* remove TLS 1.0 and TLS 1.1. #

This feature was specified in this Spec.

SVGElement.offset(Parent|Top|Left|Width|Height)

These attributes should only be supported on HTMLElement, but have been supported on all Elements in WebKit and Blink. getBoundingClientRect() can typically be used as a replacement. #

This feature was specified in this Spec.

Resources

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

No linked samples

XMLHttpRequestProgressEvent (position and totalSize)

The XMLHttpRequestProgressEvent interface will be removed, together with the attributes position and totalSize. Instead the ProgressEvent interface will be used, and the attributes loaded and total should be used instead. #

This feature was specified in this Spec.