How Firefox Marketplace Built a Web App Ecosystem

In the early 2010s, Mozilla launched the Firefox Marketplace in an ambitious effort to challenge the dominance of proprietary mobile and desktop app stores. This article examines how Mozilla attempted to build an open, cross-platform ecosystem of installable web applications for the Firefox Web Browser using standard web technologies, custom hardware APIs, and operating system integrations, before ultimately shutting the project down in favor of modern web standards.

The Technical Foundation: Open Web Apps

To make websites function like installable software, Mozilla introduced the concept of Open Web Apps. Unlike traditional browser extensions, these applications were built strictly using standard HTML5, CSS, and JavaScript.

The defining technical feature of a Firefox Marketplace app was the app manifest. This was a simple JSON file containing metadata such as the app's name, icons, description, and required system permissions. When a user clicked "install" in the Firefox Marketplace, the Firefox browser read this manifest to register the web app with the device's underlying operating system.

Native OS Integration via the Firefox Browser

Mozilla’s primary goal was to blur the line between a website and a native application. The Firefox Marketplace achieved this by using the Firefox browser as a background runtime environment on Windows, macOS, Linux, and Android, as well as natively on Firefox OS.

When a user installed an app from the Marketplace, Firefox communicated with the host operating system to create a dedicated desktop shortcut, Start Menu entry, or mobile home screen icon. Launching the app opened it in a "chromeless" window. This meant the app ran independently of the main browser interface, stripping away the address bar, back buttons, and tab strip. To the end user, the web app looked like a standalone program and even appeared as a separate application in the operating system's task switcher.

Hosted vs. Packaged Apps

To cater to different developer needs and security requirements, the Firefox Marketplace supported two distinct types of applications:

  • Hosted Apps: These functioned like elevated bookmarks. The app's code lived on the developer’s web server, and the Firefox runtime simply wrapped the website in a standalone window. Updates were instantaneous because developers only needed to update their web servers.
  • Packaged Apps: These were .zip bundles containing all the HTML, CSS, JavaScript, and media files needed to run the application. Downloaded directly to the user's device via the Firefox browser, packaged apps worked entirely offline. Because they did not rely on a live web server, they were eligible for deeper system access, provided they passed a strict code review by Mozilla.

Bridging the Hardware Gap with WebAPIs

At the time of the Marketplace's launch, standard websites were severely limited in how they could interact with device hardware. To create a viable app ecosystem that could compete with iOS and Android, Mozilla spearheaded the WebAPI project.

Mozilla built custom JavaScript APIs directly into the Firefox browser engine (Gecko). These APIs allowed installable web apps to bypass traditional browser sandboxing and access native device features. Through WebAPIs, a web app could access a device's camera, accelerometer, contacts list, battery status, Bluetooth, USB ports, and local file storage. This allowed developers to build complex software, such as 3D games and photo editors, using only web code.

Decentralization and Developer Incentives

Mozilla designed the Firefox Marketplace to be an open alternative to the walled gardens of Apple’s App Store and the Google Play Store. While the Marketplace served as a centralized hub for app discovery, Mozilla did not enforce a monopoly on distribution.

Using the navigator.mozApps API, any developer could place an "Install" button directly on their own website. If a user visited that website using the Firefox browser, they could install the web app directly to their device, bypassing the Firefox Marketplace entirely. Furthermore, Mozilla introduced the navigator.mozPay API, which offered developers a built-in system for handling in-app payments and subscriptions without forcing them to use a single payment processor.

Why the Ecosystem Failed

Despite its technical innovations, the Firefox Marketplace failed to achieve mass adoption for several reasons:

  1. The Demise of Firefox OS: The Marketplace was heavily tied to the success of Firefox OS, Mozilla’s mobile operating system aimed at developing markets. When Firefox OS failed to capture market share against cheap Android devices, the primary audience for the Marketplace vanished.
  2. Performance Issues: On desktop and Android, users found the reliance on the Firefox browser as a background runtime to be clunky. Web apps often suffered from slower startup times and sluggish performance compared to native applications.
  3. Lack of Browser Consensus: Other major browser vendors, such as Google, Apple, and Microsoft, refused to adopt Mozilla's proprietary manifest format and WebAPIs, meaning Firefox Marketplace apps could not be installed via Chrome, Safari, or Edge.
  4. The Rise of PWAs: Google eventually introduced Progressive Web Apps (PWAs), which achieved Mozilla's vision of installable, offline-capable web apps using standardized technologies like Service Workers and W3C Web App Manifests.

Recognizing that the industry was rallying around the standardized PWA model rather than Firefox-specific APIs, Mozilla began dismantling its ecosystem. The company removed the native app runtime from the desktop browser in 2016 and permanently shut down the Firefox Marketplace in March 2018.