Firefox for Web Developers
@webdevs
Official Firefox account for people who build on the web. Learn about the things we're working on to grow and improve the web platform.
Notification actions landed in Firefox 152, allowing you to add quick action buttons to your notifications. Here's how they work:
CSS field-sizing is newly baseline, meaning you can make various form fields size to their contents, without needing JavaScript.
Ever struggled to get heading tags right in includes/components? headingoffset could be the answer…
We're experimenting with a way to visualize session history in Firefox DevTools, and we'd love your feedback! Here's the background, and how to try it: blog.farre.se/posts/2026/0...
The Web Serial API landed in Firefox 151, allowing you to connect directly to microcontrollers, dev boards, 3D printers, power meters, and other serial-connected hardware from the web. Here's how it works:
CSS style() queries landed in Firefox 151 making them newly available across engines. Here's how they work:
Correction: Chrome's doesn't use the cloud, it only uses the 4gb model. chrome://on-device-internals/ has a faulty "uninstall" feature, which made it look like the model was uninstalled, but it still worked, which made me think it (as the spec allows) was using the cloud.
Chrome shipped an LLM Prompt API to the web platform. At Mozilla, we oppose this API. Here's why:
CSS's light-dark() now accepts images, making it simpler to define alternate values for a dark color scheme. Here's how it works:
sizes="auto" landed in Firefox 150, making responsive images simpler and more reliable. Here's when you can use it, and how…
map.getOrInsertComputed is newly baseline! It's a small feature, but I've found it pretty useful. Here's how it works:
CSS contrast-color is newly baseline, but it falls short in some areas. Here's how it works, and what to look out for:
hasUAVisualTransition landed in Firefox 149, making it available across all major engines. As well as having a very catchy name, it lets you avoid doubling up on page transitions. Here's how it works:
The CloseWatcher API landed in Firefox 149, making it easy to listen for platform-specific 'dismiss' signals. Here's how it works:
JavaScript Iterator․zip landed in Firefox 148, making it simple to loop over multiple things at the same time. Here's how it works:
If you have blocked AI enhancements, this is the same UI - the entry point to the feature isn't there. And of course, any already-downloaded models are deleted.
Taking, for example, the tab grouping and naming feature, if you don't "Block AI enhancements", then you're offered the feature, and if you click the button, the use of AI is explained, and you have to confirm. If you confirm, then the local privacy-preserving model is downloaded and used.
CSS shape() landed in Firefox 148. It's similar to path(), but allows the full expressiveness of CSS…
You can throw away innerHTML and replace it with the new setHTML(), which has a built-in sanitizer. Here's how it works:
Here's the flow when you choose "suggest more of my tabs" when creating a tab group. AI models are not downloaded until you press "continue" in the second step.
HTML might be getting a new type of tag, which… hasn't happened this millennium. Here's the new syntax, and how it works:
Here's a quick rundown of what we delivered as part of Interop 2025, and what's planned for Interop 2026!
AI Controls (formally 'kill switch') are landing in today's Firefox Nightly, and will land with Firefox 148 later this month.
That's, of course, your choice. However, if you're interested, the latest nightly has the AI Controls (as in, the 'kill switch') behind the `browser.preferences.aiControls` `about:config` pref. It will be unflagged soon, and bumped to the beta version.
CSS module scripts landed in Firefox 147, so you can import CSS directly into JavaScript.
In Firefox 147, you no longer need heavy libraries to (de)compress brotli with JS - you can just use CompressionStream and DecompressionStream!
View Transition Types are newly baseline! These make it easier to build transitions that are specific to particular situations. Also, we have some new View Transition DevTools in Firefox 147…
The Navigation API is newly baseline! The web now has sensible, low-level routing for navigations.