Chrome Release Summary

Chrome version: 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 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 63

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

Enabled by default in 63

This release of Chrome had 19 new features.

Async Iteration / Async Generators

Async Generator functions and a new iteration protocol (used by for-await-of loops and yield* expressions), to streamline consumption or implementation of streaming data sources. #

This feature was specified in this Spec.

Resources

Docs: https://jakearchibald.com/2017/async-iterators-and-generators/http://2ality.com/2016/10/asynchronous-iteration.htmlhttps://ponyfoo.com/articles/javascript-asynchronous-iteration-proposal

No linked samples

CSS 'q' length unit

support 'q' absolute length unit. 1q is equivalent to 1/40th of 1cm. #

This feature was specified in this Spec.

Resources

Docs: http://thenewcode.com/1158/The-Q-Continuum-Using-q-Measurements-In-CSShttp://tosche.net/2013/10/font-size-in-the-metric-system_e.html

Samples: http://w3c-test.org/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html

CSS font-variant-east-asian

Add support for font-variant-east-asian and respective mapping for the font: shorthand and the font-variant: shorthand. #

This feature was specified in this Spec.

CSS overscroll-behavior

CSS `overscroll-behavior` allows developers to decide the browser's behavior once a scroller has reached its full extent. The unused delta can be propagated to the parent causing scroll chaining, create a glow/bounce effect without chaining, or just get consumed silently. This would be a standardization of "-ms-scroll-chaining" with some modification. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/w3c/csswg-drafts/issues/769

Samples: https://ebidel.github.io/demos/chatbox.html

Device Memory JS API

JS API to expose the device Memory to web applications. #

Resources

Docs: https://github.com/w3c/device-memory#the-web-exposed-apihttps://developer.mozilla.org/en-US/docs/Web/API/Navigator/deviceMemory

No linked samples

EventTarget.addEventListener/removeEventListener throws a TypeError

EventTarget.addEventListener/removeEventListener throws a TypeError when the second argument |callback| is neither of EventListener nor Null nor Undefined. Historically Blink had not been reporting a TypeError for the second argument of EventTarget.{add,remove}EventListener, but reports a TypeError since M63. #

This feature was specified in this Spec.

HTMLAllCollection and HTMLCollection's named properties are no longer enumerable

Blink now follows the DOM and HTML specs and declares HTMLAllCollection, HTMLCollection, HTMLFormControlsCollection and HTMLOptionsCollection with the [LegacyUnenumerableNamedProperties] extended attribute. Its named properties are no longer marked as enumerable, being left out of calls to e.g. Object.keys() and for-in loops. #

This feature was specified in this Spec.

Interface properties with a Promise type no longer throw exceptions

