Published: November 13, 2024
Unless otherwise noted, the following changes apply to the newest Chrome beta 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 132 is beta as of November 13, 2024. You can download the latest on Google.com for desktop or on Google Play Store on Android.
CSS
This release adds two new CSS features.
CSS Anchor Positioning: allow anchor-size()
in inset
and margin
properties
Originally, anchor-size()
was only allowed in sizing properties. The
specification was changed to allow anchor-size()
in insets and margins as
well.
CSS sideways writing modes
Support of sideways-rl
and sideways-lr
keywords for the writing-mode
CSS
property. sideways-rl
and sideways-lr
are helpful to write non-CJK text
vertically. They don't have behaviors favorable for CJK languages unlike
vertical-rl
and vertical-lr
.
Web APIs
Capture all screens
Capture all the screens currently connected to the device using
getAllScreensMedia()
.
Calling getDisplayMedia()
multiple times requires multiple user gestures,
burdens the user with choosing the next screen each time, and does not guarantee
to the app that all the screens were selected. The getAllScreensMedia()
method
improves on all of these fronts.
This feature is shipping on Desktop only.
Dialog toggle events
It's useful to know when <dialog>
elements open and close, and popover
already has ToggleEvent
which is dispatched when a popover opens or closes.
Previously, to detect when a <dialog>
opens you had to register a mutation
observer to check for open, however, this is quite a lot of work where an event
would be easier.
This change incorporates the same ToggleEvent
that popovers dispatch, but for
<dialog>
elements: when showModal
or show
is called, <dialog>
dispatches
a ToggleEvent
with newState=open
. When a <dialog>
is closed (using the
form, button, or closewatcher) it should dispatch a ToggleEvent
with
newState=closed
.
Element Capture
Given a video MediaStreamTrack
obtained through pre-existing means to initiate
tab-capture, Element Capture allows mutating the track to only capture a subtree
of the DOM starting at a given Element.
The API bears some resemblance to the Region Capture API, but affords greater flexibility for applications, because occluding and occluded content are both excluded from the capture.
FedCM authorization features
This bundles a few features that can be used by Identity Providers (IdP) to implement authorization flows such as letting a user grant access to their calendar to an Relying Party (RP). Specifically:
- The IdP needs to be able to show a custom prompt for the permission (continuation API).
- The RP needs an extensible way to communicate to the IdP what it wants access to (parameters API).
- The RP needs to be able to customize or suppress the text referring to the IdP sharing "name, email address and profile picture" because in this situation they are asking for different information (fields API).
- The IdP may want to use a different endpoint to implement the authorization flow (multiple configURLs).
- Certain accounts may only be eligible for one of the authentication and authorization flows and so there needs to be a way to show different accounts in the two flows (account labels API).
FedCM Mode API and Use Other Account API
Two new extensions for FedCM:
- Mode: The
active
mode allows websites to call FedCM inside a button click (for example, clicking on a Sign-in to IdP button), which requires FedCM to guarantee it will always respond with a visible user interface. Calling the FedCM API in active mode takes users to login to the Identity Provider (IdP) when users are logged-out. Also, because the active mode is called within an explicit user gesture, the UI is also more prominent (for example, centered and modal) compared to the UI from the passive mode (which doesn't require a user gesture requirement and can be called on page load). - Use Other Account: With this extension, an IdP can allow users to sign in to other accounts.
Fetch: Request.bytes()
and Response.bytes()
Add a bytes()
method to the Request
and Response
interfaces, which returns
a promise that resolves with a Uint8Array. While Request
and Response
have an
arrayBuffer()
method, you can't read directly from a buffer. You have to
create a view such as a Uint8Array
to read it. The bytes()
method improves the
ergonomics of getting the body of Request and Response.
File System Access for Android and WebView
This API enables developers to build powerful apps that interact with other (non-Web) apps on the user's device using the device's file system. After a user grants a web app access, this API allows the app to read or save changes directly to files and folders selected by the user. Beyond reading and writing files, this API provides the ability to open a directory and enumerate its contents, as well as store file and directory handles in IndexedDB to later regain access to the same content.
File System access shipped on Desktop in Chrome 86, with Chrome 132 it's available on Android and WebView.
Ignore Strict-Transport-Security for localhost
Strict-Transport-Security
(STS) response headers can cause problems for
localhost web servers because STS applies host-wide, across all ports. This
causes compatibility problems for web developers testing locally. It also
affects end-users who use software packages that commonly start localhost
web servers for ephemeral reasons. For example, communication of an auth token
from a web login to a local software package. If one local listener sets
Strict-Transport-Security
on a localhost response, it's applied to all
subsequent localhost requests regardless of port.
Chrome 132 resolves this problem by ignoring Strict-Transport-Security
headers
on responses from localhost URLs.
Keyboard focusable scroll containers
The rollout of this feature (from Chrome 130) was stopped due to an accessibility regression. This is fixed and the feature continues to rollout with Chrome 132.
Private State Token API Permissions Policy default allowlist wildcard
Access to the Private State Token API is gated by Permissions Policy features.
Chrome 132 updates the default allowlist for both private-state-token-issuance
and private-state-token-redemption
features from self
to *
(wildcard).
PushMessageData::bytes()
The PushMessageData
interface mimics the Body
interface, which was amended
earlier this year with a new bytes()
method, following the principle that APIs
should generally vend byte buffers as Uint8Arrays
. Chrome 132 realigns with the
Body
interface by providing the bytes()
accessor on the PushMessageData
interface as well.
Saved queries in sharedStorage.selectURL
sharedStorage.selectURL()
now allows queries to be saved and reused on a
per-page basis, where the two per-page-load budgets are charged the first time a
saved query is run but not for subsequent runs of the saved query during the
same page-load. This is accomplished with a savedQuery
parameter in the
options for selectURL()
that names the query.
Throw exception for popovers and dialogs in non-active documents
Previously calling showPopover()
or showModal()
on a popover or dialog that
resides within an inactive document would silently fail. No exception would be
thrown, but as the document is inactive, no popover or dialog would be shown. As
of Chrome 132, these situations now throw InvalidStateError
.
WebAuthn Signal API
Allows WebAuthn relying parties to signal information about existing credentials back to credential storage providers, so that incorrect or revoked credentials can be updated or removed from provider and system UI.
Learn more about the Signal API for passkeys on Chrome desktop.
WebGPU: 32-bit float textures blending
The float32-blendable
GPU feature makes GPU textures with formats r32float
,
rg32float
, and rgba32float
blendable.
WebGPU: Expose GPUAdapterInfo from GPUDevice
The GPUDevice adapterInfo
attribute exposes the same GPUAdapterInfo
as the
GPUAdapter
object.
WebGPU: Texture view usage
Adds an optional field to WebGPU texture view creation to request a subset of the usage flags from the source texture.
By default, texture view usage inherits from the source texture but there are view formats which can be incompatible with the full set of inherited usages. Adding a usage field to texture view creation allows the user request a subset of the source texture's usages that are valid with the view format and specific to their intended usage of the texture view.
WebGPU implementations can also optimize the creation of low level resources and improve performance when using views with more specialized usage flags.
New origin trials
In Chrome 132 you can opt into the following new origin trials.
Document-Isolation-Policy
Document-Isolation-Policy
allows a document to enable crossOriginIsolation
for
itself, without having to deploy COOP or COEP, and regardless of the
crossOriginIsolation
status of the page. The policy is backed by process
isolation. Additionally, the document non-CORS cross-origin subresources will
either be loaded without credentials or will need to have a CORP header.
Explicit Compile Hints with Magic Comments
This feature lets you attach information about which functions should be eager parsed and compiled in JavaScript files. The information will be encoded as magic comments.
Deprecations and removals
This version of Chrome introduces the following deprecations and removals. Visit ChromeStatus.com for lists of planned deprecations, current deprecations and previous removals.
This release of Chrome removes two features.
navigator.storage
no longer an EventTarget
navigator.storage
was made an EventTarget
for the Storage Pressure Event,
which never made it past the prototype phase. This dead code is being removed
and as a result, navigator.storage
will no longer extend EventTarget
.
Remove Prefixed HTMLVideoElement
Fullscreen APIs
The prefixed HTMLVideoElement fullscreen APIs have been deprecated from Chrome
They were replaced by the Element.requestFullscreen()
API, which first
shipped unprefixed in Chrome 71, in 2018. As of 2024, most browsers have had
support for the unprefixed APIs for a few years now.
Chrome 132 removes the following from HTMLVideoElement
:
- The
webkitSupportsFullscreen
attribute. - The
webkitDisplayingFullscreen
attribute. - The
webkitEnterFullscreen()
method. - The
webkitExitFullscreen()
method. Note the different capitalization of the "S" in FullScreen. - The
webkitEnterFullScreen()
method. - The
webkitExitFullScreen()
method.
These methods are now only aliases for the modern API. Their use has declined steadily over the years.