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 70

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

Enabled by default in 70

This release of Chrome had 21 new features.

'name' attribute for dedicated workers

This feature allows specifying the worker’s name in an optional constructor argument. This lets you distinguish dedicated workers by name when you have multiple workers with the same URL. Developers can print ‘name’ in the DevTools console which will make it easier to debug workers. When the ‘name’ param is omitted, an empty string is used as the default value. For more information, see the discussion at https://github.com/whatwg/html/issues/2477. #

This feature was specified in this Spec.

AV1 Decoder

AV1 is a next generation codec developed by the Alliance for Open Media. AV1 improves compression efficiency by 30% over the current state-of-the-art video codec, VP9. The AV1 decoder will be added to Chrome Desktop x86 devices (Windows, macOS, Linux, Chrome OS) based on the official bitstream specification. At this time, support is limited to “Main” profile 0 and does not include encoding capabilities. The supported container is ISO-BMFF (MP4). #

This feature was specified in this Spec.

Add referrerpolicy support to <script> elements

Many resource-fetching elements have support for the `referrerpolicy` attribute, which lets developers provide a keyword to influence the value of the `Referer` HTTP header that accompanies a request. The <link> element has support for this, so it is technically possible to preload a script with a developer-set referrer policy even though the <script> element does not have support for this attribute. This feature adds `referrerpolicy` support to the <script> element. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/w3c/webappsec-referrer-policy/issues/96

Samples: https://script-referrerpolicy.glitch.me/

Deprecate and remove navigator.getGamepads().item(index)

This change deprecates and removes the legacy "item()" accessor method for the array of Gamepads returned by navigator.getGamepads(). This change improves compatibility with Firefox which is so far the only browser to implement GamepadList. #

This feature was specified in this Spec.

Displaying a dialog will cause pages to lose fullscreen

Dialogs (e.g. authentication prompts, payments, filepickers) require proper context for users to make decisions. Fullscreen, by definition is immersive, and removes the context that a user needs to make a decision. Therefore, whenever a page causes a dialog to be shown, that page will lose any HTML5 fullscreen that it has entered. #

Resources

Docs: https://docs.google.com/document/d/1UhlQmjVk_AJuDLabB__mERqGQ3pKDtoZ-Qi9zudl424

No linked samples

Intervention Reports

An intervention is when a user agent does not honor an application request for security, performance, or annoyance reasons. With this change, Chrome will both send the report to your servers using the Report-To HTTP Response header field and surface the report in the ReportingObserver interface.

This feature was specified in this Spec.

Resources

Docs: https://groups.google.com/a/chromium.org/forum/#!searchin/blink-dev/sort:relevance/blink-dev/V38Q47CxTIY/vIEsirLTDwAJhttps://groups.google.com/a/chromium.org/forum/#!searchin/blink-dev/sort:relevance/blink-dev/B1oztuLlzxg/tuFtADi0AgAJ

No linked samples

Intervention: Disable scripts for Data Saver users on slow connections

If a Data Saver user is on a 2G-speed or slower network according to the NetInfo API, Chrome disables scripts and sends an intervention header on every resource request. Users are shown a Lite Mode UI in the omnibox. Users can enable scripts on the page by tapping “Show original” in the omnibox UI. An intervention report is sent when this optimization occurs. #

This feature was specified in this Spec.

Resources

Docs: https://wicg.github.io/netinfo/#dfn-effective-connection-typeshttps://developers.google.com/web/updates/2018/09/reportingapihttps://www.w3.org/TR/reporting/#intervention-report

No linked samples

Options dictionary for postMessage methods

An optional PostMessageOptions object is being added to the postMessage() function for 6 of the 7 interfaces where it’s supported, specifically, DedicatedWorkerGlobalScope, Worker, ServiceWorker, ServiceWorker, and Window. This gives the function a similar interface on its definitions and allows it to be extended in the future. Since broadcastChannel.postMessage() doesn't take additional arguments (such as transfer) it is not being changed. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/w3c/ServiceWorker/pull/1344

Samples: https://gist.github.com/dtapuska/bd92755849991c2fd9b87e1d46691321

RTCPeerConnection.getConfiguration()

This change implements getConfiguration() according to the WebRTC 1.0. Specifically it returns the last configuration applied via setConfiguration(), or if setConfiguration() hasn't been called, the configuration the RTCPeerConnection was constructed with. #

This feature was specified in this Spec.

Resources

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

No linked samples

RTCPeerConnection.id (Origin Trial)

