Experimental Chromium Web Platform Features
Experimental web platform features are not yet part of the official web platform specifications and are marked as “experimental” in Chromium.
Polypane ships with these features (and more) enabled by default. Other Chromium browsers let you enable these on a “flags” settings page.
Added in Chromium 146 BetaPolypane 28.0.1
▹ Audio Context Playback Stats
AudioContextPlaybackStatschromestatus.comThis feature adds an AudioContext.playbackStats attribute which returns an AudioPlaybackStats object. This object provides audio playback statistics such as average latency, minimum/maximum latency, underrun duration, and underrun count. This API allows web applications to monitor audio playback quality and detect glitches. Note: This feature was previously 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.
▹ Margin Trim
MarginTrimchromestatus.comThe `margin-trim` CSS property may be used to omit margins before or after the first or last child of a container. This is supported on regular block containers, in addition to flex, grid, and multicol containers. https://drafts.csswg.org/css-box-4/#margin-trim This is somewhat similar to the effect caused by the margin quirk that is applied to P, H1, H2... elements inside BODY and table cell elements (in quirks mode), but more powerful, generic, and expressive.
▹ Module Preload Style Json
ModulePreloadStyleJsonchromestatus.comAdds support for JSON and style module types as <link rel="modulepreload"> destinations. <link rel="modulepreload"> is already supported in Chromium (see https://chromestatus.com/feature/5762805915451392), but it currently only supports preloading script-like module scripts. This feature addresses a functionality gap, as JSON and CSS module scripts are supported in Chromium elsewhere but are not supported as <link rel="modulepreload"> destinations. Style modules can be preloaded with <link rel="modulepreload" as="style" href="..."> and JSON modules can be preloaded with <link rel="modulepreload" as="json" href="...">.
▹ Web App Scope System Accent Color
WebAppScopeSystemAccentColorchromestatus.comCurrently, if the `accent-color` property for form controls are set to `auto`, they adopt the system accent color set by the user in their operating system. This happens in all contexts whether on the web or in an installed web application. Current feature state: https://chromestatus.com/feature/6548224737017856 AccentColor and AccentColorText CSS keywords, which also adopt the system accent color, pose a significant fingerprinting vector if exposed widely on the web. As such, they're currently planned to only be available in installed web app contexts. We want system accent color exposure to match across all vectors, so we should scope `accent-color: auto` to only be available in installed web app contexts as well. This introduces more consistent developer and user expectations for system colors and aligns with fingerprinting restrictions for AccentColor[Text].
▹ Web Audio Configurable Render Quantum
WebAudioConfigurableRenderQuantumchromestatus.comAudioContext 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.
▹ Web Authentication Immediate Get
WebAuthenticationImmediateGetchromestatus.comA mediation mode for navigator.credentials.get() that causes browser sign-in UI to be displayed to the user if there is a passkey or password for the site that is immediately known to the browser, or else rejects the promise with NotAllowedError if there is no such credential available. This allows the site to avoid showing a sign-in page if the browser can offer a choice of sign-in credentials that are likely to succeed, while still allowing a traditional sign-in page flow for cases where there are no such credentials.
- All Images Painted Sent To Element Timing
AllImagesPaintedSentToElementTimingAudio Context Async State TransitionsAudioContextAsyncStateTransitionsCSS Contrast ColorCSSContrastColorCSS Supports Named Feature FunctionCSSSupportsNamedFeatureFunctionCSS Timeline Scope AllCSSTimelineScopeAllDisable Ellipsis When ScrolledDisableEllipsisWhenScrolledLogin ElementLoginElementLong Animation Frame Style DurationLongAnimationFrameStyleDurationNavigate Event Defer Cross Document CommitNavigateEventDeferCrossDocumentCommitProgress Max Is PositiveProgressMaxIsPositiveSvg Text Path Path AttributeSvgTextPathPathAttribute
Added in Chromium 145 current
▹ CSS Grid Lanes Layout
CSSGridLanesLayoutchromestatus.comCSS Grid-Lanes is a layout module where items of varying heights are arranged in columns, filling gaps to create a seamless grid, similar to a brick wall, perfect for accommodating elements with varying aspect ratios. Unlike CSS Grid, Grid-Lanes is better suited for one-dimensional flow layouts, like image galleries, where the focus is on filling the space efficiently rather than aligning items along both axes. Grid-Lanes provides greater design freedom, enabling the creation of dynamic, responsive layouts that adapt to content variations without the need for manual adjustments or a non-standard JavaScript implementation.
▹ Navigate Event Add Handler On Precommit
NavigateEventAddHandlerOnPrecommitchromestatus.comCurrently 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 a bit clunky when the flow includes a precommitHandler that leads to a post-commit handler. This addition is a small ergonomic improvement that enables registering a post-commit handler while invoking a precommit handler.
▹ Text Scale Meta Tag
TextScaleMetaTagchromestatus.comMakes the root element's default font size scale in proportion to both the operating system's and browser's text scale setting. This allows pages that follow best practices around font-relative units (i.e. use rem and em for font sizes and page elements that should change with the user's text size preferences) to respect the user's OS-level text scale setting. This also causes the browser to disable existing browser-based mechanisms (i.e. full-page zoom on windows) and heuristics (i.e. text autosizing on mobile). Now web developers can signal to the browser that the page is constructed in a way (i.e. with rem and em) that will scale well across various user-selected font size preferences. Similar to env(preferred-text-scale), which provides authors with a way to access the text scale; this API extends that by enabling scaling via the root element's default font size and opting-out of automatic text scaling.
▹ WebGPU Transient Attachment
WebGPUTransientAttachmentchromestatus.comFunctionality added to the WebGPU spec after its first shipment in a browser. A new TRANSIENT_ATTACHMENT GPUTextureUsage lets developers create attachments that allow render pass operations to stay in tile memory, avoiding VRAM traffic and potentially avoiding VRAM allocation for the textures.
- Autofill Event
AutofillEventContainer Name OnlyContainerNameOnlyCSS Animation Iteration CompositeCSSAnimationIterationCompositeCSS Lang Extended RangesCSSLangExtendedRangesCustomizable ComboboxCustomizableComboboxPerformance Mark Custom User Timing From SubframePerformanceMarkCustomUserTimingFromSubframeSet HTML Can Run ScriptsSetHTMLCanRunScriptsWebGPU Map Sync On WorkersWebGPUMapSyncOnWorkersWebGPU Multithread Dawn Wire On WorkersWebGPUMultithreadDawnWireOnWorkersXML Rust For Non XsltXMLRustForNonXslt
Added in Chromium 144
▹ Cookie Store API Max Age
CookieStoreAPIMaxAgechromestatus.comAllows callers to 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.
▹ Emoji Monochrome Rendering
EmojiMonochromeRenderingchromestatus.comThis 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 will therefore suppress 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.
▹ Install Element
InstallElementchromestatus.comAllows a website to declaratively prompt users to install a web app. The element optionally accepts two attributes which allows installation of content from a different origin.
▹ Prerender Activation By Form Submission
PrerenderActivationByFormSubmissionchromestatus.comThis extends speculation rules syntax to allow developers to specify the form_submission field for prerender. This field directs the browser to prepare the prerender as a form submission, so that it can be activated by real form submission navigations. Examples include a simple search form which results in a /search?q=XXX GET request navigation, support of which has been requested by web developers.
▹ Prerender Until Script
PrerenderUntilScriptchromestatus.comThis extends speculation rules to introduce a new action called prerender_until_script. It is designed as an intermediate option between the existing prefetch (which only fetches the main document) and prerender (which fully renders the page and runs all scripts). This new action will fetch and parse a page, discover and download its subresources like images and stylesheets, but will pause all script execution. When the user navigates to the page, it activates, and all the deferred scripts are then executed in order. This allows for a near-instant page load for content-heavy sites without the performance cost or side effects of running analytics or third-party scripts prematurely.
▹ User Media Element
UserMediaElementchromestatus.comContext-aware media element(s), are a declarative, user-activated control for accessing the starting and interacting with media streams. This addresses the long-standing problem of permission prompts being triggered directly from JavaScript without a strong signal of user intent. By embedding a browser-controlled element in the page, the user's click provides a clear, intentional signal. This enables a much better prompt UX and, crucially, provides a simple recovery path for users who have previously denied the permission. Note: This feature was previously developed and tested in an Origin Trial as the more generic <permission> element. Based on feedback from developers and other browser vendors, it has evolved into capability-specific elements to provide a more tailored and powerful developer experience.
- Cache Control RFC7234 Parsing
CacheControlRFC7234ParsingCache Control RFC7234 Parsing MetricsCacheControlRFC7234ParsingMetricsCSS Counter Reset ReversedCSSCounterResetReversedCSS List Counter AccountingCSSListCounterAccountingDeclarative CSS ModulesDeclarativeCSSModulesGamepad Raw Input Change EventGamepadRawInputChangeEventHsts Top Level Navigations OnlyHstsTopLevelNavigationsOnlyHTML Command For Scroll CommandsHTMLCommandForScrollCommandsResponsive IframesResponsiveIframesScroll Timeline Named Range ScrollScrollTimelineNamedRangeScrollSmaller Viewport UnitsSmallerViewportUnitsSvg Partition SVG Document Resources In Memory CacheSvgPartitionSVGDocumentResourcesInMemoryCacheWeb Authentication Ui ModeWebAuthenticationUiModeWebGPU Immediates FeatureWebGPUImmediatesFeature
Added in Chromium 143
▹ Canvas Tone Mapping
CanvasToneMappingchromestatus.comAdd a CanvasToneMapping member to CanvasRenderingContext2DSettings, allowing a 2D context to specify tone mapping.
▹ Color Space Display P3 Linear
ColorSpaceDisplayP3Linearchromestatus.comAdd display-p3-linear CSS color space
▹ CSS Scrolled Container Queries
CSSScrolledContainerQuerieschromestatus.comAllows authors to style descendants of containers based on the most recent scrolling direction. Example: .scrolling-up { translate: 80px 0; transition: 0.4s translate; } html { container-type: scroll-state; } @container scroll-state(scrolled: top) { .scrolling-up { translate: 0 0; } }
▹ Report Layout Shift Rects In Css Pixels
ReportLayoutShiftRectsInCssPixelschromestatus.comThis feature changes the attribution data (`prevRect` and `currentRect`) in the [LayoutShift API](https://wicg.github.io/layout-instability/) to be reported in CSS pixels instead of physical pixels. The current behavior is inconsistent with other layout-related APIs, which all use CSS pixels. This change improves consistency, simplifies usage for developers, and aligns with expected units in debugging and tooling.
▹ Svg Anchor Element Attributes
SvgAnchorElementAttributeschromestatus.comAdds support for ping, hreflang, type, and referrerPolicy attributes on SVGAElement, aligning its behavior with HTMLAnchorElement for consistent link handling across HTML and SVG.
▹ Timeline Trigger
TimelineTriggerchromestatus.comtrigger-scope gives authors the ability to limit the names of animation triggers declared by trigger-instantiating properties. Trigger-Instantiating properties, such as timeline-trigger, declare names which can be referenced by the animation-trigger property in order to attach animations to triggers. However, these names are global by default (similar to anchor-name) and it is often useful for author to limit the visibility of the names so as to isolate animation-to-trigger interactions.
▹ Trusted Types HTML
TrustedTypesHTMLchromestatus.comTrusted Types (https://developer.mozilla.org/en-US/docs/Web/API/Trusted_Types_API) 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 Type spec was co-written as a "monkey patch" spec along with our original implementation. It now receives fresh attention as others are trying to implement the same spec. It has now 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 may be developer observable. This intent is to update our implementation to match the spec, as it's upstreamed into HTML. Meanwhile, WebKit has launched their implementation of the updated Trusted Types spec, which gives us high confidence that this update is highly web compatible.
▹ View Transition Wait Until
ViewTransitionWaitUntilchromestatus.comThe ViewTransition automatically constructs a pseudo-element tree to display and animate participating elements in the transition. Per spec, this subtree is constructed when the view transition starts animating and is destroyed when the animations associated with all view transition pseudo-elements are in the finished state (or more precisely in a non-running non-paused state). This works for a vast majority of cases and provides a seamless experience for the developers. However, for more advanced cases, this is insufficient as there are times when developers want the view transition pseudo-tree to persist beyond the animation finish state. One example is tying view transitions with Scroll Driven Animations. When the animation is controlled by a scroll timeline, we don't want the subtree to be destroyed when the animations finish since scrolling back should still be able to animate the pseudo elements. In order to enable advanced uses of view transition, this intent adds a waitUntil() function on the ViewTransition object which takes a promise. This promise then delays destruction of the pseudo-tree until it is settled.
▹ Web Identity Digital Credentials Creation
WebIdentityDigitalCredentialsCreationchromestatus.comThis Web Platform feature enables issuing websites (e.g., a university, government agency, or bank) to securely initiate the provisioning (issuance) process of digital credentials directly into a user's mobile wallet application. On Android, this capability leverages the Android IdentityCredential CredMan system (Credential Manager). On Desktop, it leverages cross-device approaches using the CTAP protocol similar to Digital Credentials presentation.
▹ WebMCP
WebMCPchromestatus.comWebMCP is a proposal for a web API that enables web pages to provide agent-specific paths in their UI. With WebMCP, agent-service interaction takes place via app-controlled UI, providing a shared context available to app, agent, and user.
▹ WebXR Visibility Mask
WebXRVisibilityMaskchromestatus.comAdds an XRVisibilityMaskChange event that will provide a list of vertices and a list of indices to represent the mesh of the visible portion of the user's viewport. This data can then be used to confidently limit the amount of the viewport drawn to in order to improve performance. To better support this event, XRView's are also given unique identifiers to allow easier pairing with the associated masks. This is an extension to the core WebXR specification.
- Appearance Base
AppearanceBaseColor Space Predefined Linear SpacesColorSpacePredefinedLinearSpacesCpu PerformanceCpuPerformanceCSS Grid Gap SuppressionCSSGridGapSuppressionCSS Inherit FunctionCSSInheritFunctionCSS Text Transform Full WidthCSSTextTransformFullWidthEntropy Ignored For First Video Frame LCPEntropyIgnoredForFirstVideoFrameLCPEvent Pseudo Target PropertyEventPseudoTargetPropertyEvent Timing Target SelectorEventTimingTargetSelectorEvent TriggerEventTriggerLight Dismiss From ClickLightDismissFromClickMenu ElementsMenuElementsSelection And Focused Visible Position MatchSelectionAndFocusedVisiblePositionMatchSelection Remove Range Not Found ErrorSelectionRemoveRangeNotFoundErrorWebMCP TestingWebMCPTesting
Added in Chromium 142 Polypane 27.1
▹ Access Key Label
AccessKeyLabelchromestatus.comThe HTMLElement.accessKeyLabel read-only property returns a human-readable string representing the actual keyboard shortcut assigned to the element by the browser, based on the user’s platform and browser. If no access key is assigned, it returns an empty string.
▹ CSS Container Name Not Tree Scoped
CSSContainerNameNotTreeScopedchromestatus.comIgnore tree-scope when matching container-name for @container queries. Previously, container-name matching for container queries used tree-scoped names/references for matching, which meant the same name would not match if the @container rule and the container-type property were originating from different trees such that that container-type declaration came from an inner shadow tree. With this change container names match regardless of @container rule or container-type declaration origins.
▹ CSS Ruby Overhang
CSSRubyOverhangchromestatus.comSupport of new CSS property `ruby-overhang` is added. The property accepts one of `auto` and `none` keywords, and controls overhang of ruby annotation text.
▹ Font Language Override
FontLanguageOverridechromestatus.comThis feature introduces support for the font-language-override CSS property in Chromium. The property allows developers to override the system language used for OpenType glyph substitution by specifying a four-character language tag directly in CSS. This enables fine-grained typographic control, particularly useful for multilingual content or fonts with language-specific glyph variants.
▹ Module Preload Referrer
ModulePreloadReferrerchromestatus.comModulepreload and dynamic imports now correctly send the page’s referrer header when fetching scripts, aligning Chrome with the HTML specification.
▹ Navigation Transition Destination
NavigationTransitionDestinationchromestatus.comCurrently 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. Note that navigation.transition is only exposed for intercepted navigations - which means same-origin document-initiated navigations.
▹ Width And Height As Presentation Attributes On Nested Svg
WidthAndHeightAsPresentationAttributesOnNestedSvgchromestatus.comThis feature supports applying width and height as presentation attributes on nested <svg> elements through both SVG markup and CSS. This dual approach provides even greater flexibility for developers, allowing them to manage and style SVG elements more efficiently within complex designs. With this feature the below two html will now have the same output: With CSS Properties for nested <svg> element: <svg width="100px" height="100px"> <svg style="width:50px;height:50px;"> <circle cx="50px" cy="50px" r="40px" fill="green" /> </svg> </svg> Without CSS Properties for nested <svg> element: <svg width="100px" height="100px"> <svg width="50px" height="50px"> <circle cx="50px" cy="50px" r="40px" fill="green" /> </svg> </svg>
- Decouple Resolved Column Rule Width From Style
DecoupleResolvedColumnRuleWidthFromStyleDocument Policy Network Efficiency GuardrailsDocumentPolicyNetworkEfficiencyGuardrailsFocusgroup GridFocusgroupGridOriginating Element Is Implicit AnchorOriginatingElementIsImplicitAnchorSide Relative Background PositionSideRelativeBackgroundPositionSvg Enable Text Decoration Css StylingSvgEnableTextDecorationCssStylingSvg Fall Back To Container SizeSvgFallBackToContainerSizeSvg Sizing With Preserve Aspect Ratio NoneSvgSizingWithPreserveAspectRatioNone
Build your next project with Polypane
- Use all features on all plans
- On Mac, Windows and Linux
- 14-day free trial – no credit card needed
