WebKit supports interactive-widget … and hopefully Safari will too?

About a month ago, WebKit gained support for interactive-widget. While it’s not clear whether this will end up in Safari or not, this is pretty exciting news: If you have ever had a virtual keyboard obscure your fixed navigation bar, then interactive-widget is for you.

This post details a quick recap of what the feature does, how we got here, and a sneak peek at it running in WebKit.

~

# The backstory: Interop 2022

Back in 2022, I did a lot of research into viewports as the lead of the Viewport Investigation Effort, part of Interop 2022.

Screenshot of the Viewport Investigation Effort Demo Pages

While that effort still hasn’t led to an actual Interop Proposal (due to the lack of proper mobile testing, something that is in the works ever since 2023 😏), one of the outcomes was that we at Chrome changed how viewports get resized when the virtual keyboard gets shown in Chrome on Android.

~

# Enter interactive-widget

Where Chrome used to resize the layout viewport by default, its behavior changed in Chrome 108. As of that version, which shipped in 2022, Chrome only resizes the visual viewport, thereby aligning its behavior with that of Safari.

Chrome’s old and new resize behavior. In the new behavior, which aligns with what Safari does, Chrome only resizes the visual viewport (orange dotted outline) when the virtual keyboard gets shown. The Layout Viewport (blue dashed outline) remains untouched. This shipped in 2022.

The side-effect of this change, though, is that you could end up with position: fixed content that gets obscured by the virtual keyboard:

Chrome’s old and new resize behavior, with position: fixed content. In the new behavior, that content can get obscured by the virtual keyboard.

As some developers heavily relied on the old behavior — or just want to have a fixed bottom toolbar that sits atop the virtual keyboard – we at Chrome developed a way to control what should happen when the virtual keyboard pops up: the interactive-widget directive for use in the viewport <meta> tag.

<meta name="viewport" content="width=device-width, initial-scale=1.0, interactive-widget=resizes-content">

The directive accepts three values:

  • resizes-visual: Resize only the Visual Viewport but not the Layout Viewport (default behavior).
  • resizes-content: Resize both the Visual Viewport and Layout Viewport.
  • overlays-content: Do not resize any viewport. This is similar to using the Virtual Keyboard API with overlaysContent set to true.

Put visually:

The impact of the various values for interactive-widget. The orange dotted box is the Visual Viewport. The blue one is the Layout Viewport. Both resize differently depending on the value of interactive-widget.

~

# Available in WebKit

About a month ago (mid-August), I was surprised to read a comment on the WebKit GitHub repo that interactive-widget had been implemented in WebKit.

Eager to test this out, it quickly became clear that this was not exactly possible without building WebKit yourself and running it using a simple browser shell called MobileMiniBrowser on the iPhone Simulator. A pity, as I don’t think all web developers out there can find their way around that.

Anywho, today I bit the bullet and built WebKit locally. Some time later (with fan noises as background music throughout) I had MobileMiniBrowser open in an iPhone Simulator with the Viewport Resize Behavior demos open.

MobileMiniBrowser showing a test page set to resizes-visual
MobileMiniBrowser showing a test page set to resizes-content
MobileMiniBrowser showing a test page set to overlays-content

While interactive-widget works fine in MobileMiniBrowser (hooray!), I still would like to test things in a real Safari on iOS. For that I will probably have to wait for Safari 27.1 to come, which, I guess, will be the version that will include this change. It is not clear though, because the Safari Technology Preview release notes have no mention of interactive-widget, even though Safari on desktop shows it in the list of feature flags …

The feature flag in Safari Technology Preview 252 on macOS

Reason I would like to test Safari on iOS itself, is because its UI differs a lot from the MobileMiniBrowser. For example, I’d like to see if and how Safari’s floating address bar influences things here. It’s probably fine already — there’s clever people work on Safari after all — but ever since viewport-fit ended up getting broken in Safari 26 (and still is broken to this day), I’d like to double check.

(💭 Side thought: If only there were a Safari Technology Preview for iOS …)

~

# Browser Support

💡 Although this post was originally published in September 2026, the list below is constantly being updated. Last update: September 11, 2026.

interactive-widget is supported in the following browsers:

Chromium (Blink)

✅ Supported in Chrome 108 (Android)

Firefox (Gecko)

✅ Supported in Firefox 133 (Android)

Safari (WebKit)

⏳ In development. Implemented in the WebKit source, but not yet shipped in a public release of Safari or Safari Technology Preview.

~

# Closing thoughts

I’m excited to see interactive-widget, a feature I helped shape, become part of WebKit. Hopefully it will come to Safari as well, so that developers can get control over how the viewport should resize when the virtual keyboard gets shown. To learn more about interactive-widget, check out the following resources I’ve authored:

~

🔥 Like what you see? Want to stay in the loop? Here's how:

I can also be found on 𝕏 Twitter and 🐘 Mastodon but only post there sporadically.

Published by Bramus!

Bramus is a frontend web developer from Belgium, working as a Chrome Developer Relations Engineer at Google. From the moment he discovered view-source at the age of 14 (way back in 1997), he fell in love with the web and has been tinkering with it ever since (more …)

Unless noted otherwise, the contents of this post are licensed under the Creative Commons Attribution 4.0 License and code samples are licensed under the MIT License

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.