RTCPeerConnection.id provides a string that identifies an RTCPeerConnection. This is useful when a peer connection needs to be referenced outside the JavaScript context, for example, on the server side, or by a logging mechanism. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1Xr4CF7Arg_0v3QdIOT8eCXPYc6hCZo7Ud1B6zPTcSl4/edit#heading=h.27qen9z79dwm

No linked samples

Remove OS build number from user-agent string

The OS build number (for example, “NJH47F” or “OPM4.171019.021.D1” on Android) has been removed from the user-agent identification (User-Agent header and navigator.userAgent) on Android and on iOS. The iOS change follows Safari's implementation and freezes the build number as "15E148" instead of removing it. This will prevent abuses of that information such as exploit targeting and fingerprinting. It'll also bring Chrome closer in line with RFC 7231 section 5.5.3. #

This feature was specified in this Spec.

Rename Atomics.wake() to Atomics.notify()

The Atomics.wake() method is being renamed Atomics.notify(). This is a low-level function to wake a Worker that has been suspended via Atomics.wait(). This conforms to a specification change made to alleviate confusion created by the similarity of the names wait and wake. #

This feature was specified in this Spec.

Support Opus in mp4 (ISO-BMFF) with Media Source Extensions (MSE)

Opus is an audio codec already supported by the HTML5 src attribute on <url> elements. This applies to mp4, ogg, and webm containers as well as in webm containers using Media Source Extensions. This change adds support for the Opus codec in the mp4 container to MSE. #

This feature was specified in this Spec.

Resources

Docs: https://www.w3.org/TR/mse-byte-stream-format-isobmff/https://chromium-review.googlesource.com/c/chromium/src/+/1178929

Samples: https://googlechrome.github.io/samples/media/opus-in-mp4-for-mse.htmlhttp://storage.googleapis.com/dalecurtis/mse.html?type=mp4_opus&src=bbb-opus.mp4

Support codec and container switching with MSE using SourceBuffer.changeType()

This change adds the SourceBuffer.changeType() method to improve cross-codec or cross-bytestream transitions during playback with Media Source Extensions. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/wicg/media-source/blob/codec-switching/README.mdhttps://services.w3.org/htmldiff?doc1=https%3A%2F%2Fwww.w3.org%2FTR%2Fmedia-source%2F&doc2=https%3A%2F%2Frawgit.com%2FWICG%2Fmedia-source%2Fcodec-switching%2Findex.htmlhttps://services.w3.org/htmldiff?doc1=https%3A%2F%2Frawgit.com%2FW3C%2Fmedia-source%2Fgh-pages%2Findex.html&doc2=https%3A%2F%2Frawgit.com%2FWICG%2Fmedia-source%2Fcodec-switching%2Findex.html

Samples: https://googlechrome.github.io/samples/media/sourcebuffer-changetype.htmlhttps://rawgit.com/wolenetz/shaka-player/mse-codec-switching-demo-using-shaka-player/demo/#asset=https://storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd;lang=en-US;logtoscreen;debug;build=uncompiled;build=uncompiled

Symbol.prototype.description

A description property is being added to Symbol.prototype. This provides a more ergonomic way of accessing the description of a Symbol. Previously, the description could be only be accessed indirectly through the Symbol.protoype.toString(). #

This feature was specified in this Spec.

Resources

Docs: https://v8.dev/features/symbol-description

No linked samples

TLS 1.3

TLS 1.3 is an overhaul of the TLS protocol with a simpler, less error-prone design that improves both efficiency and security. The new design reduces the number of round-trips required to establish a connection and removes legacy insecure options, making it easier to securely configure a server. It additionally encrypts more of the handshake and makes the resumption mode more resilient to key compromise. #

This feature was specified in this Spec.

The <rp> element defaults to display:none

The default style of the <rp> element is changed to "display:none" instead of "display:inline" even if it is not inside the <ruby>element as defined in HTML specification. This behavior is implemented in the UA style sheet, but the web author can override it. Behavior in other browsers: - Edge: display:inline (outside <ruby>), display:none (inside <ruby>) - Firefox: display:none - Safari: display:inline, display:none (inside <ruby>) #

This feature was specified in this Spec.

The ontouch* APIs default to disabled on desktop

To avoid confusion on touch feature detection, ontouch* members on window, document, and element are disabled by default on desktop devices (Mac, Windows, Linux, ChromeOS). Note that this is not disabling touches, and usage such as `addEventListener("touchstart", ...)` is not being affected. #

This feature was specified in this Spec.

Update behavior of CSS Grid Layout percentage row tracks and gutters

This updates the behavior of percentage row tracks and gutters in grid containers with indefinite heights. Previously, these were behaving similarly to percentage heights in regular blocks, but the CSS WG has resolved to make them behave the same as for columns, making them symmetric. Percentages are now ignored when computing intrinsic height and resolved afterwards against that height. That way both column and row axes will have symmetric behavior to resolve percentages tracks and gutters. #

