The browser now handles tooltips natively. The Popover API, shipping with broad browser support today, lets you wire a tooltip with two HTML attributes: popovertarget on the trigger and popover="manual" plus role="tooltip" on the content element. No JavaScript event listeners. No custom Esc key handlers. No ARIA state to keep synchronized by hand.

The article is worth reading in full because the author does not just show the happy path. He walks through exactly what broke in the old JavaScript-and-library approach: screen readers announcing tooltips twice, focus getting lost, hover and blur requiring separate handlers, and Lighthouse flagging ARIA state errors he introduced himself. The before-and-after is specific and the failure modes are real. The Popover API eliminated his global keydown handlers, his focus restoration code, and his custom blur timing logic. Not reduced. Eliminated.

The honest caveat is in the piece: parts of the Popover API spec are still in flux, and Caniuse is the place to track current support gaps. Libraries still make sense for complex design systems or legacy constraints. But the default has moved. The author's practical suggestion is to replace one tooltip in your existing product, not a full migration, just one, and measure what disappears from your codebase.

[READ ORIGINAL →]