Skip to content
A collection of Android libraries to build browsers or browser-like applications.
Kotlin JavaScript Java Python Shell CSS Other
Branch: master
Clone or download
MozLando and Amejia481 Merge #4130
4130: Closes #3925: Adding meaningful content descriptions to tracking protection toolbar icon for different states. r=rocketsroger a=Amejia481

Co-authored-by: Arturo Mejia <>
Latest commit 78b1010 Aug 23, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Fix pull request template markup Aug 13, 2019
automation Revert " Push successfuly build to repository." Jul 31, 2019
buildSrc Update GeckoView (nightly) (20190823-144746) Aug 23, 2019
components Merge #4130 Aug 23, 2019
config Closes #4004 - Increase limit for LongMethod rule Aug 2, 2019
docs Merge #4193 #4194 Aug 23, 2019
gradle/wrapper Update Gradle to 5.3.1. May 2, 2019
samples 1574470: Make handleBackgroundEvent internal Aug 22, 2019
tools Issue #1062: Add tools/ Mar 7, 2019
.buildconfig.yml Closes #3861: Add a component for synchronizing Application Services'… Aug 20, 2019
.editorconfig Add an .editorconfig file to fix ktlint Oct 31, 2018
.gitattributes Closes #1776: Add gradle task for updating public suffix list. Jan 23, 2019
.gitignore Closes #3775: Add AbstractAmazonPushService and publish lib-push-amazon Jul 25, 2019
.taskcluster.yml Issue #1200: Disable taskcluster checks for bors tmp branches. Aug 12, 2019 Update CHANGELOG to point to website. Aug 10, 2018
CODEOWNERS Update CODEOWNERS so anyone can review the changelog Apr 15, 2019 Add Mozilla Code of Conduct file Apr 1, 2019
LICENSE Initial commit Mar 21, 2018 Closes #3861: Add a component for synchronizing Application Services'… Aug 20, 2019
bors.toml bors: Use MozLando account for landing patches. Aug 21, 2019
build.gradle For #2740. Update `detekt` to `1.0.0-RC16`. Jul 2, 2019
codecov.yml Issue #315: Generate code coverage and upload to codecov from taskclu… Nov 2, 2018 For #1481. Enable unit test binary resources globally. Jun 13, 2019
gradlew Update Gradle to 5.3.1. May 2, 2019
gradlew.bat Update Gradle to 5.3.1. May 2, 2019
l10n.toml Import strings from android-l10n Aug 23, 2019
publish.gradle Adjust conditional logic for timestamp in RenameTask Jul 18, 2019

Android components

Task Status codecov Bors enabled

A collection of Android libraries to build browsers or browser-like applications.

ℹ️ For more information see the website.

A full featured reference browser implementation based on the components can be found in the reference-browser repository.

Getting Involved

We encourage you to participate in this open source project. We love pull requests, bug reports, ideas, (security) code reviews or any kind of positive contribution.

Before you attempt to make a contribution please read the Community Participation Guidelines.

Maven repository

All components are getting published on To use them, you need to add the following to your projects top-level build file, in the allprojects block (see e.g. the reference-browser):

