Interop 2026 is an effort to increase the interoperability of key features of the web platform across browsers. These features, which are of high priority to web developers and end users, have been proposed by the web development community, and have been selected by the Interop Project team (to learn more, see Interop 2026 proposal selection process).
The Interop 2026 effort is part of the web-platform-tests (WPT) project — an automated test suite for web standards — and run by a team of representatives from companies that make substantial contributions to browser rendering engines (including Apple, Bocoup, Google, Igalia, Microsoft, and Mozilla).
Similar to previous years (2022, 2023, 2024, and 2025), the tests we selected will be continuously run on automated testing infrastructure. The test pass rates for each browser rendering engine will be displayed on the Interop 2026 dashboard — displaying the percentage of passing tests in each chosen area, and an overall total score of tests that pass in every browser. The dashboard will also display scores for group progress on particular investigation efforts selected by the Interop team to work on throughout the year.
Interop 2026 is focused on technology that is already specified in web standards.
- Focus areas
- Container style queries
- CSS anchor positioning
- CSS attr()
- CSS contrast-color()
- CSS zoom
- Custom highlights
- Dialogs and popovers
- Fetch uploads and ranges
- IndexedDB
- JSPI for Wasm
- Media pseudo-classes
- Navigation API
- Scoped custom element registries
- Scroll-driven animations
- Scroll snap
- CSS shape()
- View transitions
- Web compat
- WebRTC
- WebTransport
- Investigation efforts
Container style queries, which use the @container at-rule together with one or more style() functions, apply styles to an element based on the computed values of custom properties of its container.
- Proposal issue
- Tests
- Spec
- MDN docs: Container style queries
Anchor positioning places an element based on the position of another element. For example, you can place a tooltip next to the content it references.
This focus area is a carry over from Interop 2025. See last year's layout focus area description.
- Proposal issue
- Tests
- Spec
- MDN docs: CSS anchor positioning
The attr() CSS function returns the value of an attribute of an HTML element, with the option to return that value as a specific type or with a specific unit. For example: background-color: attr(data-background type(<color>), red);.
- Proposal issue
- Tests
- Spec
- MDN docs: attr()
The contrast-color() CSS function picks a color that has guaranteed contrast against a specified foreground or background color.
- Proposal issue
- Tests
- Spec
- MDN docs: contrast-color()
This focus area is a carry over from Interop 2025. See last year's layout focus area description.
This year, the work will focus on continuing to improve the interoperability of the zoom CSS property, which scales the size of an element. Unlike the transform property, a zoomed element affects page layout.
- Proposal issue
- Tests
- Spec
- MDN docs: zoom
Custom highlights style arbitrary text ranges, without adding extra elements to the DOM.
- Proposal issue
- Tests
- Spec
- MDN docs: CSS Custom Highlight API
The <dialog> HTML element represents a modal or non-modal dialog box, such as a confirmation prompt or a subwindow used to enter data. The popover HTML attribute creates an overlay to display content on top of other page content. Popovers can be shown declaratively using HTML, or by using the showPopover() method.
This year, the work will focus on:
- The
<dialog closedby>attribute, which sets the user actions that close a dialog. For example,<dialog closedby="any">allows the dialog to be closed by clicking outside of it. - The
:openCSS pseudo-class, which matches elements that have open states like<dialog>. - The
popover="hint"global attribute, which creates a popover that is subordinate to other popovers that have apopover="auto"attribute. You can use this to create tooltips that don't dismiss auto popovers for example.
- Proposal issues:
- Tests
- Specs:
- MDN docs:
The fetch() method makes asynchronous HTTP requests.
This year, the work will focus on:
- ReadableStream in body, to stream data to the server.
- Supporting FormData and mime-type for requests and responses.
- Supporting the Range header.
The IndexedDB API is a local storage transactional object database.
The work will focus on the getAllRecords() methods of IDBObjectStore and IDBIndex, which return records and their primary keys from an IndexedDB store or index. The records can be read in batches and in reverse order. The getAllRecords() methods speed up read operations on large datasets.
- Proposal issue
- Tests (interop-2026-indexeddb)
- Specs:
- MDN docs:
Wasm code (also known as WebAssembly) is a portable binary instruction format. The JavaScript Promise Integration API (JSPI) allows Wasm applications that were written assuming synchronous access to external functionality to operate smoothly in an environment where the functionality is actually asynchronous.
The :playing, :paused, :seeking, :buffering, :stalled, :muted, and :volume-locked CSS pseudo-classes match <audio> and <video> elements based on their state.
- Proposal issue
- Tests
- Spec
- MDN docs:
The navigation API initiates, intercepts, or modifies browser navigation actions.
This year, the work will focus on continuing to improve the interoperability of the Navigation API, and on the precommitHandler option to navigateEvent.intercept(), which defers the commit until a handler has resolved.
- Proposal issues:
- Tests
- Specs:
- MDN docs:
The CustomElementRegistry() constructor creates a new custom element registry that's separate from the global window.customElements registry. Creating more than one registry is useful for multiple custom elements that have the same tag name to coexist.
- Proposal issue
- Tests (interop-2026-scoped-custom-element-registries)
- Specs:
- MDN docs: CustomElementRegistry
The animation-timeline, scroll-timeline, and view-timeline CSS properties advance animations based on the user's scroll position.
- Proposal issue
- Tests
- Spec
- MDN docs: CSS scroll-driven animations
CSS scroll snap controls the panning and scrolling behavior within a scroll container.
- Proposal issue
- Tests
- Spec
- MDN docs: CSS scroll snap
The shape() CSS function creates shapes with a series of commands like line, move, and curve. It can be used with clip-path and shape-outside.
- Proposal issue
- Tests
- Spec
- MDN docs: shape()
View transitions allow you to create animated visual transitions between different states of a document, or between different documents in a multi-page application.
This year, the work will focus on:
- Continuing to improve the interoperability of same-document view transitions.
- The
blocking="render"attribute for<link>,<script>, and<style>elements, which blocks rendering until the external script or stylesheet has been loaded, or until a specific element is in the DOM. - The
<link rel="expect">attribute, which is a hint to the browser to block rendering until the element that the href value references is connected to the document and fully parsed. - The
:active-view-transition-type()CSS pseudo-class, which matches only when the active view transition was started with the specified type. - Cross-document view transitions.
- Proposal issues:
- Tests
- Specs:
- MDN docs:
- View Transition API
- Blocking attribute for <link>, <script>, <style>
- rel="expect" attribute
- :active-view-transition-type()
- @view-transition
Web compatibility refers to whether a website works as intended in a particular browser version. The tests in this focus area were selected based on evidence that differences between browsers have caused real-world problems for web developers or end users.
This year, the work will focus on web compatibility issues with:
- ESM module loading
- The timing of scroll events relative to animation events
- Unprefixing the
-webkit-user-selectproperty
- Proposal issues:
- Tests
- Specs:
- MDN docs:
The WebRTC API establishes real-time communication channels directly between browsers. It is commonly used in video conferencing applications.
This year, the work will focus on:
- Continuing to improve the interoperability of WebRTC.
- Fixing the remaining failing tests from the WebRTC Interop 2025 focus area.
- Proposal issues:
- Tests
- Spec
- MDN docs: WebRTC API
The WebTransport API transmits data between a client and a server, by using the HTTP/3 protocol.
- Proposal issue
- Tests (interop-2026-webtransport)
- Spec
- MDN docs: WebTransport API
In addition to the above focus areas, Interop 2026 also commits to making progress on the following investigation efforts. Each investigation effort below consists of a set of tasks that will bring the corresponding feature up to the bar that's required for it to possibly become a focus area in the future.
This is a continuation of last year's accessibility testing investigation effort, aimed at working towards generating consistent accessibility trees from the same DOM and CSS across browsers, and improving the WPT testing infrastructure for accessibility testing.
The JPEG XL image format is a raster graphics file format that supports animation, alpha transparency, and lossy as well as lossless compression.
This investigation effort will focus on making the feature testable. Current tests for this are sparse. Existing decoders have more comprehensive test suites, but we need to figure out the requirements. For example, progressive rendering is an important feature for developers, but how and when browsers should do this (to avoid performance issues) is currently being debated.
This is a continuation of last year's mobile testing investigation effort, which was focused on getting mobile browser data onto the wpt.fyi dashboard site.
This year, the work will focus on improving the WPT infrastructure to test mobile-specific features such as dynamic viewport changes.
This is a continuation of last year's WebVTT testing investigation effort, which aims at fixing as many tests as possible, making any needed changes to WebVTT specification along the way, so browser developers have a more transparent understanding of how their implementation conforms to the standard, hopefully opening up the future possibility for greatly improved interoperability.