We Rewrote Our Angular 18 App in React 20 and Increased Developer Velocity by 40% Last quarter, our engineering team made the bold call to rewrite our 3-year-old Angular 18 production application in React 20. After 6 months of development, we cut over to the new stack with zero downtime, and the results have exceeded our expectations: we’ve measured a 40% increase in developer velocity, alongsid
White labeling is more common than you might think. When developing software, you often need to deploy the same application for multiple clients, each requiring their own customization: unique color palettes, logos, or specific variants for a link. Without a proper strategy, you might be tempted to simply clone the existing repository and implement client-specific changes on demand. However, this
Building a Search Bar for Your Firefox New Tab Extension A search bar is the highest-ROI feature for any new tab extension. Users type queries dozens of times per day — if your extension can save them from navigating to google.com first, that's real value. Here's how I built the search bar in the Weather & Clock Dashboard extension. <form id="search-form" class="search-form" role="search"> <di
Testing Firefox Extensions with Playwright: End-to-End Testing Guide Extension testing is one of those things everyone knows they should do but few actually do. I've been using Playwright for end-to-end tests on the Weather & Clock Dashboard extension and it's changed how I think about extension quality. Unit tests don't cover the biggest failure modes: Does the extension actually load in Firefo
Keyboard Shortcuts in Firefox Extensions: A Complete Guide Keyboard shortcuts make extensions feel native. A new tab extension that users can control without clicking feels much more polished. Here's how to add them to your Firefox extension. { "manifest_version": 2, "commands": { "toggle-dark-mode": { "suggested_key": { "default": "Ctrl+Shift+D", "mac": "Command+Sh
How I Used GitHub Actions to Auto-Publish to AMO on Every Release Manually uploading extension files to AMO (Mozilla's Add-On Observatory) is tedious. After the fifth time forgetting to increment the version number, I automated it with GitHub Actions. Here's exactly how I set up the pipeline for the Weather & Clock Dashboard extension. Trigger on new GitHub release Validate the manifest version
How to Use the OpenWeatherMap API in a Firefox Extension Weather data is one of the most commonly requested features in new tab extensions. The Weather & Clock Dashboard uses OpenWeatherMap's free tier. Here's a complete guide. Sign up at openweathermap.org — free tier allows 60 calls/minute, 1M calls/month Go to API keys in your account dashboard Copy the default API key (or create a new one) K
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