Firefox Extension Manifest V3 vs V2: What Actually Changed If you've been following Chrome's controversial Manifest V3 migration, you might be wondering: does Firefox have the same MV3? The answer is: yes and no. Firefox has its own implementation of Manifest V3, and it's meaningfully different from Chrome's. Firefox MV3 supports both MV2 and MV3 extensions Firefox's MV3 is less restrictive than
Handling Offline Mode in Firefox Browser Extensions When building extensions that depend on network data — like my Weather & Clock Dashboard — offline handling is critical. Users notice immediately when your extension shows stale data or broken UI. Browser extensions run at browser startup. If the user is on a train, airplane, or just has spotty WiFi, your fetch calls will fail. Without proper h
How I Automated Firefox Extension Screenshots for AMO Listings One of the most tedious parts of publishing to Mozilla's Add-On Observatory (AMO) is creating consistent, high-quality screenshots. After publishing the Weather & Clock Dashboard extension, I wanted a repeatable process for capturing screenshots automatically. AMO requires screenshots in specific dimensions (typically 1280×800 or sim
AMO Review Process: What Happens After You Submit a Firefox Extension Submitting a Firefox extension to addons.mozilla.org (AMO) is the end of development but the beginning of a review process. Here's what to expect. Listed as "Recommended" only after manual review Listed immediately but with a warning banner until reviewed Review takes days to weeks depending on queue No AMO listing — distribut
Internationalizing a Firefox Extension: i18n Without a Library Firefox extensions have a built-in i18n system that covers most use cases without any external library. Here's how to use it. _locales Directory Structure extension/ ├── manifest.json ├── _locales/ │ ├── en/ │ │ └── messages.json │ ├── fr/ │ │ └── messages.json │ ├── de/ │ │ └── messages.json │ └── ja/ │
Most websites want you to stay. Scroll more. I built one that hopes you leave quickly. It is called WheelPage: https://wheelpage.com/ It is a small browser tool for tiny decisions. Spin a wheel. That is the whole idea. No account. Just a small page for moments like: What should we pick? These are not important decisions. But they still take a little attention. A few seconds of hesitation. I wanted
If you’ve ever built a React app and thought, “Why does my page reload every time I click a link?” you’re not alone. That moment is usually where things start getting interesting… and where something like Browser Router quietly steps in to save your user experience. And if you’re following along with my series "Mastering React Hooks Together", this is the 3rd episode and trust me, this piece matt
Most B2B web apps ship with a fixed layout. Every user who logs in sees the exact same blocks in the exact same order, whether those blocks are relevant to their workflow or completely invisible to how they actually use the product. The analytics widget that one user opens every morning sits in the same position as it does for the user who has never touched it. That felt like a solvable problem to