Google Chrome Release Notes

Last updated: Mar 18, 2026

  • Mar 10, 2026
    • Date parsed from source:
      Mar 10, 2026
    • First seen by Releasebot:
      Mar 18, 2026
    Google logo

    Google Chrome by Google

    Chrome 146 Bookmark collections drop down LLM Tools

    Google Chrome releases Chrome 146 stable, introducing scroll-triggered CSS animations, root font scaling aligned to OS and browser text size, scoped custom element registries, and assorted WebGPU, JavaScript and performance improvements for Android, ChromeOS, Linux, macOS, and Windows.

    Chrome 146

    Stable release date:
    March 10th, 2026

    Unless otherwise noted, the following changes apply to Chrome 146 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.

    Want just the highlights? Check out
    New in Chrome 146
    .

    CSS and UI

    Scroll-triggered animations

    This feature adds scroll-position-based control of animations, for example, playing, pausing, and resetting animations.

    A common pattern on pages across the web is to start an animation when a scroll position is reached. Developers often do this by using JavaScript to manually detect that an element is within its scroll container's viewport and to start a corresponding animation (for example, sliding that element into view). Many of these use cases rely on declaratively provided information. This feature lets you create such interactions declaratively with CSS, which lets the user agent offload this interaction to a worker thread. The API also includes JavaScript interfaces that let you extend the feature to web animations in addition to CSS animations.

    Tracking bug #390314945 | ChromeStatus.com entry | Spec

    The trigger-scope property
    The trigger-scope property

    The trigger-scope property lets you limit the names of
    animation triggers
    declared by
    trigger-instantiating properties
    .

    Trigger-instantiating properties, for example,
    timeline-trigger
    , declare names that the
    animation-trigger
    property can reference to attach animations to triggers. However, these names are global by default (similar to
    anchor-name
    ), and it is often useful to limit the visibility of the names to isolate animation-to-trigger interactions.

    Tracking bug #466134208 | ChromeStatus.com entry | Spec

    meta name="text-scale"

    meta name="text-scale"

    The
    root element
    's default font size scales in proportion to both the operating system's and browser's text scale setting. This lets pages that follow best practices around
    font-relative units
    (that is, use
    rem
    and
    em
    for font sizes and page elements that adapt to user text size preferences) respect the user's OS-level text scale setting. This also disables existing browser-based mechanisms (that is, full-page zoom on windows) and heuristics (that is, text autosizing on mobile). You can signal to the browser that the page is constructed in a way (that is, with
    rem
    and
    em
    ) that scales well across various user-selected font size preferences. Similar to
    env(preferred-text-scale)
    , which provides a way to access the text scale, this API extends this by enabling scaling using the
    root element
    's default font size and opting out of automatic text scaling.

    Tracking bug #430566925 | ChromeStatus.com entry | Spec

    Scoped custom element registry

    This feature lets multiple custom element definitions for a single tag name exist within a page. This prevents custom element name conflicts when a web app uses libraries from multiple sources. This is achieved by allowing user code to create multiple custom element registries and associate them with tree scopes and elements that function as scoping objects.

    Tracking bug #40826514 | ChromeStatus.com entry | Spec

    Capabilities

    Populate targetURL during file handling
    Populate
    targetURL
    during file handling

    The Launch Handler implementation now ensures
    LaunchParams.targetURL
    is populated when a PWA is launched with file handling. Before this change, the property was null when a file launch was directed to an existing window. This change ensures that the URL from the manifest
    action
    field (the same URL the document must currently load) is available to the
    launchQueue
    consumer.

    Tracking bug #464314997 | ChromeStatus.com entry | Spec

    Stop re-queueing LaunchParams on reload

    Prevent the
    launchQueue
    from re-sending the last
    LaunchParams
    (including file handles) when a user reloads the page. Previously, a page refresh triggered the launch consumer again with the data from the original launch. This change ensures that a reload is treated as a standard navigation rather than a "re-launch," and the
    launchQueue
    won't be populated with duplicate files unless a new file launch event occurs.

    Tracking bug #40204185 | ChromeStatus.com entry

    DOM

    Navigation API: add post-commit handler from precommit
    Navigation API: add
    post-commit handler
    from
    precommit

    When intercepting navigations with the
    navigate
    event,
    precommitHandlers
    and post-commit ordinary handlers are passed separately.

    This works well when there is only one or the other, but can be cumbersome when the flow includes a
    precommitHandler
    that leads to a
    post-commit handler
    .

    This addition is a small ergonomic improvement that lets you register a post-commit handler while invoking a precommit handler.

    Tracking bug #465487215 | ChromeStatus.com entry | Spec

    Graphics

    WebGPU: Texture and Sampler Lets

    Add a language feature to WGSL,
    texture_and_sampler_let
    , that lets you store
    texture
    and
    sampler
    objects into a
    let
    declaration in WGSL.

    Tracking bug #459500757 | ChromeStatus.com entry | Spec

    WebGPU: Transient attachments

    This feature adds functionality to the WebGPU spec after its first shipment in a browser.

    A new
    TRANSIENT_ATTACHMENT GPUTextureUsage
    lets you create attachments that let render pass operations stay in tile memory, avoiding VRAM traffic and potentially avoiding VRAM allocation for the textures.

    Tracking bug #462620664 | ChromeStatus.com entry | Spec

    WebGPU Compatibility mode

    This mode adds an opt-in, lightly restricted subset of the WebGPU API that can run older graphics APIs, for example,
    OpenGL
    and
    Direct3D11
    . By opting into this mode and obeying its constraints, you can extend the reach of your
    code
    WebGPU
    applications to many older devices that don't have the modern, explicit graphics APIs that core WebGPU requires. For simple applications, the only required change is to specify the
    featureLevel
    when calling
    requestAdapter
    . For more advanced applications, some modifications might be necessary to accommodate the mode's restrictions. Since Compatibility mode is a subset, the resulting applications are also valid WebGPU Core applications and run even on user agents that don't support Compatibility mode.

    Tracking bug #442618060 | ChromeStatus.com entry | Spec

    JavaScript

    Iterator sequencing

    A TC39 proposal to create
    iterators
    by sequencing existing
    iterators
    . This introduces
    Iterator.concat
    (
    ...items
    ).

    Tracking bug #434977727 | ChromeStatus.com entry | Spec

    Selective permissions intervention

    When you grant a website permission to access a powerful API (for example,
    Bluetooth
    ,
    Camera
    ,
    Clipboard
    ,
    DisplayCapture
    ,
    Geolocation
    ,
    Microphone
    ,
    Serial
    , and
    USB
    ), your consent is intended for the site, not necessarily for every third-party script running on the page. In particular, embedded ad scripts running in the main frame or same-origin iframes can use the page's permission to opportunistically access this sensitive data. You might not be aware that an advertisement is accessing your information.

    This intervention aims to better align a granted permission with your intent by preventing ad script in a context with API permission from using it, reinforcing your trust and control over your data.

    Tracking bug #435214052 | ChromeStatus.com entry | Spec

    Preserve dropEffect values from dragover to drop Events
    Preserve
    dropEffect
    values from
    dragover
    to
    drop
    Events

    The
    HTML5 Drag and Drop API
    lets web applications handle drag-and-drop operations through a series of events:
    dragstart , dragenter , dragover , dragleave , drop , and dragend . During these events, the
    dataTransfer.dropEffect
    property indicates which operation (
    copy , move , link , or none ) should be performed.

    According to the
    HTML5 specification
    , the
    dropEffect
    value set by web applications during the last
    dragover
    event should be preserved and available in the subsequent
    drop
    event.

    However, Chromium-based browsers were overwriting the web application's
    dropEffect
    value with the browser's own negotiated operation before the
    drop
    event fired, breaking specification compliance and limiting your control over drag-and-drop behavior. This behavior has now been changed.

    Tracking bug #40068941 | ChromeStatus.com entry | Spec

    Multimedia

    Playback Statistics API for WebAudio

    This feature adds an
    AudioContext.playbackStats
    attribute which returns an
    AudioPlaybackStats
    object. This object provides audio playback statistics, for example,
    average latency , minimum/maximum latency , underrun duration , and underrun count . This API lets web applications monitor audio playback quality and detect glitches.

    Note: This feature was tracked as
    AudioContext.playoutStats
    . It has been renamed to
    AudioContext.playbackStats
    to align with the final Web Audio API specification. The old name is supported as a deprecated alias for backward compatibility.

    Tracking bug #475838360 | ChromeStatus.com entry | Spec

    Network

    Data URL MIME Type Parameter Preservation

    Preserve
    MIME type parameters
    (for example,
    charset , boundary ) in data URL
    Content-Type
    headers as specified in the
    Fetch Standard
    .

    Tracking bug #40487194 | ChromeStatus.com entry | Spec

    Performance

    LCP: Match specced behavior for emitting candidates

    The
    LCP
    algorithm now emits candidates based on the largest painted image instead of the largest pending-but-not-yet-painted image. This might cause more intermediate candidates to be emitted to the performance timeline.

    In each animation frame, after it has been presented, the LCP algorithm emits a new candidate (at most one) to the performance timeline if there is a new largest text or image that was painted in that frame. The algorithm also tracks the "largest pending image", which is the largest still-loading image, and uses that image's size to determine whether the new candidate is largest. This means a slow loading large image can prevent emission of intermediate LCP candidates, and these candidates often provide useful information for you to understand the loading progression.

    This behavior emerged during Interop 2025 as a difference with other engines, and the team agreed to align to emit at most one candidate per frame based on the set of painted image and text elements for that frame.

    Tracking bug #482261053 | ChromeStatus.com entry | Spec

    Security

    Sanitizer API

    The Sanitizer API offers a way to remove content that might execute script from arbitrary, user-supplied HTML content. The goal is to make it easier to build XSS-free web applications.

    Tracking bug #40138584 | ChromeStatus.com entry | Spec

    Origin trials

    WebNN

    WebNN lets web applications and frameworks take advantage of native operating system services for machine learning and the underlying hardware capabilities available on your computer to implement consistent, efficient, and reliable ML experiences on the web.

    Origin Trial | Tracking bug #40206287 | ChromeStatus.com entry | Spec

    CPU Performance API

    This API exposes information about your device's power. This API targets web applications that use this information to provide an improved user experience, possibly in combination with the Compute Pressure API, which provides information about the device's CPU pressure or utilization and lets applications react to changes in CPU pressure.

    Tracking bug #449760252 | ChromeStatus.com entry | Spec

    Speculation rules: form_submission field
    Speculation rules:
    form_submission
    field

    This extends
    speculation rules
    syntax, letting you specify the
    form_submission
    field for
    prerender
    .

    This field directs the browser to prepare the
    prerender
    as a form submission, so it can be activated by real form submission navigations. For example, a simple search form results in a
    /search?q=XXX
    GET request navigation; web developers have requested support for this.

    Tracking bug #346555939 | ChromeStatus.com entry | Spec

    Focusgroup

    The Focusgroup feature facilitates keyboard focus navigation among a set of focusable elements by using the keyboard arrow keys.

    Learn more about focusgroup in
    Request for developer feedback: focusgroup
    .

    Origin Trial | Tracking bug #1286127 | ChromeStatus.com entry | Spec

    Except as otherwise noted, the content of this page is licensed under the
    Creative Commons Attribution 4.0 License
    , and code samples are licensed under the
    Apache 2.0 License
    . For details, see the
    Google Developers Site Policies
    . Java is a registered trademark of Oracle and/or its affiliates.

    Last updated 2026-03-10 UTC.

    Original source Report a problem
  • Mar 10, 2026
    • Date parsed from source:
      Mar 10, 2026
    • First seen by Releasebot:
      Mar 18, 2026
    Google logo

    Google Chrome by Google

    What's new in Dev Tools (Chrome 146)

    Google Chrome releases Chrome 146, delivering improved Adopted Style Sheets support in Elements, faster Console history, and streamlined privacy debugging, plus small fixes. DevTools MCP server now at 0.19.0 with Lighthouse audits, slim mode, new debugging skills, and expanded tooling. Console edits preserved; Privacy panel renamed to Security and UI polishing across accessibility.

    Chrome 146 brings improved support for Adopted Style Sheets in the Elements panel, significantly improves Console history navigation, and streamlines the Privacy debugging workflow, together with various other small fixes and updates.

    Dev Tools MCP server updates

    The DevTools MCP server is now at version 0.19.0, bringing powerful new tools, efficiency improvements, and specialized debugging skills:

    • Integrated Lighthouse audits: You can now run Lighthouse audits directly through MCP, enabling automated performance and quality checks within your agentic workflows.
    • Slim Mode: A new --slim mode is now available, designed to optimize tool descriptions and parameters for maximum token savings.
    • New Debugging Skills: Added dedicated skills specifically for auditing and debugging accessibility, as well as debugging and optimizing Largest Contentful Paint (LCP).
    • Expanded Tooling and Capabilities: The server now supports storage-isolated browser contexts, experimental screencast recording, a new take_memory_snapshot tool, and advanced interaction capabilities like type_text.

    See the public changelog on GitHub for the full list of changes.

    Preserve Console history edits

    A long-standing friction point in the Console has been resolved. Previously, if you were editing a command pulled from history and navigated away (by pressing Up or Down), your edits were lost.

    In Chrome 146, DevTools now preserves your edits as you navigate through your command history. You can start modifying a previous command, browse for another one, and return to your draft without losing your work.

    This was a community contribution, thanks to @hjanuschka!

    Chromium issue: 355108929

    Improved support for Adopted Style Sheets

    Debugging Web Components and modern CSS architectures is now much easier. Adopted Style Sheets are no longer hidden away; they are now grouped under a dedicated #adopted-style-sheets node within the DOM tree in the Elements panel.

    You can inspect these sheets just like standard

    Original source Report a problem
  • All of your release notes in one feed

    Join Releasebot and get updates from Google and hundreds of other software products.

  • Mar 10, 2026
    • Date parsed from source:
      Mar 10, 2026
    • First seen by Releasebot:
      Mar 11, 2026
    Google logo

    Google Chrome by Google

    What's new in Dev Tools (Chrome 146)

    Google releases Chrome 146 DevTools with better Adopted Style Sheets in Elements, preserved console history edits, and streamlined privacy debugging plus assorted fixes. MCP server 0.19.0 adds Lighthouse audits, slim mode, new debugging skills, isolated contexts, screencast, take_memory_snapshot. Accessibility and UI polish.

    Chrome 146 brings improved support for Adopted Style Sheets in the Elements panel, significantly improves Console history navigation, and streamlines the Privacy debugging workflow, together with various other small fixes and updates.

    Dev Tools MCP server updates

    The DevTools MCP server is now at version 0.19.0, bringing powerful new tools, efficiency improvements, and specialized debugging skills:

    • Integrated Lighthouse audits: You can now run Lighthouse audits directly through MCP, enabling automated performance and quality checks within your agentic workflows.
    • Slim Mode: A new --slim mode is now available, designed to optimize tool descriptions and parameters for maximum token savings.
    • New Debugging Skills: Added dedicated skills specifically for auditing and debugging accessibility, as well as debugging and optimizing Largest Contentful Paint (LCP).
    • Expanded Tooling and Capabilities: The server now supports storage-isolated browser contexts, experimental screencast recording, a new take_memory_snapshot tool, and advanced interaction capabilities like type_text.

    See the public changelog on GitHub for the full list of changes.

    Preserve Console history edits

    A long-standing friction point in the Console has been resolved. Previously, if you were editing a command pulled from history and navigated away (by pressing Up or Down), your edits were lost.

    In Chrome 146, DevTools now preserves your edits as you navigate through your command history. You can start modifying a previous command, browse for another one, and return to your draft without losing your work.

    This was a community contribution, thanks to @hjanuschka!

    Chromium issue: 355108929

    Improved support for Adopted Style Sheets

    Debugging Web Components and modern CSS architectures is now much easier. Adopted Style Sheets are no longer hidden away; they are now grouped under a dedicated #adopted-style-sheets node within the DOM tree in the Elements panel.

    You can inspect these sheets just like standard

    Original source Report a problem
  • Mar 10, 2026
    • Date parsed from source:
      Mar 10, 2026
    • First seen by Releasebot:
      Mar 11, 2026
    Google logo

    Google Chrome by Google

    Chrome 146 Bookmark collections drop down LLM Tools

    Google launches Chrome 146 stable with declarative CSS scroll animations, scoped animation triggers, text-scale aware root font, and multiple WebGPU and tooling refinements across Android, ChromeOS, Linux, macOS, and Windows.

    Chrome 146

    Stable release date:
    March 10th, 2026

    Unless otherwise noted, the following changes apply to Chrome 146 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.

    Want just the highlights? Check out
    New in Chrome 146
    .

    CSS and UI

    Scroll-triggered animations

    This feature adds scroll-position-based control of animations, for example, playing, pausing, and resetting animations.

    A common pattern on pages across the web is to start an animation when a scroll position is reached. Developers often do this by using JavaScript to manually detect that an element is within its scroll container's viewport and to start a corresponding animation (for example, sliding that element into view). Many of these use cases rely on declaratively provided information. This feature lets you create such interactions declaratively with CSS, which lets the user agent offload this interaction to a worker thread. The API also includes JavaScript interfaces that let you extend the feature to web animations in addition to CSS animations.

    Tracking bug #390314945 | ChromeStatus.com entry | Spec

    The trigger-scope property

    The trigger-scope property

    The trigger-scope property lets you limit the names of
    animation triggers
    declared by
    trigger-instantiating properties
    .

    Trigger-instantiating properties , for example,
    timeline-trigger , declare names that the
    animation-trigger
    property can reference to attach animations to triggers. However, these names are global by default (similar to
    anchor-name
    ), and it is often useful to limit the visibility of the names to isolate animation-to-trigger interactions.

    Tracking bug #466134208 | ChromeStatus.com entry | Spec

    meta name="text-scale"

    meta name="text-scale"

    The
    root element
    's default font size scales in proportion to both the operating system's and browser's text scale setting. This lets pages that follow best practices around
    font-relative units
    (that is, use
    rem
    and
    em
    for font sizes and page elements that adapt to user text size preferences) respect the user's OS-level text scale setting. This also disables existing browser-based mechanisms (that is, full-page zoom on windows) and heuristics (that is, text autosizing on mobile). You can signal to the browser that the page is constructed in a way (that is, with
    rem
    and
    em
    ) that scales well across various user-selected font size preferences. Similar to
    env(preferred-text-scale)
    , which provides a way to access the text scale, this API extends this by enabling scaling using the
    root element
    's default font size and opting out of automatic text scaling.

    Tracking bug #430566925 | ChromeStatus.com entry | Spec

    Scoped custom element registry

    This feature lets multiple custom element definitions for a single tag name exist within a page. This prevents custom element name conflicts when a web app uses libraries from multiple sources. This is achieved by allowing user code to create multiple custom element registries and associate them with tree scopes and elements that function as scoping objects.

    Tracking bug #40826514 | ChromeStatus.com entry | Spec

    Capabilities

    Populate targetURL during file handling

    Populate
    targetURL
    during file handling

    The Launch Handler implementation now ensures
    LaunchParams.targetURL
    is populated when a PWA is launched with file handling. Before this change, the property was null when a file launch was directed to an existing window. This change ensures that the URL from the manifest
    action
    field (the same URL the document must currently load) is available to the
    launchQueue
    consumer.

    Tracking bug #464314997 | ChromeStatus.com entry | Spec

    Stop re-queueing LaunchParams on reload

    Prevent the
    launchQueue
    from re-sending the last
    LaunchParams
    (including file handles) when a user reloads the page. Previously, a page refresh triggered the launch consumer again with the data from the original launch. This change ensures that a reload is treated as a standard navigation rather than a "re-launch," and the
    launchQueue
    won't be populated with duplicate files unless a new file launch event occurs.

    Tracking bug #40204185 | ChromeStatus.com entry

    DOM

    Navigation API: add post-commit handler from precommit

    Navigation API: add
    post-commit handler
    from
    precommit

    When intercepting navigations with the
    navigate
    event,
    precommitHandlers
    and post-commit ordinary handlers are passed separately.

    This works well when there is only one or the other, but can be cumbersome when the flow includes a
    precommitHandler
    that leads to a
    post-commit handler
    .

    This addition is a small ergonomic improvement that lets you register a post-commit handler while invoking a precommit handler.

    Tracking bug #465487215 | ChromeStatus.com entry | Spec

    Graphics

    WebGPU: Texture and Sampler Lets

    Add a language feature to WGSL,
    texture_and_sampler_let
    , that lets you store
    texture
    and
    sampler
    objects into a
    let
    declaration in WGSL.

    Tracking bug #459500757 | ChromeStatus.com entry | Spec

    WebGPU: Transient attachments

    This feature adds functionality to the WebGPU spec after its first shipment in a browser.

    A new
    TRANSIENT_ATTACHMENT GPUTextureUsage
    lets you create attachments that let render pass operations stay in tile memory, avoiding VRAM traffic and potentially avoiding VRAM allocation for the textures.

    Tracking bug #462620664 | ChromeStatus.com entry | Spec

    WebGPU Compatibility mode

    This mode adds an opt-in, lightly restricted subset of the WebGPU API that can run older graphics APIs, for example,
    OpenGL
    and
    Direct3D11
    . By opting into this mode and obeying its constraints, you can extend the reach of your
    WebGPU
    applications to many older devices that don't have the modern, explicit graphics APIs that core WebGPU requires. For simple applications, the only required change is to specify the
    featureLevel
    when calling
    requestAdapter
    . For more advanced applications, some modifications might be necessary to accommodate the mode's restrictions. Since Compatibility mode is a subset, the resulting applications are also valid WebGPU Core applications and run even on user agents that don't support Compatibility mode.

    Tracking bug #442618060 | ChromeStatus.com entry | Spec

    JavaScript

    Iterator sequencing

    A TC39 proposal to create
    iterators
    by sequencing existing
    iterators
    . This introduces
    Iterator.concat
    (...items).

    Tracking bug #434977727 | ChromeStatus.com entry | Spec

    Selective permissions intervention

    When you grant a website permission to access a powerful API (for example,
    Bluetooth , Camera , Clipboard , DisplayCapture , Geolocation , Microphone , Serial , and USB ), your consent is intended for the site, not necessarily for every third-party script running on the page. In particular, embedded ad scripts running in the main frame or same-origin iframes can use the page's permission to opportunistically access this sensitive data. You might not be aware that an advertisement is accessing your information.

    This intervention aims to better align a granted permission with your intent by preventing ad script in a context with API permission from using it, reinforcing your trust and control over your data.

    Tracking bug #435214052 | ChromeStatus.com entry | Spec

    Preserve dropEffect values from dragover to drop Events

    Preserve
    dropEffect
    values from
    dragover
    to
    drop
    Events

    The
    HTML5 Drag and Drop API
    lets web applications handle drag-and-drop operations through a series of events:
    dragstart , dragenter , dragover , dragleave , drop , and dragend . During these events, the
    dataTransfer.dropEffect
    property indicates which operation (
    copy , move , link , or none ) should be performed.

    According to the
    HTML5 specification
    , the
    dropEffect
    value set by web applications during the last
    dragover
    event should be preserved and available in the subsequent
    drop
    event.

    However, Chromium-based browsers were overwriting the web application's
    dropEffect
    value with the browser's own negotiated operation before the
    drop
    event fired, breaking specification compliance and limiting your control over drag-and-drop behavior. This behavior has now been changed.

    Tracking bug #40068941 | ChromeStatus.com entry | Spec

    Multimedia

    Playback Statistics API for WebAudio

    This feature adds an
    AudioContext.playbackStats
    attribute which returns an
    AudioPlaybackStats
    object. This object provides audio playback statistics, for example,
    average latency , minimum/maximum latency , underrun duration , and underrun count . This API lets web applications monitor audio playback quality and detect glitches.

    Note:
    This feature was tracked as
    AudioContext.playoutStats
    . It has been renamed to
    AudioContext.playbackStats
    to align with the final Web Audio API specification. The old name is supported as a deprecated alias for backward compatibility.

    Tracking bug #475838360 | ChromeStatus.com entry | Spec

    Network

    Data URL MIME Type Parameter Preservation

    Preserve
    MIME type parameters
    (for example,
    charset , boundary ) in data URL
    Content-Type
    headers as specified in the
    Fetch Standard
    .

    Tracking bug #40487194 | ChromeStatus.com entry | Spec

    Performance

    LCP: Match specced behavior for emitting candidates

    The
    LCP
    algorithm now emits candidates based on the largest painted image instead of the largest pending-but-not-yet-painted image. This might cause more intermediate candidates to be emitted to the performance timeline.

    In each animation frame, after it has been presented, the LCP algorithm emits a new candidate (at most one) to the performance timeline if there is a new largest text or image that was painted in that frame. The algorithm also tracks the "largest pending image", which is the largest still-loading image, and uses that image's size to determine whether the new candidate is largest. This means a slow loading large image can prevent emission of intermediate LCP candidates, and these candidates often provide useful information for you to understand the loading progression.

    This behavior emerged during Interop 2025 as a difference with other engines, and the team agreed to align to emit at most one candidate per frame based on the set of painted image and text elements for that frame.

    Tracking bug #482261053 | ChromeStatus.com entry | Spec

    Security

    Sanitizer API

    The Sanitizer API offers a way to remove content that might execute script from arbitrary, user-supplied HTML content. The goal is to make it easier to build XSS-free web applications.

    Tracking bug #40138584 | ChromeStatus.com entry | Spec

    Origin trials WebNN

    WebNN lets web applications and frameworks take advantage of native operating system services for machine learning and the underlying hardware capabilities available on your computer to implement consistent, efficient, and reliable ML experiences on the web.

    Origin Trial | Tracking bug #40206287 | ChromeStatus.com entry | Spec

    CPU Performance API

    This API exposes information about your device's power. This API targets web applications that use this information to provide an improved user experience, possibly in combination with the Compute Pressure API, which provides information about the device's CPU pressure or utilization and lets applications react to changes in CPU pressure.

    Tracking bug #449760252 | ChromeStatus.com entry | Spec

    Speculation rules: form_submission field

    Speculation rules:
    form_submission
    field

    This extends
    speculation rules
    syntax, letting you specify the
    form_submission
    field for
    prerender
    .

    This field directs the browser to prepare the
    prerender
    as a form submission, so it can be activated by real form submission navigations. For example, a simple search form results in a
    /search?q=XXX
    GET request navigation; web developers have requested support for this.

    Tracking bug #346555939 | ChromeStatus.com entry | Spec

    Focusgroup

    The Focusgroup feature facilitates keyboard focus navigation among a set of focusable elements by using the keyboard arrow keys.

    Learn more about focusgroup in
    Request for developer feedback: focusgroup
    .

    Origin Trial | Tracking bug #1286127 | ChromeStatus.com entry | Spec

    Last updated 2026-03-10 UTC.

    Original source Report a problem
  • Feb 25, 2026
    • Date parsed from source:
      Feb 25, 2026
    • First seen by Releasebot:
      Mar 18, 2026
    Google logo

    Google Chrome by Google

    What's New in WebGPU (Chrome 146)

    Google Chrome releases WebGPU updates for Chrome 146, adding compatibility mode on OpenGL ES 3.1 to broaden access to older devices, support for transient attachments, WGSL texture_and_sampler_let, and Dawn updates with new limit tiers and SPIR-V validation on Android.

    What's New in Web GPU (Chrome 146)

    Published: February 25, 2026

    Support WebGPU compatibility mode on OpenGL ES 3.1

    While WebGPU is designed to align with modern graphics APIs like Vulkan, Metal, and D3D12, many users have older hardware that does not support these standards. To bridge this gap and ensure broad accessibility, Chrome introduces a new opt-in feature called compatibility mode.

    This mode lets you run WebGPU on older graphics APIs like OpenGL ES 3.1. By targeting a slightly restricted subset of the WebGPU spec, you ensure your web app is accessible to everyone, from the latest gaming rigs to older laptops and mobile devices. While starting with Android, the team is exploring support for other devices, such as ChromeOS with OpenGL ES 3.1 and Windows with Direct3D 11.

    For many web apps, you can enable compatibility mode by passing
    featureLevel: "compatibility"
    when you call
    requestAdapter(). If your device supports Core WebGPU, Chrome will return a Core-capable adapter, but your web app will know to stay within the compatibility limits unless it enables the
    "core-features-and-limits"
    feature (or enables all available features). More complex applications might require minor adjustments to fit within the mode's restrictions.

    // Request a GPUAdapter in compatibility mode.
    const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
    const device = await adapter.requestDevice();

    See the WebGPU Fundamentals guide for detailed information about the specific architectural restrictions of this mode. Additionally, all WebGPU samples now support compatibility mode. You can also read the intent to ship.

    Transient attachments

    You can use the new
    TRANSIENT_ATTACHMENT
    GPUTextureUsage flag to create memory-efficient attachments. This lets render pass operations stay in tile memory, which avoids VRAM traffic and can avoid VRAM allocation for the textures.

    By declaring a texture as transient (or "memoryless"), the GPU knows that it only needs the texture's contents temporarily—specifically, only within the current render pass. Moreover, because the texture's contents are discarded after the render pass, the driver may not need to allocate VRAM for it at all.

    The following example shows how to create a transient texture.

    const adapter = await navigator.gpu.requestAdapter();
    const device = await adapter.requestDevice();
    if ('TRANSIENT_ATTACHMENT' in GPUTextureUsage) {
      const transientTexture = device.createTexture({
        size: [42, 42],
        // The TRANSIENT_ATTACHMENT flag indicates the texture content is temporary,
        // potentially keeping it in fast on-chip memory.
        usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT,
        format: 'rgba8unorm',
      });
    }
    

    See the Hello Triangle MSAA - WebGPU Sample and the intent to ship.

    WGSL texture_and_sampler_let extension

    The WGSL language extension
    texture_and_sampler_let
    lets you assign texture or sampler variables to a
    let
    within a WGSL shader. This feature currently provides an alternative naming mechanism and prepares for bindless support where methods returning textures or samplers can be stored directly into local variables.

    See the following example and the intent to ship.

    @group(0) @binding(0) var tex : texture_2d<f32>;
    @group(1) @binding(0) var store : texture_storage_2d<r32float, read_write>;
    @fragment fn main() {
      let a = tex;
      var res : vec4f = textureLoad(a, vec2i(1i), 0);
      textureStore(store, vec2i(0i), res);
    }
    

    Dawn updates

    The following new limit tiers are available:

    • maxStorageBuffersPerShaderStage supports up to 16. See issue 366151398.
    • maxSampledTexturesPerShaderStage supports up to 48. See issue 475255737.

    SPIR-V validation is enabled by default on Android to provide an additional security layer and prevent driver instability from malformed input. See issue 473526182.

    This covers only some of the key highlights. Check out the exhaustive list of commits.

    What's New in WebGPU

    A list of everything that has been covered in the What's New in WebGPU series.

    Chrome 146

    • Support WebGPU compatibility mode on OpenGL ES 3.1
    • Transient attachments
    • WGSL texture_and_sampler_let
    • Dawn updates

    Last updated 2026-02-25 UTC.

    Original source Report a problem
  • Feb 25, 2026
    • Date parsed from source:
      Feb 25, 2026
    • First seen by Releasebot:
      Feb 25, 2026
    Google logo

    Google Chrome by Google

    What's New in Web GPU (Chrome 146)

    Chrome 146 introduces WebGPU compatibility mode for OpenGL ES 3.1, broadening accessibility across older devices. It also adds transient attachments, WGSL texture_and_sampler_let, and Dawn updates, plus new shader and validation improvements.

    Support WebGPU compatibility mode on OpenGL ES 3.1

    While WebGPU is designed to align with modern graphics APIs like Vulkan, Metal, and D3D12, many users have older hardware that does not support these standards. To bridge this gap and ensure broad accessibility, Chrome introduces a new opt-in feature called compatibility mode.

    This mode lets you run WebGPU on older graphics APIs like OpenGL ES 3.1. By targeting a slightly restricted subset of the WebGPU spec, you ensure your web app is accessible to everyone, from the latest gaming rigs to older laptops and mobile devices. While starting with Android, the team is exploring support for other devices, such as ChromeOS with OpenGL ES 3.1 and Windows with Direct3D 11.

    For many web apps, you can enable compatibility mode by passing featureLevel: "compatibility" when you call requestAdapter(). If your device supports Core WebGPU, Chrome will return a Core-capable adapter, but your web app will know to stay within the compatibility limits unless it enables the "core-features-and-limits" feature (or enables all available features). More complex applications might require minor adjustments to fit within the mode's restrictions.

    // Request a GPUAdapter in compatibility mode.

    const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
    const device = await adapter.requestDevice();
    

    See the WebGPU Fundamentals guide for detailed information about the specific architectural restrictions of this mode. Additionally, all WebGPU samples now support compatibility mode. You can also read the intent to ship.

    Transient attachments

    You can use the new TRANSIENT_ATTACHMENT GPUTextureUsage flag to create memory-efficient attachments. This lets render pass operations stay in tile memory, which avoids VRAM traffic and can avoid VRAM allocation for the textures.

    By declaring a texture as transient (or "memoryless"), the GPU knows that it only needs the texture's contents temporarily—specifically, only within the current render pass. Moreover, because the texture's contents are discarded after the render pass, the driver may not need to allocate VRAM for it at all.

    The following example shows how to create a transient texture.

    const adapter = await navigator.gpu.requestAdapter();
    const device = await adapter.requestDevice();
    if ('TRANSIENT_ATTACHMENT' in GPUTextureUsage) {
      const transientTexture = device.createTexture({
        size: [42, 42],
        // The TRANSIENT_ATTACHMENT flag indicates the texture content is temporary,
        // potentially keeping it in fast on-chip memory.
        usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT,
        format: 'rgba8unorm',
      });
    }
    

    See the Hello Triangle MSAA - WebGPU Sample and the intent to ship.

    WGSL texture_and_sampler_let extension

    The WGSL language extension texture_and_sampler_let lets you assign texture or sampler variables to a let within a WGSL shader. This feature currently provides an alternative naming mechanism and prepares for bindless support where methods returning textures or samplers can be stored directly into local variables.

    See the following example and the intent to ship.

    @group(0) @binding(0) var tex : texture_2d<f32>;
    @group(1) @binding(0) var store : texture_storage_2d<r32float, read_write>;
    @fragment
    fn main() {
      let a = tex;
      var res : vec4f = textureLoad(a, vec2i(1i), 0);
      textureStore(store, vec2i(0i), res);
    }
    

    Dawn updates

    The following new limit tiers are available:

    • maxStorageBuffersPerShaderStage supports up to 16. See issue 366151398.
    • maxSampledTexturesPerShaderStage supports up to 48. See issue 475255737.

    SPIR-V validation is enabled by default on Android to provide an additional security layer and prevent driver instability from malformed input. See issue 473526182.

    This covers only some of the key highlights. Check out the exhaustive list of commits.

    What's New in WebGPU

    A list of everything that has been covered in the What's New in WebGPU series.

    Chrome 146

    • Support WebGPU compatibility mode on OpenGL ES 3.1
    • Transient attachments
    • WGSL texture_and_sampler_let
    • Dawn updates
    Original source Report a problem
  • Feb 11, 2026
    • Date parsed from source:
      Feb 11, 2026
    • First seen by Releasebot:
      Mar 18, 2026
    Google logo

    Google Chrome by Google

    What's new in Dev Tools (Chrome 145)

    Google Chrome releases Chrome DevTools enhancements in version 145, including MCP server updates with auto-connect, unified emulation, and preserved logs; soft navigations in trace view; precise line-level profiling and faster trace interaction; render-blocking resource identification and individual request throttling; CSS @starting-style debugging; AI assistance paste from clipboard; UI and accessibility improvements.

    Similar to Chrome 139, for Chrome 145 the Chrome DevTools team prioritized product excellence, tackling known issues, unifying UI implementations, and improving test health. The numerous subtle fixes and refinements across various panels landed through this effort should make your daily debugging and development workflows smoother, more reliable, and more productive.

    Dev Tools MCP server updates

    The DevTools MCP server has received significant updates from v0.11.0 to v0.14.0, introducing key automation and emulation capabilities.

    • Auto Connection: The new --auto-connect flag allows the server to automatically discover and attach to a running Chrome instance, removing the need to manually copy WebSocket URLs.
    • Unified Emulation: A single emulate tool now handles geolocation, network conditions (offline/slow 3G), CPU throttling, and user agent overrides.
    • Preserved Logs: You can now access network requests and console messages across navigations, mirroring the "Preserve Log" functionality in DevTools.

    See the public changelog on GitHub for the full list of changes.

    Soft Navigations are now visible in trace view

    Soft navigation and soft LCP markers are now visible in the Performance panel trace view if your website is using Single Page Application (SPA) architecture. This makes it significantly easier to debug performance in modern web applications where navigations happen without a full page reload.

    Read more about soft navigations on this blog post. The live metrics view and Performance Insights don't reflect soft navigations, but that work is planned for future releases as work on this API continues.

    [Image: A soft nav marker in the Performance panel with a trace from youtube.com.]

    Chromium issues: 450673886, 450673887

    Line-level profiler timings now far more precise

    After recording a trace in the Performance panel, the Sources panel displays the timings observed in the trace on a per-line basis. This lets you identify exactly which lines of code are consuming the most execution time.

    This feature previously had bugs that made it unreliable when the source was pretty-formatted (using the {} button) or when using source-mapped scripts. These issues have been resolved, making line-level profiling accurate and usable for production-ready, minified code.

    [Image: Execution timings next to line numbers in the Sources panel.]

    Faster trace interaction

    A major bottleneck in the Performance panel has been resolved. Previously, selecting time ranges or panning through busy traces could result in significant UI lag due to redundant event sorting. This has been optimized, making interaction with complex flame charts substantially more responsive.

    Chromium issue: 457866795

    Identify render-blocking resources

    The Network panel now includes a dedicated Render blocking column. This lets you immediately identify which resources (JavaScript, CSS, and fonts) are preventing the browser from painting the page content, helping you optimize your First Paint performance.

    [Image: The new Render blocking column in the network panel.]

    Chromium issue: 41169154

    Individual network request throttling

    The Request conditions panel (formerly Network request blocking), which was introduced in Chrome 144, now has individual request throttling enabled by default.

    While this feature was introduced in the previous milestone, it was disabled due to a late regression. In Chrome 145, you can now reliably throttle specific network requests to simulate slow dependencies or test how your app handles specific resource delays.

    Open the panel from ⋮ > More Tools > Request Conditions to start throttling or blocking specific patterns.

    Debugging improvements for @starting-style

    Support for debugging the CSS @starting-style rule is now enabled by default. This feature helps you inspect styles applied when an element is first rendered, which is essential for debugging entry animations and transitions.

    Chromium issue: 465367572

    AI Assistance updates

    • Multimodal Input: You can now paste images directly from your clipboard into the AI Assistance chat to ask questions about visual issues.

    Chromium issue: 470997699

    Miscellaneous highlights

    • Elements: A new View source badge has been added next to the root tag, providing a quick way to jump to the document's source code.
    • Sources: Editable JSON files now support a reversible pretty-print toggle, making it easier to edit data without losing the original formatting.
    • Network: Context menu items have been updated to use sentence case for better readability.
    • Console: Fixed an issue where filters for uncaught exceptions were lost after reloading the page.

    Chromium issues: 378870233, 461041921, 433162438

    Accessibility announcements

    This version brings the following accessibility improvements:

    • Search: Screen readers now announce the number of search results (e.g., "1 of 5") when using Ctrl+F.
    • Recorder: Screen readers now announce when a recording has been successfully deleted or imported.
    • Settings: Screen readers now announce the number of results when filtering in the Experiments tab.
    • Privacy: The Origin group in the Privacy panel is now fully accessible using the keyboard.
    • UI: Improved visibility of dock icons and disabled select elements for users in High Contrast and Forced Colors modes.

    Chromium issues: 448675917, 392090449, 471713944, 471141907, 471095586

    Original source Report a problem
  • Feb 11, 2026
    • Date parsed from source:
      Feb 11, 2026
    • First seen by Releasebot:
      Feb 18, 2026
    Google logo

    Google Chrome by Google

    What's new in Dev Tools (Chrome 145)

    Chrome DevTools ships with a wave of improvements from UI polish to deep performance fixes and new automation. Highlights include unified emulation, preserved logs, soft navigations in trace view, precise line timing, faster traces, render blocking insights, and accessibility boosts.

    Similar to Chrome 139, for Chrome 145 the Chrome DevTools team prioritized product excellence, tackling known issues, unifying UI implementations, and improving test health. The numerous subtle fixes and refinements across various panels landed through this effort should make your daily debugging and development workflows smoother, more reliable, and more productive.

    Dev Tools MCP server updates

    The DevTools MCP server has received significant updates from v0.11.0 to v0.14.0, introducing key automation and emulation capabilities.

    • Auto Connection: The new --auto-connect flag allows the server to automatically discover and attach to a running Chrome instance, removing the need to manually copy WebSocket URLs.
    • Unified Emulation: A single emulate tool now handles geolocation, network conditions (offline/slow 3G), CPU throttling, and user agent overrides.
    • Preserved Logs: You can now access network requests and console messages across navigations, mirroring the "Preserve Log" functionality in DevTools.
      See the public changelog on GitHub for the full list of changes.

    Soft Navigations are now visible in trace view

    Soft navigation and soft LCP markers are now visible in the Performance panel trace view if your website is using Single Page Application (SPA) architecture. This makes it significantly easier to debug performance in modern web applications where navigations happen without a full page reload.
    Read more about soft navigations on this blog post. The live metrics view and Performance Insights don't reflect soft navigations, but that work is planned for future releases as work on this API continues.

    Line-level profiler timings now far more precise

    After recording a trace in the Performance panel, the Sources panel displays the timings observed in the trace on a per-line basis. This lets you identify exactly which lines of code are consuming the most execution time.
    This feature previously had bugs that made it unreliable when the source was pretty-formatted (using the {} button) or when using source-mapped scripts. These issues have been resolved, making line-level profiling accurate and usable for production-ready, minified code.

    Faster trace interaction

    A major bottleneck in the Performance panel has been resolved. Previously, selecting time ranges or panning through busy traces could result in significant UI lag due to redundant event sorting. This has been optimized, making interaction with complex flame charts substantially more responsive.

    Identify render-blocking resources

    The Network panel now includes a dedicated Render blocking column. This lets you immediately identify which resources (JavaScript, CSS, and fonts) are preventing the browser from painting the page content, helping you optimize your First Paint performance.

    Individual network request throttling

    The Request conditions panel (formerly Network request blocking), which was introduced in Chrome 144, now has individual request throttling enabled by default.
    While this feature was introduced in the previous milestone, it was disabled due to a late regression. In Chrome 145, you can now reliably throttle specific network requests to simulate slow dependencies or test how your app handles specific resource delays.
    Open the panel from ⋮ > More Tools > Request Conditions to start throttling or blocking specific patterns.

    Debugging improvements for @starting-style

    Support for debugging the CSS @starting-style rule is now enabled by default. This feature helps you inspect styles applied when an element is first rendered, which is essential for debugging entry animations and transitions.

    AI Assistance updates

    • Multimodal Input: You can now paste images directly from your clipboard into the AI Assistance chat to ask questions about visual issues.

    Miscellaneous highlights

    • Elements: A new View source badge has been added next to the root tag, providing a quick way to jump to the document's source code.
    • Sources: Editable JSON files now support a reversible pretty-print toggle, making it easier to edit data without losing the original formatting.
    • Network: Context menu items have been updated to use sentence case for better readability.
    • Console: Fixed an issue where filters for uncaught exceptions were lost after reloading the page.

    Accessibility announcements

    This version brings the following accessibility improvements:

    • Search: Screen readers now announce the number of search results (e.g., "1 of 5") when using Ctrl+F.
    • Recorder: Screen readers now announce when a recording has been successfully deleted or imported.
    • Settings: Screen readers now announce the number of results when filtering in the Experiments tab.
    • Privacy: The Origin group in the Privacy panel is now fully accessible using the keyboard.
    • UI: Improved visibility of dock icons and disabled select elements for users in High Contrast and Forced Colors modes.
    Original source Report a problem
  • Feb 10, 2026
    • Date parsed from source:
      Feb 10, 2026
    • First seen by Releasebot:
      Mar 18, 2026
    Google logo

    Google Chrome by Google

    Chrome 145

    Google Chrome releases Chrome 145 with broad platform stability and new web platform capabilities, including CSS typography upgrades, advanced layout properties, focus-visible UX, enhanced emoji rendering in forced colors, new navigation/transitions, and security/privacy enhancements, marking a stable multi‑device rollout.

    CSS and UI

    Add support for the text-justify CSS property

    Add support for the
    text-justify
    CSS property

    You can control how text is justified when
    text-align: justify
    is applied by using the
    text-justify
    property. For example, you can force justification by expanding inter-character space even in English text.

    Tracking bug #40321528 | ChromeStatus.com entry | Spec

    Enable percentage values for CSS letter-spacing and word-spacing properties

    Enable percentage values for the
    letter-spacing
    and
    word-spacing
    CSS properties, as defined in the CSS Text Module Level 4 specification. Percentage values are calculated relative to the advance measure of the space character (
    U+0020
    ). This provides you with more robust and flexible control over typography, particularly in responsive designs where text spacing needs to adapt to different viewports and font sizes.

    Tracking bug #327740939 | ChromeStatus.com entry | Spec

    Refine border-radius shadow edge computation for high border-radius

    Refine border-radius shadow edge computation for high
    border-radius

    This change ensures that shadows and clip boundaries on near-circular elements (where
    border-radius
    is close to 50%) precisely match the visual contour of the curved edge.

    This provides a more consistent rendering of complex rounded shapes, eliminating visual discrepancies for high radius values. The
    border-radius
    adjustment factor, which ensures corners appear sharp for small radii, is progressively dampened as the radius value approaches 50%.

    This also applies to non-round contours (using
    corner-shape
    ), which now use the same radius adjustment mechanism.

    Tracking bug #448651073 | ChromeStatus.com entry | Spec

    Column wrapping for multicol

    Add support for the
    column-wrap
    and
    column-height
    CSS properties, from multicol Level 2.

    This enables vertical column layout, or even 2D column layout. Columns can have an explicit constrained height, rather than being derived from the
    content-box
    height of the multicol container. They wrap to a new row of columns when all columns have been filled for one row, instead of creating overflowing columns in the inline direction.

    Tracking bug #403183884 | ChromeStatus.com entry | Spec

    Expose onanimationcancel event to GlobalEventHandlers

    Expose
    onanimationcancel
    event to
    GlobalEventHandlers

    The CSS Animations Level 1 extends the
    GlobalEventHandlers
    interface defined in the HTML specification, declaring four new event handlers:
    onanimationstart
    ,
    onanimationiteration
    ,
    onanimationend
    , and
    onanimationcancel
    . Only the
    onanimationcancel
    event handler has been missing from the
    GlobalEventHandlers
    IDL.

    Tracking bug #464010037 | ChromeStatus.com entry | Spec

    Customizable select listbox

    This extends customizable select support to the listbox rendering mode, including single-select and multi-select in listbox mode.

    The listbox rendering mode renders the
    select
    element in-flow or in the page, rather than with a separate button and popup. You can opt into listbox rendering mode across platforms using the
    multiple
    or
    size
    attributes, for example,

    or

    . When the
    appearance: base-select
    CSS property is applied to the
    select
    element with these attributes, it has improved rendering and input behavior.

    This does not support customizable
    select
    for the multi-select popup, which will be supported later. You must set the following attributes to get a multi-select popup:

    .

    Tracking bug #357649033 | ChromeStatus.com entry | Spec

    The focusVisible option on focus

    The
    focusVisible
    option on
    focus

    When calling the
    focus()
    method, you can supply a
    focusVisible
    boolean in the
    FocusOptions
    dictionary. When true, a focus ring is always painted around the newly-focused element, and it matches the
    :focus-visible
    pseudo-class. When false, the focus ring is not painted, and
    :focus-visible
    does not match. When missing, the user agent makes its own determination as to whether the focus ring should be painted, and the
    :focus-visible
    pseudo-class matches accordingly.

    Tracking bug #462191849 | ChromeStatus.com entry | Spec

    Enable monochrome emoji rendering in forced colors mode.

    This change updates Chromium's emoji rendering behavior in Forced Colors Mode. During computed-value resolution, emoji whose
    font-variant-emoji
    value computes to
    normal
    or
    unicode
    are rendered using their monochrome glyphs when available.

    Chromium therefore suppresses color emoji rendering, which ensures emojis fully participate in the Forced Colors Mode pipeline and respect system high-contrast colors. Behavior outside Forced Colors Mode is unchanged.

    Tracking bug #420857717 | ChromeStatus.com entry | Spec

    Overscroll effect on non-root scrollers

    This shows elastic overscroll effects on non-root scroll containers. When a nested scrollable element reaches its scroll boundary, the overscroll affordance applies to that element instead of only the root scroller. This reduces the need for custom JavaScript workarounds and can be controlled per element with
    overscroll-behavior
    .

    Tracking bug #41102897 | ChromeStatus.com entry | Spec

    Capabilities

    Show true window position on Android

    Chrome on Android accurately reports the browser window's position and size using
    window.screenX
    ,
    window.screenY
    ,
    window.outerWidth
    , and
    window.outerHeight
    .

    Chrome previously incorrectly assumed that all browser windows on Android start at coordinates (0, 0). This assumption is inaccurate for Android tablets that use freeform windowing mode. Websites always received 0 when querying the window's on-screen position using
    window.screenX
    and
    window.screenY
    . These fields store the coordinates of the window's top-left corner in global work area coordinate space.

    Moreover, Chrome on Android incorrectly assumed that outer dimensions of the browser window are equal to the inner dimensions of the website viewport.

    window.screenX
    and
    window.screenY
    have aliases:
    window.screenLeft
    and
    window.screenTop
    .

    Tracking bug #417632037 | ChromeStatus.com entry | Spec

    JavaScript

    Upsert

    This is an ECMAScript proposal for
    Map.prototype.getOrInsert
    ,
    Map.prototype.getOrInsertComputed
    ,
    WeakMap.prototype.getOrInsert
    , and
    WeakMap.prototype.getOrInsertComputed
    .

    Tracking bug #434977728 | ChromeStatus.com entry | Spec

    Crash Reporting key-value API

    A new key-value API,
    window.crashReport
    , is backed by a per-Document map holding data that Chrome appends to crash reports.

    The data placed in this API's backing map is sent in the
    CrashReportBody
    if any renderer process crashes are incurred by the site. This lets you debug what specific state in your application might be causing a given crash.

    Tracking bug #400432195 | ChromeStatus.com entry | Spec

    Reduced User-Agent strings by default

    Starting in Chrome 145, Chrome removes the
    UserAgentReduction
    policy. This policy was available to control whether Chrome sent a reduced or full User-Agent string.

    To enhance user privacy and reduce passive tracking capabilities, Chrome began reducing the information contained in the User-Agent header by default in Chrome version 110. The
    UserAgentReduction
    policy was provided as a temporary measure for enterprises to manage this transition.

    The recommended mechanism for websites to access browser and device information is User-Agent Client Hints (UA-CH). UA-CH requires websites to actively request specific information, which is a more privacy-preserving approach than the legacy User-Agent string. For more information, see the web.dev article,
    Migrate to User-Agent Client Hints
    .

    From Chrome 145 onwards, the
    UserAgentReduction
    policy has no effect. Chrome sends a reduced User-Agent string by default. Systems or applications that relied on this policy to receive the full (legacy) User-Agent string might no longer receive the detailed information they expect.

    ChromeStatus.com entry

    Navigation API: expose destination in navigation.transition

    NavigationTransition
    has a
    from
    property, exposing the old URL of the navigation. Exposing
    to
    (a
    NavigationDestination
    ) completes this. It is especially useful when using precommit handlers, as during precommit the current URL has not yet switched to the destination.

    navigation.transition
    is only exposed for intercepted navigations—which means same-origin document-initiated navigations.

    Tracking bug #447171238 | ChromeStatus.com entry | Spec

    Secure Payment Confirmation: Browser Bound Keys

    This adds an additional cryptographic signature over Secure Payment Confirmation assertions and credential creation. The corresponding private key is not synced across devices. This helps you meet requirements for device binding for payment transactions.

    Tracking bug #377278827 | ChromeStatus.com entry | Spec

    Secure Payment Confirmation: UX Refresh

    Updates the UX elements for the SPC dialog on Android Chrome.

    In addition to UX presentation, the following are added:
    • Merchants can provide an optional list of payment entity logos related to the payment that are displayed in the UX.
    • Different output states are returned to the merchant depending on whether the user wants to continue the transaction without SPC or to cancel the transaction. Only a single output state is sent for both cases.
    • A new payment detail label field is added to the payment instrument so the text is presented across two lines in SPC.

    Tracking bug #405173922 | ChromeStatus.com entry | Spec

    Cookie Store API maxAge attribute

    Cookie Store API
    maxAge
    attribute

    You can specify a
    maxAge
    when setting a cookie with the
    Cookie Store API
    .

    Cookie expiry time is already configurable using the
    expires
    attribute, but
    maxAge
    provides a more idiomatic option and aligns the
    Cookie Store API
    with the options provided by
    document.cookie
    and the
    Set-Cookie
    HTTP Header.

    Tracking bug #430926231 | ChromeStatus.com entry | Spec

    InputEvent types for deletion commands on non-collapsed selections

    This reports accurate
    inputType
    values for deletion keyboard shortcuts on selected text. When deletion commands like
    Ctrl+Backspace
    or
    Ctrl+Delete
    are used with selected text in
    contenteditable
    elements, the
    beforeinput
    and
    input
    events report
    deleteContentBackward
    or
    deleteContentForward
    instead of
    deleteWordBackward
    or
    deleteWordForward
    . This lets you correctly understand what editing operation occurred and implement reliable undo, redo, or custom editing behaviors.

    Tracking bug #41423062 | ChromeStatus.com entry | Spec

    Sticky activation for the clipboardchange event

    Sticky activation for the
    clipboardchange
    event

    This requires sticky user activation or
    clipboard-read
    permission to fire
    clipboardchange
    events, preventing unauthorized clipboard monitoring.

    The
    clipboardchange
    event is relatively new (Chrome 144), and this has minimal web-facing change. In most cases, sticky user activation or
    clipboard-read
    permission is already present where clipboard monitoring occurs (for example, in remote desktop clients).

    Tracking bug #468821937 | ChromeStatus.com entry | Spec

    Multimedia

    Expose rtpTimestamp from WebRTC video frames with VideoFrame.metadata()

    Expose
    rtpTimestamp
    from WebRTC video frames with
    VideoFrame.metadata()

    Adds a
    VideoFrame.metadata()
    method that returns a dictionary containing the
    rtpTimestamp
    field, if the underlying
    VideoFrame
    has this field in its native metadata. An empty dictionary is returned otherwise. Only video frames originating from WebRTC sources have the
    rtpTimestamp
    metadata attached.

    Additional metadata fields are already present in the native implementation and might be exposed to JavaScript over time, as outlined in the proposed spec.

    ChromeStatus.com entry | Spec

    Storage

    IndexedDB: SQLite backend (in-memory contexts)

    Chromium's
    IndexedDB
    implementation has been rewritten on top of SQLite, to replace the previous implementation that uses a hybrid of
    LevelDB
    and flat files. There is no change to the Web API.

    This improves reliability and, to a lesser extent, performance.

    This is applied only to in-memory contexts such as Incognito mode in Chromium and Google Chrome. This limits the impact of any new bugs and defers the need to migrate existing data persisted to disk.

    Tracking bug #436880911 | ChromeStatus.com entry | Spec

    Performance

    Let web applications understand bimodal performance timings

    A new
    confidence
    field on the
    PerformanceNavigationTiming
    object lets you discern whether the navigation timings are representative for your web application.

    Tracking bug #1413848 | ChromeStatus.com entry | Spec

    Add presentationTime and paintTime to performance entries

    Add
    presentationTime
    and
    paintTime
    to performance entries

    This exposes
    paintTime
    and
    presentationTime
    in element timing, LCP, long animation frames, and paint timing.

    paintTime
    means the time when the rendering phase ended and the browser started the paint phase.

    presentationTime
    means the time when the "pixels reached the screen," which is somewhat implementation-defined.

    This feature entry omits event timing, which is done separately.

    Tracking bug #378827535 | ChromeStatus.com entry | Spec

    Use of CssPixels in LayoutShift API

    This feature changes the attribution data (
    prevRect
    and
    currentRect
    ) in the
    LayoutShift API
    to be reported in CSS pixels instead of physical pixels. The behavior is inconsistent with other layout-related APIs, which all use CSS pixels. This change improves consistency, simplifies usage for you, and aligns with expected units in debugging and tooling.

    Tracking bug #399058544 | ChromeStatus.com entry | Spec

    Security

    Device Bound Session Credentials

    Device Bound Session Credentials (DBSC)
    lets websites bind a user's session to their specific device, making it significantly harder for stolen session cookies to be used on other machines.

    ChromeStatus.com entry | Spec

    The Origin API

    The
    origin
    is a fundamental component of the web's implementation, essential to both the security and privacy boundaries that user agents maintain. The concept is well-defined between HTML and URL, along with widely-used adjacent concepts like
    site
    .

    Origins, however, are not directly exposed to you. Though there are various origin getters on various objects, each of those returns the ASCII serialization of an origin, not the origin itself. This has a few negative implications. Practically, you attempting to do same-origin or same-site comparisons when handling serialized origins often get things wrong in ways that lead to vulnerabilities. Philosophically, it seems like a missing security primitive that you struggle to polyfill accurately.

    In Chrome 145, Chrome addresses this gap in the platform by introducing an
    Origin
    object that encapsulates the origin concept and provides helpful methods such as comparison, serialization, and parsing.

    Tracking bug #434131026 | ChromeStatus.com entry | Spec

    Local Network Access split permissions

    This is an enhancement to the Local Network Access (LNA) restrictions, where Chrome splits the permission required from one Local Network Access permission into two separate permissions.

    The old permission is
    local-network-access
    . The new permissions are
    local-network
    (for LNA requests to IPs in the local address space) and
    loopback-network
    (for LNA requests to IPs in the loopback address space).

    The old permission is kept as an alias and continues to work for
    permissions.query
    and
    Permissions Policy
    . Enterprise policies continue to work the same; newer, more granular enterprise policies are added later.

    Tracking bug #465491626 | ChromeStatus.com entry | Spec

    Trusted Types specification alignment

    Trusted Types
    was originally implemented and launched in Chromium in 2019 and has since found use in numerous websites. It has recently gained interest from other browser vendors.

    The
    Trusted Types
    spec was co-written as a "monkey patch" spec along with the original implementation. It receives fresh attention as others are trying to implement the same spec. It has been "upstreamed" into HTML + DOM (plus a bit of CSP). As part of that process, various inconsistencies are being identified and fixed. Some of these fixes might be developer observable. The intent is to update the implementation to match the spec as it is upstreamed into HTML.

    Meanwhile, WebKit has launched their implementation of the updated
    Trusted Types
    spec, which gives Chrome high confidence that this update is highly web compatible.

    Tracking bug #330516530 | ChromeStatus.com entry | Spec

    Graphics

    WebGPU: subgroup_uniformity feature

    WebGPU:
    subgroup_uniformity
    feature

    This adds a new scope to the uniformity analysis and changes which parts of the language are checked in each to enable subgroup functionality to be considered uniform in more cases.

    Tracking bug #454653380 | ChromeStatus.com entry | Spec

    Isolated Web Apps

    WebRequest.SecurityInfo in Controlled Frame

    WebRequest.SecurityInfo
    in
    Controlled Frame

    This feature introduces a
    WebRequest.SecurityInfo
    API for
    ControlledFrame
    . It lets a web app intercept an HTTPS, WSS, or WebTransport request to a server, retrieve the server's certificate fingerprint (as verified by the browser), and then use that fingerprint to manually verify the certificate of a separate raw TCP/UDP connection to the same server. This provides a method for the app to confirm it's communicating with the correct server.

    Tracking bug #462114142 | ChromeStatus.com entry | Spec

    Origin trials

    JPEG XL decoding support (image/jxl) in blink

    JPEG XL decoding support (
    image/jxl
    ) in blink

    Adds support for decoding JPEG XL (
    image/jxl
    ) images in Blink using
    jxl-rs
    , a memory-safe pure Rust decoder.

    JPEG XL is a modern image format standardized as ISO/IEC 18181 that offers:
    • Progressive decoding for improved perceived loading performance.
    • Support for wide color gamut, HDR, and high bit depth.
    • Animation support.

    This implementation uses
    jxl-rs
    instead of the C++ libjxl reference decoder to meet Chromium's memory safety requirements. The decoder is gated behind the
    enable-jxl-image-format
    flag and
    enable_jxl_decoder
    build flag.

    ChromeStatus.com entry

    WebAudio: Configurable render quantum

    AudioContext
    and
    OfflineAudioContext
    now take an optional
    renderSizeHint
    , which allows users to ask for a particular render quantum size when an integer is passed, to use the default of 128 frames if nothing or
    default
    is passed, or to ask the User-Agent to pick a good render quantum size if
    hardware
    is specified.

    Origin Trial | ChromeStatus.com entry

    Deprecations and removals

    Remove support for obsolete virtual cameras on macOS

    Chrome removes support for obsolete virtual cameras for all macOS releases that it supports.

    Tracking bug #461717105 | ChromeStatus.com entry

    Remove BMP Extension for Embedding JPEG-or-PNG-in-BMP

    Chrome removes the BMP extension for embedding JPEG-or-PNG-in-BMP.

    Tracking bug #456842524 | ChromeStatus.com entry | Spec

    Last updated 2026-02-10 UTC.

    Original source Report a problem
  • Feb 10, 2026
    • Date parsed from source:
      Feb 10, 2026
    • First seen by Releasebot:
      Feb 18, 2026
    Google logo

    Google Chrome by Google

    Chrome 145

    Chrome 145 rolls out across Android, ChromeOS, Linux, macOS, and Windows with typography boosts, new CSS properties, expanded Web APIs, and security/privacy refinements. Expect improved text rendering, smarter layouts, and richer developer capabilities in this stable release.

    Stable release date: February 10th, 2026

    Unless otherwise noted, the following changes apply to Chrome 145 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.

    Want just the highlights? Check out New in Chrome 145.

    CSS and UI

    Add support for the text-justify CSS property
    You can control how text is justified when text-align: justify is applied by using the text-justify property. For example, you can force justification by expanding inter-character space even in English text.
    Tracking bug #40321528 | ChromeStatus.com entry | Spec

    Enable percentage values for CSS letter-spacing and word-spacing properties
    Enable percentage values for the letter-spacing and word-spacing CSS properties, as defined in the CSS Text Module Level 4 specification. Percentage values are calculated relative to the advance measure of the space character (U+0020). This provides you with more robust and flexible control over typography, particularly in responsive designs where text spacing needs to adapt to different viewports and font sizes.
    Tracking bug #327740939 | ChromeStatus.com entry | Spec

    Refine border-radius shadow edge computation for high border-radius
    Refine border-radius shadow edge computation for high border-radius
    This change ensures that shadows and clip boundaries on near-circular elements (where border-radius is close to 50%) precisely match the visual contour of the curved edge.
    This provides a more consistent rendering of complex rounded shapes, eliminating visual discrepancies for high radius values. The border-radius adjustment factor, which ensures corners appear sharp for small radii, is progressively dampened as the radius value approaches 50%.
    This also applies to non-round contours (using corner-shape), which now use the same radius adjustment mechanism.
    Tracking bug #448651073 | ChromeStatus.com entry | Spec

    Column wrapping for multicol
    Add support for the column-wrap and column-height CSS properties, from multicol Level 2.
    This enables vertical column layout, or even 2D column layout. Columns can have an explicit constrained height, rather than being derived from the content-box height of the multicol container. They wrap to a new row of columns when all columns have been filled for one row, instead of creating overflowing columns in the inline direction.
    Tracking bug #403183884 | ChromeStatus.com entry | Spec

    Expose onanimationcancel event to GlobalEventHandlers
    Expose onanimationcancel event to GlobalEventHandlers
    The CSS Animations Level 1 extends the GlobalEventHandlers interface defined in the HTML specification, declaring four new event handlers: onanimationstart, onanimationiteration, onanimationend, and onanimationcancel. Only the onanimationcancel event handler has been missing from the GlobalEventHandlers IDL.
    Tracking bug #464010037 | ChromeStatus.com entry | Spec

    Customizable select listbox
    This extends customizable select support to the listbox rendering mode, including single-select and multi-select in listbox mode.
    The listbox rendering mode renders the select element in-flow or in the page, rather than with a separate button and popup. You can opt into listbox rendering mode across platforms using the multiple or size attributes, for example, or . When the appearance: base-select CSS property is applied to the select element with these attributes, it has improved rendering and input behavior.
    This does not support customizable select for the multi-select popup, which will be supported later. You must set the following attributes to get a multi-select popup: .
    Tracking bug #357649033 | ChromeStatus.com entry | Spec

    The focusVisible option on focus
    The focusVisible option on focus
    When calling the focus() method, you can supply a focusVisible boolean in the FocusOptions dictionary. When true, a focus ring is always painted around the newly-focused element, and it matches the :focus-visible pseudo-class. When false, the focus ring is not painted, and :focus-visible does not match. When missing, the user agent makes its own determination as to whether the focus ring should be painted, and the :focus-visible pseudo-class matches accordingly.
    Tracking bug #462191849 | ChromeStatus.com entry | Spec

    Enable monochrome emoji rendering in forced colors mode.
    This change updates Chromium's emoji rendering behavior in Forced Colors Mode. During computed-value resolution, emoji whose font-variant-emoji value computes to normal or unicode are rendered using their monochrome glyphs when available.
    Chromium therefore suppresses color emoji rendering, which ensures emojis fully participate in the Forced Colors Mode pipeline and respect system high-contrast colors. Behavior outside Forced Colors Mode is unchanged.
    Tracking bug #420857717 | ChromeStatus.com entry | Spec

    Overscroll effect on non-root scrollers
    This shows elastic overscroll effects on non-root scroll containers. When a nested scrollable element reaches its scroll boundary, the overscroll affordance applies to that element instead of only the root scroller. This reduces the need for custom JavaScript workarounds and can be controlled per element with overscroll-behavior.
    Tracking bug #41102897 | ChromeStatus.com entry | Spec

    Capabilities

    Show true window position on Android
    Chrome on Android accurately reports the browser window's position and size using window.screenX, window.screenY, window.outerWidth, and window.outerHeight.
    Chrome previously incorrectly assumed that all browser windows on Android start at coordinates (0, 0). This assumption is inaccurate for Android tablets that use freeform windowing mode. Websites always received 0 when querying the window's on-screen position using window.screenX and window.screenY. These fields store the coordinates of the window's top-left corner in global work area coordinate space.
    Moreover, Chrome on Android incorrectly assumed that outer dimensions of the browser window are equal to the inner dimensions of the website viewport.
    window.screenX and window.screenY have aliases: window.screenLeft and window.screenTop.
    Tracking bug #417632037 | ChromeStatus.com entry | Spec

    JavaScript

    Upsert
    This is an ECMAScript proposal for Map.prototype.getOrInsert, Map.prototype.getOrInsertComputed, WeakMap.prototype.getOrInsert, and WeakMap.prototype.getOrInsertComputed.
    Tracking bug #434977728 | ChromeStatus.com entry | Spec

    Crash Reporting key-value API
    A new key-value API, window.crashReport, is backed by a per-Document map holding data that Chrome appends to crash reports.
    The data placed in this API's backing map is sent in the CrashReportBody if any renderer process crashes are incurred by the site. This lets you debug what specific state in your application might be causing a given crash.
    Tracking bug #400432195 | ChromeStatus.com entry | Spec

    Reduced User-Agent strings by default
    Starting in Chrome 145, Chrome removes the UserAgentReduction policy. This policy was available to control whether Chrome sent a reduced or full User-Agent string.
    To enhance user privacy and reduce passive tracking capabilities, Chrome began reducing the information contained in the User-Agent header by default in Chrome version 110. The UserAgentReduction policy was provided as a temporary measure for enterprises to manage this transition.
    The recommended mechanism for websites to access browser and device information is User-Agent Client Hints (UA-CH). UA-CH requires websites to actively request specific information, which is a more privacy-preserving approach than the legacy User-Agent string. For more information, see the web.dev article, Migrate to User-Agent Client Hints.
    From Chrome 145 onwards, the UserAgentReduction policy has no effect. Chrome sends a reduced User-Agent string by default. Systems or applications that relied on this policy to receive the full (legacy) User-Agent string might no longer receive the detailed information they expect.
    ChromeStatus.com entry

    Navigation API: expose destination in navigation.transition
    NavigationTransition has a from property, exposing the old URL of the navigation. Exposing to (a NavigationDestination) completes this. It is especially useful when using precommit handlers, as during precommit the current URL has not yet switched to the destination.
    navigation.transition is only exposed for intercepted navigations—which means same-origin document-initiated navigations.
    Tracking bug #447171238 | ChromeStatus.com entry | Spec

    Secure Payment Confirmation: Browser Bound Keys
    This adds an additional cryptographic signature over Secure Payment Confirmation assertions and credential creation. The corresponding private key is not synced across devices. This helps you meet requirements for device binding for payment transactions.
    Tracking bug #377278827 | ChromeStatus.com entry | Spec

    Secure Payment Confirmation: UX Refresh
    Updates the UX elements for the SPC dialog on Android Chrome.
    In addition to UX presentation, the following are added:
    • Merchants can provide an optional list of payment entity logos related to the payment that are displayed in the UX.
    • Different output states are returned to the merchant depending on whether the user wants to continue the transaction without SPC or to cancel the transaction. Only a single output state is sent for both cases.
    • A new payment detail label field is added to the payment instrument so the text is presented across two lines in SPC.
    Tracking bug #405173922 | ChromeStatus.com entry | Spec

    Cookie Store API maxAge attribute
    Cookie Store API maxAge attribute
    You can specify a maxAge when setting a cookie with the Cookie Store API.
    Cookie expiry time is already configurable using the expires attribute, but maxAge provides a more idiomatic option and aligns the Cookie Store API with the options provided by document.cookie and the Set-Cookie HTTP Header.
    Tracking bug #430926231 | ChromeStatus.com entry | Spec

    InputEvent types for deletion commands on non-collapsed selections
    This reports accurate inputType values for deletion keyboard shortcuts on selected text. When deletion commands like Ctrl+Backspace or Ctrl+Delete are used with selected text in contenteditable elements, the beforeinput and input events report deleteContentBackward or deleteContentForward instead of deleteWordBackward or deleteWordForward. This lets you correctly understand what editing operation occurred and implement reliable undo, redo, or custom editing behaviors.
    Tracking bug #41423062 | ChromeStatus.com entry | Spec

    Sticky activation for the clipboardchange event
    Sticky activation for the clipboardchange event
    This requires sticky user activation or clipboard-read permission to fire clipboardchange events, preventing unauthorized clipboard monitoring.
    The clipboardchange event is relatively new (Chrome 144), and this has minimal web-facing change. In most cases, sticky user activation or clipboard-read permission is already present where clipboard monitoring occurs (for example, in remote desktop clients).
    Tracking bug #468821937 | ChromeStatus.com entry | Spec

    Multimedia

    Expose rtpTimestamp from WebRTC video frames with VideoFrame.metadata()
    Expose rtpTimestamp from WebRTC video frames with VideoFrame.metadata()
    Adds a VideoFrame.metadata() method that returns a dictionary containing the rtpTimestamp field, if the underlying VideoFrame has this field in its native metadata. An empty dictionary is returned otherwise. Only video frames originating from WebRTC sources have the rtpTimestamp metadata attached.
    Additional metadata fields are already present in the native implementation and might be exposed to JavaScript over time, as outlined in the proposed spec.
    ChromeStatus.com entry | Spec

    Storage

    IndexedDB: SQLite backend (in-memory contexts)
    Chromium's IndexedDB implementation has been rewritten on top of SQLite, to replace the previous implementation that uses a hybrid of LevelDB and flat files. There is no change to the Web API.
    This improves reliability and, to a lesser extent, performance.
    This is applied only to in-memory contexts such as Incognito mode in Chromium and Google Chrome. This limits the impact of any new bugs and defers the need to migrate existing data persisted to disk.
    Tracking bug #436880911 | ChromeStatus.com entry | Spec

    Performance

    Let web applications understand bimodal performance timings
    A new confidence field on the PerformanceNavigationTiming object lets you discern whether the navigation timings are representative for your web application.
    Tracking bug #1413848 | ChromeStatus.com entry | Spec

    Add presentationTime and paintTime to performance entries
    Add presentationTime and paintTime to performance entries
    This exposes paintTime and presentationTime in element timing, LCP, long animation frames, and paint timing.
    paintTime means the time when the rendering phase ended and the browser started the paint phase.
    presentationTime means the time when the "pixels reached the screen," which is somewhat implementation-defined.
    This feature entry omits event timing, which is done separately.
    Tracking bug #378827535 | ChromeStatus.com entry | Spec

    Use of CssPixels in LayoutShift API
    This feature changes the attribution data (prevRect and currentRect) in the LayoutShift API to be reported in CSS pixels instead of physical pixels. The behavior is inconsistent with other layout-related APIs, which all use CSS pixels. This change improves consistency, simplifies usage for you, and aligns with expected units in debugging and tooling.
    Tracking bug #399058544 | ChromeStatus.com entry | Spec

    Security

    Device Bound Session Credentials
    Device Bound Session Credentials (DBSC) lets websites bind a user's session to their specific device, making it significantly harder for stolen session cookies to be used on other machines.
    ChromeStatus.com entry | Spec

    The Origin API
    The origin is a fundamental component of the web's implementation, essential to both the security and privacy boundaries that user agents maintain. The concept is well-defined between HTML and URL, along with widely-used adjacent concepts like site.
    Origins, however, are not directly exposed to you. Though there are various origin getters on various objects, each of those returns the ASCII serialization of an origin, not the origin itself. This has a few negative implications. Practically, you attempting to do same-origin or same-site comparisons when handling serialized origins often get things wrong in ways that lead to vulnerabilities. Philosophically, it seems like a missing security primitive that you struggle to polyfill accurately.
    In Chrome 145, Chrome addresses this gap in the platform by introducing an Origin object that encapsulates the origin concept and provides helpful methods such as comparison, serialization, and parsing.
    Tracking bug #434131026 | ChromeStatus.com entry | Spec

    Local Network Access split permissions
    This is an enhancement to the Local Network Access (LNA) restrictions, where Chrome splits the permission required from one Local Network Access permission into two separate permissions.
    The old permission is local-network-access. The new permissions are local-network (for LNA requests to IPs in the local address space) and loopback-network (for LNA requests to IPs in the loopback address space).
    The old permission is kept as an alias and continues to work for permissions.query and Permissions Policy. Enterprise policies continue to work the same; newer, more granular enterprise policies are added later.
    Tracking bug #465491626 | ChromeStatus.com entry | Spec

    Trusted Types specification alignment
    Trusted Types was originally implemented and launched in Chromium in 2019 and has since found use in numerous websites. It has recently gained interest from other browser vendors.
    The Trusted Types spec was co-written as a "monkey patch" spec along with the original implementation. It receives fresh attention as others are trying to implement the same spec. It has been "upstreamed" into HTML + DOM (plus a bit of CSP). As part of that process, various inconsistencies are being identified and fixed. Some of these fixes might be developer observable. The intent is to update the implementation to match the spec as it is upstreamed into HTML.
    Meanwhile, WebKit has launched their implementation of the updated Trusted Types spec, which gives Chrome high confidence that this update is highly web compatible.
    Tracking bug #330516530 | ChromeStatus.com entry | Spec

    Graphics

    WebGPU: subgroup_uniformity feature
    WebGPU: subgroup_uniformity feature
    This adds a new scope to the uniformity analysis and changes which parts of the language are checked in each to enable subgroup functionality to be considered uniform in more cases.
    Tracking bug #454653380 | ChromeStatus.com entry | Spec

    Isolated Web Apps

    WebRequest.SecurityInfo in Controlled Frame
    WebRequest.SecurityInfo in Controlled Frame
    This feature introduces a WebRequest.SecurityInfo API for ControlledFrame. It lets a web app intercept an HTTPS, WSS, or WebTransport request to a server, retrieve the server's certificate fingerprint (as verified by the browser), and then use that fingerprint to manually verify the certificate of a separate raw TCP/UDP connection to the same server. This provides a method for the app to confirm it's communicating with the correct server.
    Tracking bug #462114142 | ChromeStatus.com entry | Spec

    Origin trials

    JPEG XL decoding support (image/jxl) in blink
    JPEG XL decoding support (image/jxl) in blink
    Adds support for decoding JPEG XL (image/jxl) images in Blink using jxl-rs, a memory-safe pure Rust decoder.
    JPEG XL is a modern image format standardized as ISO/IEC 18181 that offers:
    • Progressive decoding for improved perceived loading performance.
    • Support for wide color gamut, HDR, and high bit depth.
    • Animation support.
    This implementation uses jxl-rs instead of the C++ libjxl reference decoder to meet Chromium's memory safety requirements. The decoder is gated behind the enable-jxl-image-format flag and enable_jxl_decoder build flag.
    ChromeStatus.com entry

    WebAudio: Configurable render quantum
    AudioContext and OfflineAudioContext now take an optional renderSizeHint, which allows users to ask for a particular render quantum size when an integer is passed, to use the default of 128 frames if nothing or default is passed, or to ask the User-Agent to pick a good render quantum size if hardware is specified.
    Origin Trial | ChromeStatus.com entry

    Deprecations and removals

    Remove support for obsolete virtual cameras on macOS
    Chrome removes support for obsolete virtual cameras for all macOS releases that it supports.
    Tracking bug #461717105 | ChromeStatus.com entry

    Remove BMP Extension for Embedding JPEG-or-PNG-in-BMP
    Chrome removes the BMP extension for embedding JPEG-or-PNG-in-BMP.
    Tracking bug #456842524 | ChromeStatus.com entry | Spec

    Original source Report a problem

Related products