This feature was specified in this Spec.

Resources

Docs: https://blogs.igalia.com/mrego/2018/08/10/changes-on-css-grid-layout-in-percentages-and-indefinite-height/

Samples: https://codepen.io/mrego/pen/jpMeKMhttps://codepen.io/mrego/pen/KBgGWz

WebSocket: permit connection reuse for auth

When receiving a 401 HTTP response during the WebSocket handshake, Chrome will attempt to continue authentication on the same socket. Windows HTTP authentication usually requires a single connection to be reused for authentication to succeed. Until now, Chrome has always closed the connection on a 401 status response, so Windows authentication has not worked. Windows authentication support is mostly useful in enterprise environments where single-sign-on is used. #

This feature was specified in this Spec.

WebUSB on Dedicated Workers

WebUSB is enabled inside dedicated worker contexts. This allows developers to perform heavy I/O and processing of data from a USB device on a separate thread to reduce the performance impact on the main thread. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/odejesush/webusb-on-workers/blob/master/EXPLAINER.mdhttps://docs.google.com/document/d/16T3rhUtYg3GBGotj_pPUXmGmYbf15qdYNEYf4LhKAhM/

Samples: https://github.com/odejesush/weblight/tree/dedicated-workerhttps://github.com/odejesush/webusb-wasm-libgphoto2/tree/worker-implementation

Origin Trials in-progress in 70

This release of Chrome had 3 new origin trials.

Barcode Detection API

The Barcode Detection API is a subset of the Shape Detection API which provides the ability to detect and decode barcodes in an image provided by script. The image may come from any type of image buffer source such as an <image>, <video> or <canvas> tag. Some native platforms include built-in libraries for performing text detection and optical character recognition (OCR) in images. The availability of these libraries means that developers do not need to include a large third party library. #

This feature was specified in this Spec.

Resources

Docs: https://web.dev/shape-detection/https://docs.google.com/document/d/1QeCDBOoxkElAB0x7ZpM3VN3TQjS1ub1mejevd2Ik1gQ/edit

Samples: https://paul.kinlan.me/barcode-detection/https://web.dev/shape-detection/#barcodedetector

RTCPeerConnection.id (Origin Trial)

RTCPeerConnection.id provides a string that identifies an RTCPeerConnection. This is useful when a peer connection needs to be referenced outside the JavaScript context, for example, on the server side, or by a logging mechanism. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1Xr4CF7Arg_0v3QdIOT8eCXPYc6hCZo7Ud1B6zPTcSl4/edit#heading=h.27qen9z79dwm

No linked samples

WebAssembly Worker Based Threads

The WebAssembly Threads feature allows multiple WebAssembly instances in separate Web Workers to share a single WebAssembly.Memory object. As with SharedArrayBuffers in JavaScript, this allows very fast communication between the Workers. This can be used to offload computation to another thread to keep the main thread and its UI responsive. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WebAssembly/threads

No linked samples

Flagged features in 70

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

CSS logical flow-relative values

Add these new values to existing CSS properties: 'float: inline-start', 'float: inline-end', 'clear: inline-start', 'clear: inline-end', 'resize: block', 'resize: inline'. These flow-relative directional keywords resolve to a physical value depending on the writing mode or direction of the element or its containing block. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/docs/Web/CSS/CSS_logical_properties_and_values

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 70

This release of Chrome had 0 features deprecated.

Removed features in 70

This release of Chrome had 3 features removed.

Remove AppCache from non-secure contexts

AppCache is now removed from insecure contexts. AppCache is a powerful feature that allows offline and persistent access to an origin, which is a powerful privilege escalation for an XSS. This will remove that attack vector by only allowing it over HTTPS. This feature was deprecated in Chrome 67. #

Resources

Docs: https://www.chromium.org/Home/chromium-security/deprecating-powerful-features-on-insecure-originshttps://w3c.github.io/webappsec-secure-contexts/

No linked samples

Remove HTMLFrameSetElement's anonymous getter.

Deprecate and remove HTMLFrameSetElement's anonymous getter which is non-standard. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://software.hixie.ch/utilities/js/live-dom-viewer/saved/4928

Token Binding

Token binding allows servers to cryptographically bind bearer tokens (such as cookies) to the TLS layer, to prevent attacks where an attacker exports a bearer token from the user's machine to present to a web service and impersonate the user. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1Ta3GlT_LrqAOLV217Kutn3B2trvifStxB0CThQ_kk78/edit?pli=1#heading=h.e51v5eatk0f3

No linked samples