It's been four weeks since the release of Google Chrome 105, which means that it is time for the availability of the next major version of the browser. Chrome 106 isn't as significant of an update as its predecessor in terms of new APIs and functionalities, but it still packs a few interesting capabilities and will be landing in the later hours of today.
We will start off with deprecations this time, of which there are three. Persistent quota type is being deprecated in the requestFileSystem() method because it adds unnecessary complexity to the code, which is especially undesirable due to its low usage. HTTP/2 push streams will suffer the same fate as Chrome will no longer receive, store in memory, or use streams sent by this configuration. Similarly, Chrome 106 is also dropping support for non-ASCII characters in cookie domain name attributes, in line with the latest standardization in the RFC 6265bis specification.
In terms of new features, one major enhancement is support for Bring Your Own Buffer (BYOB) in SerialPort. Here is how Google describes it:
Developers can detect support for BYOB readers by calling getReader({ mode: 'byob' }) as older implementations will throw a TypeError when the new parameter is passed. BYOB (or, "bring your own buffer") readers allow the developer to specify the buffer into which data is read instead of the stream allocating a new buffer for each chunk. In addition to potentially reducing memory pressure this allows the developer to control how much data is received as the stream cannot return more than there is space for in the provided buffer. The ability to read a particular amount of data from a port makes this API more familiar to developers used to programming against the Windows and POSIX APIs for serial devices, which operate on this same "bring your own buffer" principle.
BYOB readers allow developers to specify the buffer into which data is read instead of the stream allocating a buffer for each chunk. In addition to the potential reduction in memory pressure this allows script to control how much data is received in a chunk as the stream cannot return more than there is space for in the provided buffer. The ability to read a particular amount of data from a port has been a frequently requested feature by developers used to programming against the Windows and POSIX APIs for serial devices, which operate on this same "bring your own buffer" principle. The current API, in contrast, requires developers to code defensively against extra unwanted data instead of reading only what they are ready to process.
Apart from this, unprefixed hyphenate-character property CSS property is now stable and will ship with Chrome 106. The "-webkit-hyphenate-character" property will be deprecated at a later unspecified date.
Another key improvement in Chrome 106 is that it supports v3 of the Intl.NumberFormat API. This version has the following new functionalities:
- Add 3 new functions to format range of number: formatRange / formatRangeToParts / selectRange
- Grouping Enum
- New Rounding/Precision Options
- Rounding Priority
- Interpret Strings as Decimals
- Rounding Modes
- Sign Display Negative
Additionally, a dequeue callback has been introduced for audio and video interfaces in WebCodecs. It allows developers to find out if the the queue size has decreased in encoding and decoding interfaces instead of setting a timing function to randomly check for the same.
Moreover, the CSS "ic" length unit is now supported. This is used to express length "relative to the advanced measure of the water ideograph" for Japanese and Chinese fonts and is already present in Safari and Firefox. Moving forward, CORS will be enforced in subresource prefetching and loading via Signed HTTP Exchange.
There are a few experimental features in this release of Chrome too. There are two developer trials locked behind flags. The first is updating asynchronous methods in the File System Access API to synchronous methods. This will improve performance and bring consistency to the API. Secondly, Google will be proceeding with Phase 5 of its User-Agent Reduction plan. The idea is to improve privacy while also reducing the chances for errors in parsing a complex User-Agent string.
Similarly, two capabilities have entered Origin trials too. Anonymous iframes offer a way to load documents in external iframes through ephemeral contexts. Since it is a generalization of Cross-Origin-Embedder-Policy (COEP), it removes the requirement of third-party iframes supporting COEP as a pre-requisite to be embedded into a COEP page. This trial will continue until Chrome 108.
A Pop-up API is now offered via Origin trials too, it allows developers to display interactive transient UI elements on top of web apps. This is similar to the "dialog" element but has new features like including light-dismiss behavior, pop-up interaction management, animation, event support, and non-modal mode.
Chrome 106 will start rolling out in the later hours of today. If Chrome does not automatically update to version 106 for you throughout the course of the day, head over to Help > About Google Chrome to trigger the update once it becomes available. Next up is Chrome 107 which will hit the Beta channel on September 29, and will land on Stable on October 25.