Interface properties that return a Promise now reject (meaning they'll invoke a catch block) instead of throwing an exception. This has already been done for functions. #

This feature was specified in this Spec.

Intl.PluralRules

Intl.PluralRules is a new API which exposes language-dependent data on pluralization forms of numbers. Given a locale and a number, Intl.PluralRules outputs a category, which can then be used for selection of the pluralization form of surrounding text. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2017/10/intl-pluralruleshttps://tc39.github.io/ecma402/#pluralrules-objects

No linked samples

JavaScript module import()

This JavaScript feature adds a "function-like" import() module loading syntactic form to JavaScript. The existing syntactic forms for importing modules are static declarations. However, it's also desirable to be able to dynamically load parts of a JavaScript application at runtime. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/tc39/proposal-dynamic-import

No linked samples

Make /deep/ behave like the descendant combinator " " in CSS live profile (in css file or inside of <style>)

Make /deep/ behave like the descendant combinator " " in CSS live profile; effectively no-op. See "Intent to Remove" thread for more details: https://groups.google.com/a/chromium.org/d/topic/blink-dev/HX5Y8Ykr5Ns/discussion https://www.w3.org/TR/selectors-4/#profiles CSS live profile = CSS selector used in CSS file or inside of <style>. CSS snapshot profile = CSS selector used in JS, such as querySelector(..) #

This feature was specified in this Spec.

MediaStreamTrack.applyConstraints

applyConstraints() allows changing the constraints associated with a MediaStreamTrack. This is useful to change settings such as video resolution or frame rate. applyConstraints() was previously released with support for ImageCapture (https://w3c.github.io/mediacapture-image/). This feature includes adding support for the main spec (https://w3c.github.io/mediacapture-main/). #

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraintshttps://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/applyConstraints

No linked samples

No State Prefetch

A mechanism for speculative prefetching of webpages and their subresources that are on a critical path of page loading *without* executing any JavaScript or creating a complex state of the web platform. This system is not purely “no state” because HTTP cache allows to create cookies and other state related to validating cache entries. It is important to note that the “NoState Prefetch” is not an API. Server side detection: https://bugs.chromium.org/p/chromium/issues/detail?id=796855 #

Resources

Docs: https://docs.google.com/document/d/16VCYGGWau483IMSxODpg5faZny1FJ6vNK2v-BuM5EhU/edit

No linked samples

Promise.prototype.finally

This finally method is used for registering a callback to be invoked when a promise is settled (either fulfilled, or rejected). #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2017/10/promise-finally

No linked samples

Web Storage: Anonymous getter may return null

Blink used to add an anonymous named property getter to the Storage interface (used by sessionStorage and localStorage) that behaved slightly differently from the getItem() method. The anonymous getter has been removed, and getItem() is now used behind the scenes instead. One visible consequence is that attempting to access a key that does not exist via the getter will return null instead of undefined. #

This feature was specified in this Spec.

Web Storage: Methods are now enumerable

The methods belonging to the Storage IDL interface (available via sessionStorage and localStorage), such as getItem(), clear() and removeItem() are now enumerable as mandated by the HTML spec. They are not returned by Object.keys(), but do appear in e.g. for-in loops. #

This feature was specified in this Spec.

beforeprint and afterprint events

'beforeprint' event is dispatched before starting printing, and 'afterprint' event is dispatched after finishing printing. They are useful to build printing-only content, and clean it up. #

This feature was specified in this Spec.

display:minimal-ui

Support the minimal-ui display mode as defined in the Web App Manifest. This property will result in Chrome displaying a "Chrome Custom Tab"-like UI.

This feature was specified in this Spec.

Resources

No linked docs

Samples: You can test this by adding to home screen the site at: https://piotrswigon.github.io/pwa-demo/minimal-demo/

navigator.webdriver

The Webdriver specification defines a `navigator.webdriver` property to indicate if UA is controlled by automation. This property is defined and returns `true` when running Chrome with the `--headless` flag. #

This feature was specified in this Spec.

Origin Trials in-progress in 63

This release of Chrome had 1 new origin trials.

Motion sensors APIs based on Generic Sensor API

Motion sensors extends the Generic Sensor API to expose a set of low-level and fusion sensors. This feature includes JS interfaces representing accelerometers, linear acceleration sensors, gyroscopes, absolute orientation sensors and relative orientation sensors. #

This feature was specified in this Spec.

Resources

Docs: https://www.w3.org/TR/generic-sensor/https://w3c.github.io/accelerometer/https://w3c.github.io/gyroscope/https://w3c.github.io/orientation-sensor/https://w3c.github.io/motion-sensors/https://developers.google.com/web/updates/2017/09/sensors-for-the-web

Samples: https://intel.github.io/generic-sensor-demos/

Flagged features in 63

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 63

This release of Chrome had 0 features deprecated.

Removed features in 63

This release of Chrome had 2 features removed.

Shadow-Piercing descendant combinator, '/deep/'

The /deep/ combinator was a part of Shadow DOM v0, which has been deprecated and removed. Starting in M63, the /deep/ combinator was treated as a no-op, equivalent to a space " " combinator. As the code for all of Shadow DOM v0 was removed completely in M89, /deep/ will now throw exceptions in some JS operations, such as querySelectorAll. Simply replace it with " " to get pre-M89 behavior back. #

This feature was specified in this Spec.

macOS: rounded borders for buttons in User-Agent stylesheet

Only for macOS. The default stylesheet for <button>, <input type=button>, <input type=reset>, <input type=submit>, a button in <input type=file> was changed in order to match OS-native buttons. Background-color, border, border-radius, and padding were changed. #

Resources

Docs: https://bugs.chromium.org/p/chromium/issues/detail?id=546679#c13

No linked samples