Chrome 94 Beta: WebCodecs, WebGPU, Scheduling, and More
Unless otherwise noted, changes described below apply to the newest Chrome beta channel release for Android, Chrome OS, Linux, macOS, and Windows. Learn more about the features listed here through the provided links or from the list on ChromeStatus.com. Chrome 94 is beta as of August 26, 2021.
Existing media APIs ( The WebCodecs API eliminates these deficiencies by giving programmers a way to use media components that are already present in the browser. Specifically: 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:
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.
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 The 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.
Chrome is testing a new HTTP status code: 103 Early Hints for preloading subresources earlier. The following features, previously in a Chrome origin trial, are now enabled by default.
This update formalizes that the default color space for Content displayed by The 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 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.
Chrome now supports the keywords In responsive layouts, when adding or removing The This API lets developers manipulate raw media carried by With the removal of Flash, there is no longer a need to return anything for 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.
This version of Chrome incorporates version 9.4 of the V8 JavaScript engine. It specifically includes the change listed below. You can find a complete list of recent features in the V8 release notes.
Chrome now supports a web-exposed sampling profiler for measuring client JavaScript execution time. Gathering JavaScript profiles from real users can help developers debug slow observed performance without invasive manual instrumentation.
This version of Chrome introduces the deprecations and removals listed below. Visit ChromeStatus.com for lists of current deprecations and previous removals.
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 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.
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.
WebCodecs
HTMLMediaElement, Media Source Extensions,
WebAudio,
MediaRecorder, and WebRTC) are high-level and narrowly-focused. A low-level codec API would better support emerging applications, such as latency-sensitive game streaming, client-side effects or transcoding, and polyfillable media container support, without the increased network and CPU cost of JavaScript or WebAssembly codec implementations.
WebGPU
Scheduling APIs: Prioritized scheduler.postTask()
fetch() operations and garbage collection.
scheduler.postTask() method fixes these scheduling dilemmas by letting developers schedule tasks (JavaScript callbacks) with an OS browser scheduler at three levels of priority: user-blocking, user-visible, and background. It also exposes a
TaskController interface, which can dynamically cancel tasks and change their priority.
Origin Trials
New Origin Trials
Early Hints for Navigation
When a 103 response includes <link rel=preload> 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
Canvas Color Management
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:
CanvasRenderingContext2D object or an
ImageData object.
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.
VirtualKeyboard API
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.
inputmode attribute, but have limited control over when the virtual keyboard is shown or hidden.
Other features in this release
CSS
Align transform-style: preserve-3d and perspective Property with the Spec
flex-basis Honors Keywords 'content' and 'min/max/fit-content'
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.
display:flex to a container, you previously had to sometimes add/remove values for each individual item.
content eliminates the need in some situations.
scrollbar-gutter
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 (a.k.a. Breakout Box)
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
navigator.plugins and
navigator.mimeTypes. These APIs were used primarily for:
JavaScript
Self Profiling API
Deprecations, and Removals
Deprecate and Remove WebSQL in Third-Party Contexts
Restrict Private Network Requests for Subresources to Secure Contexts