Firefox for Web Developers
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.
Chrome shipped an LLM Prompt API to the web platform. At Mozilla, we oppose this API. Here's why:
Firefox 151 is out now, and brings with it some tasty new web platform features:
🎉 Container style() queries
🎉 Web Serial API
🎉 Document Picture-in-Picture API
🎉 keyboardLock on requestFullscreen
…and more!
https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/151
I hope we can (re)gain your trust here.
I don't personally work on this stuff, but I'll try hard to answer any questions you have.
And other than that, I'll get back in my lane, and stick to web platform stuff.
CSS style() queries landed in Firefox 151 making them newly available across engines. Here's how they work:
You can throw away innerHTML and replace it with the new setHTML(), which has a built-in sanitizer. Here's how it works:
Web Serial landed in Firefox 151! Here's how it works, and what you can do with it: https://hacks.mozilla.org/2026/05/web-serial-support-in-firefox/
sizes="auto" landed in Firefox 150, making responsive images simpler and more reliable. Here's when you can use it, and how…
Firefox 150 just landed & includes new web platform features like:
🎉 sizes="auto" on images
🎉 light-dark() image support
🎉 CSS revert-rule
🎉 ariaNotify()
🎉 Media pseudo-classes like :playing
None of these are baseline yet, so check MDN for support.
https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/150
The CloseWatcher API landed in Firefox 149, making it easy to listen for platform-specific 'dismiss' signals. Here's how it works:
CSS's light-dark() now accepts images, making it simpler to define alternate values for a dark color scheme. 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:
CSS shape() landed in Firefox 148. It's similar to path(), but allows the full expressiveness of CSS…
Can you tell CSS from BS? I tried, and it's hard.
Firefox uses on-device downloaded-on-demand ML models for privacy-preserving translation. They're not LLMs. They're trained on open data. Should translation be disabled if the AI 'kill switch' is active?
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:
JavaScript Iterator․zip landed in Firefox 148, making it simple to loop over multiple things at the same time. Here's how it works:
There are many browsers, but only three widely-used engines. We maintain one of those engines - Gecko. Here's why we feel that browser engine diversity is essential for the future of the web https://blog.mozilla.org/netpolicy/2026/03/23/competition-innovation-and-the-future-of-the-web/
Recently, we fixed an unprecedented number of latent security bugs in Firefox identified by Claude Mythos Preview.
Here's how we approached this work, what we found, and what we learned:
https://hacks.mozilla.org/2026/05/behind-the-scenes-hardening-firefox/
Firefox 149 is out now, and adds bunch of new web platform features, such as:
🎉 The CloseWatcher API
🎉 popover=hint (although I'm concerned about the spec'd behaviour)
🎉 hasUAVisualTransition on PopStateEvent
🎉 font-family: math
🎉 The CSP reporting API
And more!
https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/149
HTML hidden=until-found and auto-opening is newly baseline… or is it? Here's how it works, and issues to watch out for:
map.getOrInsertComputed is newly baseline! It's a small feature, but I've found it pretty useful. Here's how it works.
Full docs and polyfills on MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/getOrInsertComputed
WebAssembly is a second-class language on the web, but how can we make it first-class? WebAssembly Components could be the answer…
https://hacks.mozilla.org/2026/02/making-webassembly-a-first-class-language-on-the-web/
RE: @keithamus@indieweb.social
Sorry everyone. You're about to spend a ton of time on this.
My score is 0.0028 💅 (although I get different scores on different screens - my best is on my MacBook)
A common mistake with a 'subtree' MutationObserver is assuming addedNodes includes all newly connected nodes, but it doesn't include preexisting children of the added nodes https://codepen.io/editor/jaffathecake/pen/019d90a5-98e5-7d08-b85f-630c9257cfad?console=true&file=%2Fscript.js&orientation=left&show=split
@stefanfrede@mastodon.social no, that isn't intentional. Can you confirm which version of Firefox you're seeing the change in?
@stefanfrede@mastodon.social https://bugzilla.mozilla.org/show_bug.cgi?id=2026109 here it is. The fix will be uplifted to 149 soon.


