How to use the Interest Invoker API for better, more accessible UX


Interest Invoker API is a new and experimental API designed to help developers create UI changes with little or no need for JavaScript. Initially announced at Google I/O 2025 as part of the Web Platform updates, this experimental API aims to simplify how developers manage UI components like modals, popovers, and other layered interactions.

how to use the Interest Invoker API for better, more accessible UX

Although it’s just in the experimental stage, Interest Invoker holds great prospects for the problem of accessibility in web development. (Note that it’s only available in Chromium-based browsers like Chrome, and hasn’t yet been adopted or implemented by other browser engines like Firefox or Safari.)

In this article, we will look at the problems that the Interest Invoker API seeks to solve in web development. We’ll also get hands-on, using the API to add modals and popovers to our webpage, and leveraging the Interest Invoker pseudo classes for styling in CSS.

We will then see how to use it in conjunction with JavaScript to trigger an action when a user indicates or loses interest.

To follow along, you’ll need the following

  • Intermediate knowledge of HTML, CSS, and JavaScript
  • Basic understanding of pseudo-classes and user interaction patterns
  • A local dev setup with any Chromium-based browser

What you need to know about the Interest Invoker API

You will need to run Chrome version 135 or higher on your machine and also enable experimental features on Chrome for Interest Invoker to work.

For this article, we have a pre-built mini dashboard that we will use to learn and practice. We will add the popover, modal, and some styles as we progress into the tutorial.

I have provided two files:

  • dashboard.html file, which contains our prebuilt mini dashboard
  • A practice file named practice.html that we will use for testing some of the code before adding it to our dashboard.html file

The interest target attribute is currently only supported on the following elements:

We will be using the