Feature Definition
In the experimentation ecosystem, experiment surfaces are described as features. A feature is an area of code instrumented with telemetry and accessible for remote configuration. It can be as small as a single function or as complex as a whole page. Some examples:
aboutwelcome— the about:welcome page in Desktophomescreen— the homescreen page in FenixtabTrayFeature— the tab tray in Firefox iOS
Features are defined in a manifest file specific to your platform. The manifest declares what variables the feature exposes, how they connect to preferences, and what telemetry the feature records.
Define your feature
Choose the guide for your platform:
- Desktop — add your feature to
FeatureManifest.yaml. See the Desktop Feature Manifest Reference for the complete schema. - Mobile (Android / iOS) — add your feature to your app's
.fml.yamlfile. See the Feature Manifest Language (FML) specification for the complete schema. - Web (Cirrus) — see the Cirrus integration guide.
QA testing your feature
After landing a new feature, it is recommended to go through QA before running experiments or rollouts. This provides an extra layer of stability and can surface limitations early.
- See this document for steps on how to file a QA request. Use the
Feature-Configurationlabel in Jira. (Example) - If you have documentation about the feature's configuration, link it to the QA ticket — this helps with test plan and test case creation.
Common questions QA will ask:
- What specific functionality is enabled and how can we see it in action?
- Are there any exposed user preferences in about:preferences?
- If the feature has an exposure event, when does it trigger?
- Does the feature have specific telemetry events and which pipeline (Legacy or Glean)?