Unless otherwise noted, the following changes apply to Chrome 124 stable channel release for Android, ChromeOS, Linux, macOS, and Windows. Learn more about the features listed here through the provided links or from the list on ChromeStatus.com. Chrome 124 is stable as of 16 April 2024. You can download the latest on Google.com for desktop or on the Google Play Store for Android.
Want just the highlights? Check out New in Chrome 124.
Browser Changes and Developer Tools
Universal install
Make any page installable even those not meeting the current PWA installability criteria.
Keyboard-focusable scroll containers
Improves accessibility by making scroll containers focusable using sequential
focus navigation. Prior to this change, the tab key doesn't focus scrollers
unless tabIndex
is explicitly set to 0 or more.
By making scrollers focusable by default, users who can't (or don't want to) use a mouse will be able to focus clipped content using a keyboard's tab and arrow keys. This behavior is enabled only if the scroller does not contain any keyboard focusable children.
This feature will be rolled out slowly starting from Chrome 124, and available to all users by Chrome 125.
Keyboard focusable scrollers | Tracking bug #40113891 | ChromeStatus.com entry | Spec
Permissions Prompt for Web MIDI API
This feature gates access to the Web MIDI API behind a permissions prompt. Previously, the use of SysEx messages with the Web MIDI API requires an explicit user permission.From Chrome 125, all access to the Web MIDI API requires a user permission.
This feature will be rolled out slowly starting from Chrome 124, and available to all users by Chrome 125.
Tracking bug #40063295 | ChromeStatus.com entry | Spec
HTML and DOM
The writingsuggestions
attribute
Browsers are starting to provide writing suggestions to users as they type on various editable fields across the web. While this is generally useful for users, there are cases when developers may want to turn off browser-provided writing assistance, such as extensions or sites that provide similar functionality of their own.
The new attribute writingsuggestions
has values of true
or false
that
allow developers to turn on or off browser-provided writing suggestions. The
attribute's state for an element can also be inherited from ancestor elements,
thereby allowing developers to control this ability at a per-element or
per-document or sub-document scale.
Loading
Sec-CH-UA-Form-Factors client hint
This hint gives a server information about the user agent's form-factors. It returns one or more of the following form-factor values:
- Desktop: A user-agent running on a personal computer.
- Automotive: A user-agent embedded in a vehicle, where the user may be responsible for operating the vehicle and unable to attend to small details.
- Mobile: Small, touch-oriented device typically carried on a user's person.
- Tablet: A touch-oriented device larger than "Mobile" and not typically carried on a user's person.
- XR: Immersive devices that augment or replace the environment around the user.
- EInk: A device characterized by slow screen updates and limited or no color resolution.
- Watch: A mobile device with a tiny screen (typically less than two inches), carried in such a way that the user can glance at it quickly.
Private Network Access permission to relax mixed content
To establish connections to devices on a local network that don't have globally
unique names, and therefore cannot obtain TLS certificates, this feature
introduces a new option to fetch()
to declare a developers' intent to talk to
such a device. This includes a new policy-controlled feature to gate each site's
access to this capability, and new headers for the server's preflight response
to provide additional metadata.
priority
HTTP request header
This adds the priority
request header for all HTTP requests with the priority
information for the request at the time that it was sent.
RFC 9218 (Extensible Prioritization Scheme for HTTP) defines a priority
HTTP
request header to use for signaling request priority to origins (and
intermediaries). It also defines negotiation processes and protocol-level frames
for HTTP/2 and HTTP/3 to carry the same priority information.
The header can only signal the initial priority for a resource when it was first requested while the frame-based mechanisms allow for modifying the priority after the fact.
The header can operate end-to-end to the origin servers (and provide a mechanism for the origin to override the priority if recognized by intermediaries) while the frames are limited to operating on a link level.
This feature is specifically for supporting the header-based prioritization scheme.
Tracking bug #40252001 | ChromeStatus.com entry | Spec
Document render-blocking
This feature enables authors to block rendering of a document until the critical content has been parsed, ensuring a consistent first paint across all browsers. Without this feature, the first paint's state depends on the heuristics for parser yielding which can vary across browsers.
This is particularly important for View Transitions where the parsed DOM state on the first frame can drastically change the transition created.
Note that this feature implements a <link rel=expect href="#id">
syntax that
allows a link element to reference another expected element on the page. The
rendering is then blocked until the expected element is fully parsed. This
supersedes the previous implementation of an HTML attribute that allows the
whole document to be render-blocked.
X25519Kyber768 key encapsulation for TLS
Protects current Chrome TLS traffic against future quantum cryptanalysis by deploying the Kyber768 quantum-resistant key agreement algorithm.
This is a hybrid X25519 and Kyber768 key agreement based on an IETF standard. This specification and launch is outside the scope of W3C. This key agreement will be launched as a TLS cipher, and should be transparent to users.
Protecting Chrome Traffic with Hybrid Kyber KEM | Tracking bug #40910498 | ChromeStatus.com entry | Spec
Media
jitterBufferTarget
attribute
The jitterBufferTarget
attribute allows applications to specify a target
duration of time in milliseconds of media for the RTCRtpReceiver
jitter buffer
to hold. This influences the amount of buffering done by the user agent, which
in turn affects retransmissions and packet loss recovery. Altering the target
value allows applications to control the tradeoff between playout delay and the
risk of running out of audio or video frames due to network jitter.
Tracking bug #324276557 | ChromeStatus.com entry | Spec
Web APIs
The WebSocketStream API
The WebSocket API provides a JavaScript interface to the RFC6455 WebSocket protocol. While it has served well, it is awkward from an ergonomics perspective and is missing the important feature of backpressure. The intent of the WebSocketStream API is to resolve these deficiencies by integrating WHATWG Streams with the WebSocket API.
WebSocketStream: integrating streams with the WebSocket API | Tracking bug #41470216 | ChromeStatus.com entry | Spec
setHTMLUnsafe
and parseHTMLUnsafe
The setHTMLUnsafe
and parseHTMLUnsafe
methods allow the Declarative Shadow
DOM to be used from JavaScript. These methods also offer an easier way to
imperatively parse HTML into DOM, as compared to innerHTML
or DOMParser
.
Streams API: ReadableStream async iteration
The streams APIs provide ubiquitous, interoperable primitives for creating,
composing, and consuming streams of data. This change adds support for the
async iterable protocol to the ReadableStream API,
enabling readable streams to be used as the source of for await...of
loops.
Tracking bug #40612900 | ChromeStatus.com entry | Spec
pageswap
event
The pageswap
event is fired on a document's window object when a navigation
will replace this document with a new document. The event provides activation
info about the navigation (type
, NavigationHistoryEntry
for the new
document).
If the navigation has a cross-document view transition, the event is dispatched before capturing state for the old document. This allows the developer to configure the old state captured for the transition based on the navigation's activation info and the current visual state of the old document.
Tracking bug #41495176 | ChromeStatus.com entry | Spec
Additions to the Attribution Reporting API
Features have been added to the Attribution Reporting API to create additional debugging capabilities by supporting parsing failure debug reports, improve API ergonomics by supporting a field to specify preferred registration platform, and improve privacy.
Document picture-in-picture: add option to hide back-to-tab button
This adds a new parameter (disallowReturnToOpener
) to the Document
picture-in-picture API that, when set to true, hints to the browser that it
shouldn't show a button in the picture-in-picture window that allows the user
to go back to the opener tab.
While having a button to return to the opener tab always makes sense in the video picture-in-picture case (the video stream can be returned to the video element in the opener tab), this is not always the case for document picture-in-picture experiences. This gives developers more control over the user experience when they determine that such a button does not make sense for their use case.
Documentation for Document picture-in-picture | ChromeStatus.com entry | Spec
Rendering and Graphics
SVG context-fill
and context-stroke
Implements an existing SVG feature that allows the keywords context-fill
and
context-stroke
when specifying fill and stroke properties. This only affects
SVG sub-trees that are instantiated with a <use>
element, and <marker>
elements that are instantiated using the marker
property on a <path>
element. In those circumstances, context-fill
and context-stroke
are
resolved to the value of the fill
and stroke
properties on the <use>
or
<path>
.
WebGPU: ServiceWorker and SharedWorker support
ServiceWorker and SharedWorker support is added to WebGPU, aligning with existing WebGL capabilities.
Service Workers enable offline capabilities and background processing for WebGPU. This means graphics-intensive web applications or Chrome Extensions can cache resources and perform computations even when the user isn't actively interacting with the page.
Shared Workers allow multiple tabs or extension contexts to coordinate and share WebGPU resources. This leads to smoother performance and more efficient use of the user's graphics hardware.
Tracking bug #41494731 | ChromeStatus.com entry | Spec
Origin trials in progress
In Chrome 124 you can opt into the following new origin trials.
Deprecation trial for mutation events
Mutation events, including DOMSubtreeModified
, DOMNodeInserted
,
DOMNodeRemoved
, DOMNodeRemovedFromDocument
, DOMNodeInsertedIntoDocument
,
and DOMCharacterDataModified
, can damage page performance, and also
significantly increase the complexity of adding new features to the Web. These
APIs were deprecated from the specification in 2011, and were replaced (in 2012)
by the much better-behaved Mutation Observer API.
Mutation event support will be disabled by default starting in Chrome 127, around July 30, 2024. Code should be migrated to the Mutation Observer API before that date to avoid site breakage. If more time is needed, register for Mutation events deprecation trial to re-enable the feature for a limited time on a given site. This can be used through Chrome 134, ending March 25, 2025.
Alternatively, a MutationEventsEnabled
enterprise policy can also be used for
the same purpose, also through Chrome 134.
Origin Trial | Tracking bug #40268638 | ChromeStatus.com entry | Spec
Deprecations and removals
This version of Chrome introduces the following deprecations and removals. Visit ChromeStatus.com for lists of deprecations and removals.
There are no deprecations or removals in Chrome 124.
Further reading
Looking for more? Check out these additional resources.