Google has released version 94 of its Chrome web browser. Google Chrome is available for Windows, Linux and macOS. There are also versions for Android and iOS, but they follow a slightly different release schedule. From this version, Google will release a new version every four weeks, where it used to be every six weeks. Version 94 has already been released three weeks after version 93, so not much has changed. Learn more about the changes made in this release, in addition to the usual bug and security fixescan be found below.
The WebCodecs API eliminates these deficiencies by giving programmers a way to use media components that are already present in the browser. Specifically:
- Video and audio decoders
- Video and audio encoders
- raw video frames
- Image decoders
This feature has also completed its origin trial in Chrome 93 and is now available by default. For more information, see Video processing with WebCodecs.
The WebGPU API is the successor to the WebGL and WebGL2 graphics APIs for the Web. It provides modern features such as “GPU compute” as well as lower overhead access to GPU hardware and better, more predictable performance. This is an improvement over the existing WebGL interfaces, which were designed for drawing images but could only be repurposed for other kinds of computations with great effort.
WebGPU exposes modern computer graphics capabilities, specifically Direct3D 12, Metal, and Vulkan, for performing rendering and computation operations on a graphics processing unit (GPU). Advantages of WebGPU over earlier technologies include:
- Separating resource management, work preparation, and submission to the GPU.
- Pipeline states that function similarly to OS APIs.
- Binding groups that allow graphics drivers to perform needed preparations in advance of rendering.
This feature is starting an origin trial in Chrome 94 with the hope of shipping in Chrome 99. For more information, see Access modern GPU features with WebGPU.
Scheduling APIs: Prioritized scheduler.postTask()
It’s difficult to build web apps that are responsive to user interaction and that remain responsive over time. Scripts are one of the primary culprits hurting responsiveness. Consider a “search-as-you-type” feature: an app with this capability needs to keep up with the user’s typing at the same time that it is fetching and displaying results. This doesn’t take into account anything happening on the page such as animation, which must be rendered smoothly.
The problem is usually tackled by chunking and scheduling main thread work, specifically executing work asynchronously at appropriate times. This approach has its own problems, including the fact that whatever priority the developer sets, it’s still competing for time on the main thread, which doesn’t recognize the developer’s prioritization, and is also responsible for browser tasks such as fetch() operations and garbage collection.
This feature completed its origin trial in Chrome 93 and is now available by default in Chrome. For a list of other new and completed origin trials, see the Origin Trials section below.
In addition to the items above, this version of Chrome introduces the origin trials described below. Origin trials allow you to try new features and give feedback on usability, practicality, and effectiveness to the web standards community. To register for any of the origin trials currently supported in Chrome, including the ones described below, visit the Chrome Origin Trials dashboard. To learn more about origin trials in Chrome, visit the Origin Trials Guide for Web Developers. Microsoft Edge runs its own origin trials separate from Chrome. To learn more, see the Microsoft Edge Origin Trials Developer Console.
New Origin Trials
Early Hints for Navigation
Chrome is testing a new HTTP status code: 103 Early Hints for preloading subresources earlier. When a 103 response includes or other link headers Chromium tries to preload (and/or preconnect, prefetch) specified resources before the final response is received. This gives web developers a way to optimize apps, sites, and pages.
Completed Origin Trials
The following features, previously in a Chrome origin trial, are now enabled by default.
Canvas Color Management
This update formalizes that the default color space for CanvasRenderingContext2D objects and ImageData objects is sRGB. This clarifies that the CanvasRenderingContext2D interface is fully color managed (that all inputs are converted to the canvas color space). These were previously conventions and not clearly specified. This updates makes the following changes:
- Adds parameters to specify a non-sRGB color space when creating a CanvasRenderingContext2D object or an ImageData object.
- Adds support for the Display P3 color space for these parameters.
Content displayed by CanvasRenderingContext2D is currently limited to the sRGB color space, which is less than the capabilities of modern displays and cameras. This feature allows creating a CanvasRenderingContext2D object that is in the Display P3 color space. This also clears up several points of ambiguity about the color behavior of CanvasRenderingContext2D.
The VirtualKeyboard interface has methods and properties to control when a virtual keyboard is shown or hidden. It also fires events with the size of the virtual keyboard when it occludes content in the page. The virtual keyboard is the on-screen keyboard used for input in scenarios where a hardware keyboard may not be available.
Unlike a hardware keyboard, a virtual keyboard can adapt its shape to optimize for the expected input. Developers have control over the displayed shape of the virtual keyboard through the inputmode attribute, but have limited control over when the virtual keyboard is shown or hidden.
Other features in this release
C.S.S Align transform-style: preserve-3d and perspective Property with the Spec
The transform-style: preserve-3d and perspective properties now align with the spec. The preserve-3d property allows child elements to participate in the parent’s 3D scene, and the perspective property applies a perspective transform to child elements. Before this change, Chromium applied both of these effects based on the containing block hierarchy rather than the DOM tree, and allowed them to extend through elements without transform-related properties on them.
flex-basis Honors Keywords ‘content’ and ‘min/max/fit-content’
Chrome now supports the keywords content, min-content, max-content, and fit-content as values for the flex-basis property and its flex shorthand. The content keyword makes flex base size use the default sizing rules as if flex-basis and preferred size property (width or height) are both auto, ignoring any specified width or height in the main axis dimension when flex-basis is auto. The other keywords are the same as usual and give more options for specifying the flex base size.
In responsive layouts, when adding or removing display:flex to a container, you previously had to sometimes add/remove values for each individual item. content eliminates the need in some situations.
the scrollbar-gutter property provides control over the presence of scrollbar gutters (the space reserved to display a scrollbar), allowing developers to prevent layout changes as content expands while avoiding unwanted visuals when scrolling isn’t needed. Note that the presence of the scrollbars themselves is determined by the overflow property. The choice of classical or overlay scrollbars is up to the user agent. This property provides developers with more control over how their layouts interact with the scrollbars provided by the browser.
MediaStreamTrack Insertable Streams (aka Breakout Box)
This API lets developers manipulate raw media carried by MediaStreamTracks such as the output of cameras, microphones, screen captures or the decoder part of a codec and the input to the decoder part of a codec. It uses WebCodecs interfaces to represent raw media frames and exposes them using streams, similar to the way the WebRTC Insertable Streams exposes encoded data from RTCPeerConnections. Example use cases include funny hats and real-time object identification and annotation.
Return Fixed Lists for navigator.plugins and navigator.mimeTypes
With the removal of Flash, there is no longer a need to return anything for navigator.plugins and navigator.mimeTypes. These APIs were used primarily for:
- Probing for Flash player support
Some sites use these APIs to probe for PDF viewer support. with this change, these arrays will return fixed lists containing a standard list of PDF viewer plugins.
Note that this is not the removal or change of any API, it is merely the return of fixed arrays for these two existing APIs.
Deprecations, and Removals
Deprecate and Remove WebSQL in Third-Party Contexts
WebSQL in third-party contexts is now deprecated. Removal is expected in Chrome 97. The Web SQL Database standard was first proposed in April 2009 and abandoned in November 2010. Gecko never implemented this feature and WebKit deprecated in 2019. The W3C encourages Web Storage and Indexed Database for those needing alternatives.
Developers should expect that WebSQL itself will be deprecated and removed when usage is low enough.
Restrict Private Network Requests for Subresources to Secure Contexts
Private network requests for subresources may now only be initiated from a secure context. Private network requests are those initiated from a public network, targeting a private network. Examples include internet to intranet requests and intranet loopbacks.
This is a first step towards fully implementing Private Network Access. Servers running inside local networks, or on a user’s device, expose powerful capabilities to the web in ways that can be quite dangerous. Private Network Access proposes a set of changes to limit the impact of requests to these servers by ensuring that the servers are opting-into any communication with external entities.
For this opt-in to have any meaning, the servers need to be able to ensure that the client origin is authenticated. To that end, only secure contexts are empowered to make external requests.
|Windows 7, Android, Linux, macOS, Windows Server 2008, iOS, Windows Server 2012, Windows 8, Windows 10, Windows Server 2016, Windows Server 2019, Windows 11