Chrome version: 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
This release of Chrome had 27 new features.
The AccentColor and AccentColorText system colors can be used in CSS to access the system accent color specified on the user's device. This allows developers to apply native app like styling to their web content in contexts where users expect OS theme integration, such as an installed web application. Users must be in an installed web application on the initial profile to see the system accent color rendered. #
This feature was specified in this Spec.
Allows an optional corner-rounding parameter in the polygon() CSS shape function. Developers can specify a length value to round polygon corners without manually computing bezier curves. Interactive demo: https://codepen.io/yisi/pen/NPRLEQN CSSWG issue: https://github.com/w3c/csswg-drafts/issues/9843 #
This feature was specified in this Spec.
The CSS zoom property is animatable and interpolates as a <number>. Developers can transition and animate zoom to smoothly scale elements and their layout, complementing existing transform-based scaling. #
CSS url() functions accept optional request modifiers after the quoted URL string: cross-origin(), integrity(), and referrer-policy(). These modifiers control the fetch behavior of the referenced resource directly from CSS, without requiring changes to HTML markup or JavaScript. For example, background-image: url("image.png" cross-origin(anonymous)) fetches the image using CORS anonymous mode. This gives authors fine-grained control over cross-origin access, subresource integrity, and referrer policy for CSS-loaded resources including images, fonts, SVG references, and imported stylesheets. #
This feature was specified in this Spec.
Scales the font size of text nodes to perfectly fit the width of its containing box. This property allows developers to ensure headlines or dynamic content fill the available horizontal space without manual font-size calculations or complex JavaScript workarounds. It provides a robust, CSS-native solution for responsive typography that maintains visual alignment across different screen sizes and varying text lengths. #
This feature was specified in this Spec.
Implements the border-area value for the CSS background-clip property, as defined in CSS Backgrounds Level 4. background-clip: border-area clips an element's background to the area painted by its border strokes, taking border-width and border-style into account while ignoring transparency from border-color. This enables gradient borders without border-image. WebKit already ships this feature; this implementation brings Chromium to parity. #
This feature was specified in this Spec.
The image() function allows an author to easily generate a solid-color image from any color. Its syntax is: image() = image( <color> ) #
This feature was specified in this Spec.
Extends the CSS light-dark() function to accept image values (url(), image-set(), none) in author stylesheets, allowing image properties like background-image, list-style-image, border-image-source, cursor, and content to automatically switch between images based on the user's preferred color scheme. Previously this was only allowed in UA stylesheets. This aligns with the CSS Color 5 spec and matches Firefox's existing implementation. #
This feature was specified in this Spec.
Several small changes are being made to edge cases of the selectedcontent element: - When multiple selectedcontent elements are put in a select element at the same time, all of them will be kept up to date instead of only the first one in DOM order. - Updating the selectedcontent element is deferred when it would run during insertion, removal, or moving steps in order to fix security issues. The update is deferred by using post-insertion steps or microtasks. This is a PSA instead of an intent to ship because this only changes invalid cases or edge cases, and the usage of customizable select is still quite low (0.02%). #
This feature was specified in this Spec.
Support multiple queries per @container rule. The @container rule applies if at least one of the queries matches. This makes it possible to have fallback queries for features which are not supported in all browsers, for instance. Example: @container --name1 not-supported(--foo: bar), --name2 (width > 600px) {} Along with the support for multiple queries, the object model is extended to support the 'conditions' attribute on the CSSContainerRule API. #
This feature was specified in this Spec.
Chrome 150 will prevent Scalable Vector Graphics (SVG) filters from being applied to embedded plugins (for example, PDFs) and cross-origin or restricted iFrames (for example, sandboxed ones). When a plugin or iFrame would be painted with an SVG filter effect, the effect tree is traversed to find the highest ancestor without SVG filters, and that effect is then applied instead. #
This feature was specified in this Spec.
Printers usually have a small area at each of the four edges of a sheet of paper that they are not capable of marking reliably, usually due to the printer’s paper handling mechanism. The default page margins are expected to be bigger than these areas, but if authors set margins on their own, and even want to add @page margin boxes (e.g. for custom headers and footers), they need a way of telling where it's safe to print and not. The CSS descriptor `page-margin-safety` can be used to steer clear of such unprintable areas. #
This feature was specified in this Spec.
Gives authors the ability to declaratively give composite widgets arrow key navigation, a guaranteed tab stop, and last-focused memory, replacing hand-coded roving tabindex scripts. Example: <div focusgroup="toolbar wrap" aria-label="Formatting"> <button>Bold</button> <button>Italic</button> <button>Underline</button> </div> #
This feature was specified in this Spec.
The :playing, :paused, :seeking, :buffering, :stalled, :muted, and :volume-locked CSS pseudo-classes match <audio> and <video> elements based on their state. This is one of the focus areas in https://wpt.fyi/interop-2026. #
This feature was specified in this Spec.
Adds discardedFrames and totalFrames attributes to the MediaStreamTrackProcessor interface. These counters allow web developers to monitor the health of their media processing pipelines by tracking the number of frames received and dropped by the processor. #
This feature was specified in this Spec.
Chrome 150 updates how Dedicated and Shared Workers handle [data: URLs](https://datatracker.ietf.org/doc/html/rfc2397). Rather than automatically inheriting the security origin of the script or page that created them, these workers will now be assigned a unique opaque origin. This alignment with the worker [HTML specification](https://www.w3.org/TR/2021/NOTE-workers-20210128/#worker) enhances security by isolating these workers from the creator's same-origin state, preventing them from accessing sensitive data via mechanisms like `BroadcastChannel` or same-origin storage. To maintain correct isolation boundaries, these workers still reside within the same storage partition (for example, by preserving the top-level site or nonce) as their creator. This security adjustment is enabled by default across desktop and mobile platforms. Administrators can review or verify security boundaries using their centralized configurations. For technical implementation details and specification references, see Step 3 of the [HTML Living Standard Worker Settings](https://html.spec.whatwg.org/multipage/workers.html#script-settings-for-workers). #
This feature was specified in this Spec.
Use <template for> and processing instruction ranges (<?marker>, <?start>, and <?end> to update existing parts of the document without JS. #
This feature was specified in this Spec.
When a user installs a Progressive Web App (PWA), its identity and security context are tightly bound to its web origin, for example, `app.example.com`. This presents a significant challenge for developers who need to change their PWA's origin due to rebranding, domain restructuring, or technical re-architecture. Currently, such a change forces users to manually uninstall the old app and reinstall the new one, leading to a disruptive experience and a potential increase in user loss rate. Chrome 150 introduces a mechanism for developers to seamlessly migrate an installed PWA to a new, same-site origin, preserving user trust and permissions. The [WebAppInstallForceList](https://chromeenterprise.google/policies/#WebAppInstallForceList) policy will block migration. Since enterprise policies around web applications are primarily based on URLs and origins, there is a risk that a migration would bypass certain policies an admin might have configured. No migration will be offered to the user when an app is force-installed by their enterprise administrator, and instead a banner will be shown explaining this to the user. #
This feature was specified in this Spec.
Samples: https://googlechrome.github.io/samples/pwa-migration
Processing instructions (syntax: <?target data>) are an existing DOM construct, exposed in XML, that allows node objects that are not elements but can have some semantic meaning for the processing of a document. Processing instructions are parsed by the HTML parser, and receive an attribute API similar to elements to mutate their data. #
This feature was specified in this Spec.
This change implements a revised and simplified stacking model for the popover=hint attribute and its interactions with popover=auto. Previously, the interactions between these two types of popovers could be complex in some corner case situations (such as nesting auto popovers inside hint popovers), and could lead to unexpected behavior. Under the new model, opening a hint popover will no longer inadvertently close unrelated auto popovers. Hint popovers are now only hidden when their ancestral auto popover is hidden, or when a new, unrelated auto popover is opened. Additionally, developers can now safely nest an auto popover inside a hint popover; instead of throwing an exception or breaking the stack, the nested auto popover will gracefully "downgrade" and behave as a hint popover. This allows use cases such as placing a customizable-<select> within a popover=hint. To further improve predictability and prevent complex state mutations, we are also tightening the behavior around opening and closing popovers from within the beforetoggle event. There were guards in place for some, but not all, of the possible cases before. This change revamps the mechanism used to detect these cases, so that it should more reliably throw InvalidStateErrors for all such cases. This ensures that popover state management remains stable and prevents looping reentrancy bugs. All of these changes were motivated by standards conversations with Mozilla on the spec PR here: https://github.com/whatwg/html/pull/12345. #
This feature was specified in this Spec.
This feature provides a reliable signal for the completion status of a programmatic smooth-scroll. All scroll methods in Element and Window now return Promise objects that get resolved on scroll completion, and the resolved value indicates whether the scroll was interrupted or not. #
This feature was specified in this Spec.
Docs: https://github.com/explainers-by-googlers/promisify-scroll
Samples: https://codepen.io/mustaqahmed/full/gbpmNOP
This change introduces a new CSS property, 'path-length', which maps to the existing SVG 'pathLength' presentation attribute. It applies to SVG geometry elements that support 'pathLength' (including <path>, <circle>, <rect>, <line>, <polyline>, <polygon>, and <ellipse>). Exposing 'pathLength' as a CSS property allows authors to specify it via stylesheets, inline styles, and animations, enabling it to participate in normal CSS cascading, specificity, transitions, and animations. The property affects all computations that depend on the total path length, including stroke dash rendering and text positioning along a <textPath>. CSS declarations override the presentation attribute following standard CSS precedence rules. The initial value of 'path-length' is 'none', which represents the absence of an author-supplied path length and is distinct from an explicit numeric value such as '0'. Existing attribute-only behavior is preserved when the feature is disabled. #
This feature was specified in this Spec.
Extends the SpeechRecognition interface by adding a quality property to SpeechRecognitionOptions. This allows developers to specify the semantic capability required for on-device recognition (via processLocally: true). The proposed quality enum supports three levels—'command', 'dictation', and 'conversation'—mapping to increasing task complexity and hardware requirements. This enables developers to determine if the local device can handle high-stakes use cases (like meeting transcription) or if they should fallback to cloud services, solving the current "black box" issue of on-device model capabilities. #
This feature was specified in this Spec.
Functionality added to the WebGPU spec after its first shipment in a browser. Adds a new immediate address space in WGSL and a setImmediateData() method on render pass, compute pass, and render bundle encoders that allows passing small amounts of frequently-updated data directly to shaders without creating GPU buffer objects or bind groups. This is particularly useful for applications that need to update per-draw parameters such as object indices, material indices, or transformation matrices every draw call, enabling significant performance improvements by avoiding buffer and bind group management overhead. #
This feature was specified in this Spec.
flex-wrap:balance allows developers to distribute content between flex-lines so that it appears more balanced (similar to text-wrap:balance). #
This feature was specified in this Spec.
The named-feature() function allows CSS @supports rules to query for a small set of specific named features that are not possible to test for using other @supports mechanisms but which are considered highly valuable to test for. #
This feature was specified in this Spec.
overscroll-behavior currently has 3 values: none, auto, and contain. These values affect 2 independent effects: scroll propagation and local border effect (e.g. overscroll stretch). none: no propagation, no local effect auto: propagation, local effect contain: no propagation, local effect This feature tracks a new value to complete the set: chain: propagation, no local effect This is useful for effects like side menus implemented as scrollers. We want to bring the menu in and when it hits the edge it doesn't overscroll (stretch/translate). However, it would then allow scroll chaining to the ancestor. Initial proposal: https://github.com/w3c/csswg-drafts/issues/13370 #
This feature was specified in this Spec.
This release of Chrome had 2 new origin trials.
The EVP (email verification protocol) helps users create, access and recover accounts by providing cryptographic proof of ownership seamlessly rather than email OTPs manually.
This feature was specified in this Spec.
Docs: https://code.sgo.to/2024/10/25/verified-email-autocomplete.html
Samples: https://code.sgo.to/2024/10/25/verified-email-autocomplete.html
Expose measurement data regarding speculative loads (preloads, prefetches and prerenders) as part of a newly exposed `performance.getSpeculations()` method. That would enable developers to measure the efficacy of various speculative loading strategies and adapt them accordingly. #
This release of Chrome had 6 are available behind a flag.
Add post-quantum cryptography and a common symmetric AEAD to the set of cryptographic algorithms available in the Web Cryptography API. This will enable developers to have access browser-provided implementations of common quantum-resistant cryptographic algorithms standardized by NIST. * ML-KEM - 768, 1024 * ML-DSA - 44, 65, 87 * ChaCha20-Poly1305 * X-Wing #
This feature was specified in this Spec.
The text-decoration-skip-spaces CSS property controls whether text decoration lines (underlines, overlines, line-throughs, etc.) skip over whitespace characters. This allows authors to prevent decorations from being drawn under spaces, which is often more visually appealing. #
This feature was specified in this Spec.
Samples: http://wpt.live/css/css-text-decor/text-decoration-skip-spaces-001.htmlhttp://wpt.live/css/css-text-decor/text-decoration-skip-spaces-002.htmlhttp://wpt.live/css/css-text-decor/text-decoration-skip-spaces-003.htmlhttp://wpt.live/css/css-text-decor/text-decoration-skip-spaces-004.html
Allows web developers to call Device{Motion,Orientation}Event.requestPermission() to ask the user agent for device orientation and motion data to be shared with the page. Those two static methods return a promise that resolves to either "granted" or "denied" based on whether the user has allowed the user agent to share sensor data with pages. #
This feature was specified in this Spec.
Docs: https://docs.google.com/document/d/1zrhTooMd0Pqee8R0dJggDUeAgvt_3na_MaVefPpLG7o/edit?tab=t.0
No linked samplesSub Apps allow developers to create multiple apps each with distinct names, icons and OS Integrations under a single Isolated Web App (IWA) installation. Windows of sub apps appear on the shelf with their specific identity, distinct from the parent app. Sub Apps are deeply integrated with the OS and offer capabilities such as file type association. This enables a single software package to represent different, isolated functionalities to the user while maintaining a single, unified IWA install and update process. #
This feature was specified in this Spec.
Docs: https://github.com/explainers-by-googlers/sub-apps
Samples: https://github.com/vkrot-cell/subapps-demo
Currently Chromium applies the default action of a mouseup event (e.g. collapsing or committing a drag-selection in a text input) after the click event has already been dispatched. This violates developer expectations: a click handler that reads selection state sees stale data from before the mouseup default action ran. This change moves the mouseup default-action step to run before the click event is dispatched, so that selection (and any other mouseup side effects) is already settled when click handlers execute. #
Adds the unspokenPunctuation boolean attribute to the SpeechRecognition interface of the Web Speech API. When enabled (true), this attribute directs the speech recognition engine to automatically infer and insert punctuation marks (such as periods, commas, and question marks) based on the user's natural pauses, grammatical structure, and prosody, without requiring explicit spoken punctuation commands. #
This feature was specified in this Spec.
Samples: https://speech.evanliu.com
To keep the platform healthy, we sometimes remove APIs from the Web Platform which have run their course. There can be many reasons why we would remove an API, such as:
Some of these changes will have an effect on a very small number of sites. To mitigate issues ahead of time, we try to give developers advanced notice so they can make the required changes to keep their sites running.
Chrome currently has a process for deprecations and removals of API's, essentially:
You can find a list of all deprecated features on chromestatus.com using the deprecated filter and removed features by applying the removed filter. We will also try to summarize some of the changes, reasoning, and migration paths in these posts.
This release of Chrome had 0 features deprecated.
This release of Chrome had 0 features removed.