repositories {
    maven {
       url ""

Snapshot builds

Snapshots are build daily from the master branch and published on

API Reference

The API reference docs are available at


  • 🔴 In Development - Not ready to be used in shipping products.
  • Preview - This component is almost/partially ready and can be tested in products.
  • 🔵 Production ready - Used by shipping products.


High-level components for building browser(-like) apps.


API contracts and abstraction layers for browser components.

  • Awesomebar - An abstract definition of an awesome bar component.

  • Engine - Abstraction layer that allows hiding the actual browser engine implementation.

  • Fetch - An abstract definition of an HTTP client for fetching resources.

  • 🔴 Push - An abstract definition of a push service component.

  • Storage - Abstract definition of a browser storage component.

  • 🔴 Tabstray - Abstract definition of a tabs tray component.

  • Toolbar - Abstract definition of a browser toolbar component.


Combined components to implement feature-specific use cases.

  • 🔴 Accounts - A component that connects an FxaAccountManager from service-firefox-accounts with feature-tabs in order to facilitate authentication flows.

  • Awesomebar - A component that connects a concept-awesomebar implementation to a concept-toolbar implementation and provides implementations of various suggestion providers.

  • Context Menu - A component for displaying context menus when long-pressing web content.

  • 🔴 Custom Tabs - A component for providing Custom Tabs functionality in browsers.

  • Downloads - A component to perform downloads using the Android downloads manager.

  • 🔴 Intent - A component that provides intent processing functionality by combining various other feature modules.

  • 🔴 Progressive Web Apps (PWA) - A component that provides functionality for supporting Progressive Web Apps (PWA).

  • 🔴 Reader View - A component that provides Reader View functionality.

  • QR - A component that provides functionality for scanning QR codes.

  • 🔴 Search - A component that connects an (concept) engine implementation with the browser search module.

  • 🔴 SendTab - A component for sending tabs to other devices with a registered FxA Account.

  • Session - A component that connects an (concept) engine implementation with the browser session and storage modules.

  • 🔴 Sync -A component that provides synchronization orchestration for groups of (concept) SyncableStore objects.

  • 🔴 Tabs - A component that connects a tabs tray implementation with the session and toolbar modules.

  • 🔴 Tab Collections - Feature implementation for saving, restoring and organizing collections of tabs.

  • 🔴 Toolbar - A component that connects a (concept) toolbar implementation with the browser session module.

  • Prompts - A component that will handle all the common prompt dialogs from web content.

  • Push - A component that provides Autopush messages with help from a supported push service.

  • Find In Page - A component that provides an UI widget for find in page functionality.

  • 🔴 Site Permissions - A feature for showing site permission request prompts.

  • 🔴 Web Notifications - A component for displaying web notifications.


Generic low-level UI components for building apps.

  • 🔵 Autocomplete - A set of components to provide autocomplete functionality.

  • 🔵 Colors - The standard set of Photon colors.

  • 🔵 Fonts - The standard set of fonts used by Mozilla Android products.

  • 🔵 Icons - A collection of often used browser icons.

  • Tabcounter - A button that shows the current tab count and can animate state changes.


Components and libraries to interact with backend services.

  • 🔵 Firefox Accounts (FxA) - A library for integrating with Firefox Accounts.

  • 🔴 Firefox Sync - Logins - A library for integrating with Firefox Sync - Logins.

  • 🔵 Fretboard - An Android framework for segmenting users in order to run A/B tests and roll out features gradually.

  • 🔴 Glean - A client-side telemetry SDK for collecting metrics and sending them to Mozilla's telemetry service (eventually replacing service-telemetry).

  • 🔴 Experiments - An Android SDK for running experiments on user segments in multiple branches.

  • Location - A library for accessing Mozilla's and other location services.

  • 🔴 Pocket - A library for communicating with the Pocket API.

  • 🔵 Telemetry - A generic library for sending telemetry pings from Android applications to Mozilla's telemetry service.


Supporting components with generic helper code.

  • 🔵 Android Test - A collection of helpers for testing components in instrumented (on device) tests (src/androidTest).

  • 🔵 Base - Base component containing building blocks for components.

  • 🔵 Ktx - A set of Kotlin extensions on top of the Android framework and Kotlin standard library.

  • 🔵 Test - A collection of helpers for testing components in local unit tests (src/test).

  • 🔵 Test Appservices - A component for synchronizing Application Services' unit testing dependencies used in Android Components.

  • 🔵 Utils - Generic utility classes to be shared between projects.

Standalone libraries


  • 🔵 Fetch-Tests - A generic test suite for components that implement concept-fetch.

  • 🔵 Lint - Custom Lint rules for the components repository.

Sample apps

Sample apps using various components.

  • Browser - A simple browser composed from browser components. This sample application is only a very basic browser. For a full-featured reference browser implementation see the reference-browser repository.

  • Crash - An app showing the integration of the lib-crash component.

  • Firefox Accounts (FxA) - A simple app demoing Firefox Accounts integration.

  • Firefox Sync - A simple app demoing general Firefox Sync integration, with bookmarks and history.

  • Firefox Sync - Logins - A simple app demoing Firefox Sync (Logins) integration.

  • Toolbar - An app demoing multiple customized toolbars using the browser-toolbar component.

  • DataProtect - An app demoing how to use the Dataprotect component to load and store encrypted data in SharedPreferences.

  • Glean - An app demoing how to use the Glean library to collect and send telemetry data.


This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at
You can’t perform that action at this time.