Bug 1882220: Support simple UI weather suggestion r=adw
[gecko.git] / toolkit / components / nimbus / FeatureManifest.yaml
blob12d7a1c8508accd2c9ab5087e1da80fd100f8ce5
1 # This Source Code Form is subject to the terms of the Mozilla Public
2 # License, v. 2.0. If a copy of the MPL was not distributed with this
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
5 # Features must be added here to be accessible through the NimbusFeature API.
7 "no-feature-firefox-desktop":
8   description: A dummy feature for experiments that target no feature.
9   owner: barret@mozilla.com
10   applications:
11     - firefox-desktop
12     - firefox-desktop-background-task
13   hasExposure: false
14   variables: {}
16 testFeature:
17   description: Test only feature
18   owner: barret@mozilla.com
19   applications:
20     - firefox-desktop
21     - firefox-desktop-background-task
22   hasExposure: false
23   isEarlyStartup: true
24   variables:
25     enabled:
26       type: boolean
27       description: Whether or not this feature is enabled
28     testInt:
29       type: int
30       fallbackPref: nimbus.testing.testInt
31       description: Int pref used by platform API tests
32     testSetString:
33       type: string
34       setPref:
35         branch: user
36         pref: nimbus.testing.testSetString
37       description: A string pref set by Nimbus tests
39 nimbus-qa-1:
40   description: A feature for testing pref-setting on the default branch.
41   owner: barret@mozilla.com
42   hasExposure: false
43   variables:
44     value:
45       type: string
46       setPref:
47         branch: default
48         pref: nimbus.qa.pref-1
49       description: The value to set for the pref.
51 nimbus-qa-2:
52   description: A feature for testing pref-setting on the user branch.
53   owner: barret@mozilla.com
54   isEarlyStartup: true
55   hasExposure: false
56   variables:
57     value:
58       type: string
59       setPref:
60         branch: user
61         pref: nimbus.qa.pref-2
62       description: The value to set for the pref.
64 # `search` is for search engine experimentation features which do not require
65 # isEarlyStartup to be set.
66 search:
67   description: Search engine experimentation support and testing features.
68   owner: search-and-suggest-program@mozilla.com
69   hasExposure: false
70   variables:
71     extraParams:
72       type: json
73       description: >-
74         This allows extra parameters to be set for search engines requests including,
75         where calls to the suggestions API, the search engine configuration defines
76         those parameters.
78         The use of this field should be coordinated with the Search team.
80         The field value is an array of objects with key/value fields. For example:
82         [
83           {"key": "google_channel_row", "value": "foo"}
84         ]
86         This is matched to a section in the search configuration:
88         "extraParams": [
89           {
90             "name": "channel",
91             "pref": "google_channel_row",
92             "condition": "pref"
93           }
94         ],
96         In this case, the resulting URL for the appropriate search engine would have
97         `&channel=foo` added to the URL when doing searches.
99         If the key is not referenced in the search configuration, then no parameter
100         will be added. Only the search team can update the configuration.
101     richSuggestionsFeatureGate:
102       type: boolean
103       setPref:
104         branch: default
105         pref: browser.urlbar.richSuggestions.featureGate
106       description: >-
107         Feature gate that controls whether Rich Suggestions are enabled.
108     serpEventTelemetryEnabled:
109       type: boolean
110       setPref:
111         branch: default
112         pref: browser.search.serpEventTelemetry.enabled
113       description: Whether the Glean SERP event telemetry is enabled.
114     serpEventTelemetryCategorizationEnabled:
115       type: boolean
116       setPref:
117         branch: default
118         pref: browser.search.serpEventTelemetryCategorization.enabled
119       description: Whether the Glean SERP event telemetry for SERP categorization is enabled.
120     trendingEnabled:
121       type: boolean
122       setPref:
123         branch: default
124         pref: browser.urlbar.trending.featureGate
125       description: Feature gate that controls whether trending suggestions are enabled.
126     trendingRequireSearchMode:
127       type: boolean
128       setPref:
129         branch: default
130         pref: browser.urlbar.trending.requireSearchMode
131       description: Controls whether trending suggestions are only shown in search mode or not.
132     trendingMaxResultsNoSearchMode:
133       type: int
134       setPref:
135         branch: default
136         pref: browser.urlbar.trending.maxResultsNoSearchMode
137       description: The maximum number of trending results mode outside search mode.
139 # `searchConfiguration` is for search experiment features for items that require
140 # isEarlyStartup to be true. These items may require a reload of the search
141 # engine configuration, and an additional reload may happen during the startup
142 # process.
143 searchConfiguration:
144   description: Search experimentation support for the engine configuration
145   owner: search-and-suggest-program@mozilla.com
146   isEarlyStartup: true
147   hasExposure: false
148   variables:
149     experiment:
150       type: string
151       fallbackPref: browser.search.experiment
152       description: >-
153         Used to activate only matching configurations that contain the value in
154         `experiment`
155     seperatePrivateDefaultUIEnabled:
156       type: boolean
157       description: Whether the UI for the separate private default feature is enabled.
158     seperatePrivateDefaultUrlbarResultEnabled:
159       type: boolean
160       description: Whether the urlbar result for the separate private default is shown.
162 urlbar:
163   description: The Address Bar
164   owner: search-and-suggest-program@mozilla.com
165   hasExposure: true
166   exposureDescription: >-
167     The timing of the exposure event depends on the experiment, but generally
168     the event is recorded once per app session when the user first encounters
169     the UI of the experiment in which they're enrolled.
170   variables:
171     addonsFeatureGate:
172       type: boolean
173       fallbackPref: browser.urlbar.addons.featureGate
174       description: >-
175         Feature gate that controls whether all aspects of the addons suggestion
176         feature are exposed to the user.
177     addonsShowLessFrequentlyCap:
178       type: int
179       description: >-
180         If defined and non-zero, this is the maximum number of times the user
181         will be able to click the "Show less frequently" command for addon
182         suggestions. If undefined or zero, the user will be able to click the
183         command without any limit.
184     autoFillAdaptiveHistoryEnabled:
185       type: boolean
186       fallbackPref: browser.urlbar.autoFill.adaptiveHistory.enabled
187       description: Whether enabling adaptive history autofill.
188     autoFillAdaptiveHistoryMinCharsThreshold:
189       type: int
190       fallbackPref: browser.urlbar.autoFill.adaptiveHistory.minCharsThreshold
191       description: Minimum char length of the user's search string to trigger adaptive history autofill.
192     autoFillAdaptiveHistoryUseCountThreshold:
193       type: string
194       description: This value assumes float expression like "0.47". Threshold for use count of input history that we handle as adaptive history autofill. If the use count is this value or more, it will be a candidate.
195     experimentType:
196       type: string
197       description: The type of the experiment (or rollout). If "best-match", then the Nimbus exposure event will be recorded when the user first triggers a best match (or would have triggered a best match, for users in the control group). If empty, the event will be recorded when the user first triggers any type of Suggest suggestion.
198       enum:
199         - best-match
200         - ""
201     mdnFeatureGate:
202       type: boolean
203       setPref:
204         branch: default
205         pref: browser.urlbar.mdn.featureGate
206       description: >-
207         Feature gate that controls whether all aspects of the mdn suggestion
208         feature are exposed to the user.
209     merinoClientVariants:
210       type: string
211       fallbackPref: browser.urlbar.merino.clientVariants
212       description: >-
213         Comma separated list of client variants to report to the Merino server.
214         May impact server behavior.
215     merinoEndpointURL:
216       type: string
217       fallbackPref: browser.urlbar.merino.endpointURL
218       description: >-
219         The Merino endpoint URL, not including parameters. An empty string will
220         cause Firefox not to fetch from Merino.
221     merinoProviders:
222       type: string
223       fallbackPref: browser.urlbar.merino.providers
224       description: >-
225         Comma-separated list of providers to request from the Merino server.
226         Merino will return suggestions only for these providers.
227     merinoTimeoutMs:
228       type: int
229       fallbackPref: browser.urlbar.merino.timeoutMs
230       description: Timeout for Merino fetches (ms)
231     exposureResults:
232       type: string
233       setPref:
234         branch: default
235         pref: browser.urlbar.exposureResults
236       description: >-
237         Comma-separated list of result type combinations, that are used to determine if an exposure event should be fired.
238     showExposureResults:
239       type: boolean
240       setPref:
241         branch: default
242         pref: browser.urlbar.showExposureResults
243       description: >-
244         Boolean used to determine if the results defined in `exposureResults` should be shown in search results. Should be false for Control branch of an experiment.
245     pocketFeatureGate:
246       type: boolean
247       fallbackPref: browser.urlbar.pocket.featureGate
248       description: >-
249         Feature gate that controls whether all aspects of the Pocket suggestions
250         feature are exposed to the user.
251     pocketShowLessFrequentlyCap:
252       type: int
253       description: >-
254         If defined and non-zero, this is the maximum number of times the user
255         will be able to click the "Show less frequently" command for Pocket
256         suggestions. If undefined or zero, the user will be able to click the
257         command without any limit.
258     quickSuggestAllowPositionInSuggestions:
259       type: boolean
260       fallbackPref: browser.urlbar.quicksuggest.allowPositionInSuggestions
261       description: Whether quick suggest results can be shown in position specified in the suggestions.
262     quickSuggestContextualOptInEnabled:
263       type: boolean
264       setPref:
265         branch: default
266         pref: browser.urlbar.quicksuggest.contextualOptIn
267       description: Whether the Firefox Suggest contextual opt-in result is enabled. If true, this implicitly disables shouldShowOnboardingDialog.
268     quickSuggestContextualOptInSayHello:
269       type: boolean
270       setPref:
271         branch: default
272         pref: browser.urlbar.quicksuggest.contextualOptIn.sayHello
273       description: Controls which variant of the copy is used for the Firefox Suggest contextual opt-in result.
274     quickSuggestContextualOptInTopPosition:
275       type: boolean
276       setPref:
277         branch: default
278         pref: browser.urlbar.quicksuggest.contextualOptIn.topPosition
279       description: Controls whether the Firefox Suggest contextual opt-in result appears at the top of results or at the bottom, after one-off buttons.
280     quickSuggestDataCollectionEnabled:
281       type: boolean
282       description: Whether data collection should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) data collection, if the user has already toggled that preference.
283     quickSuggestEnabled:
284       type: boolean
285       fallbackPref: browser.urlbar.quicksuggest.enabled
286       description: Gate for the Firefox Suggest feature as a whole. If false, the Firefox Suggest preferences UI and Suggest suggestions will not be shown. If true, the preferences UI will be shown, and the user can turn suggestions on or off.
287     quickSuggestImpressionCapsSponsoredEnabled:
288       type: boolean
289       fallbackPref: browser.urlbar.quicksuggest.impressionCaps.sponsoredEnabled
290       description: Whether sponsored suggestions are subject to impression frequency caps. If false, sponsored suggestions can be shown an unlimited number of times over any given period. If true, sponsored suggestion impressions will be subject to the caps in the remote settings configuration.
291     quickSuggestImpressionCapsNonSponsoredEnabled:
292       type: boolean
293       fallbackPref: browser.urlbar.quicksuggest.impressionCaps.nonSponsoredEnabled
294       description: Whether non-sponsored suggestions are subject to impression frequency caps. If false, non-sponsored suggestions can be shown an unlimited number of times over any given period. If true, non-sponsored suggestion impressions will be subject to the caps in the remote settings configuration.
295     quickSuggestNonSponsoredEnabled:
296       type: boolean
297       description: Whether non-sponsored suggestions should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) non-sponsored suggestions, if the user has already toggled that preference.
298     quickSuggestNonSponsoredIndex:
299       type: int
300       fallbackPref: browser.urlbar.quicksuggest.nonSponsoredIndex
301       description: >-
302         The index of non-sponsored QuickSuggest results within the general
303         group. A negative index is relative to the end of the group
304     quickSuggestOnboardingDialogVariation:
305       type: string
306       description: >-
307         Specify the messages/UI variation for QuickSuggest onboarding dialog. This value is case insensitive.
308     quickSuggestRemoteSettingsDataType:
309       type: string
310       description: The `type` of the suggestions data in remote settings. If not specified, "data" is used.
311     quickSuggestRustEnabled:
312       type: boolean
313       fallbackPref: browser.urlbar.quicksuggest.rustEnabled
314       description: >-
315         Whether Firefox Suggest will use the new Rust backend instead of the
316         original JS backend.
317     quickSuggestScenario:
318       # IMPORTANT: This should not have a fallbackPref. See UrlbarPrefs.jsm.
319       type: string
320       description: The Firefox Suggest scenario in which the user is enrolled
321       enum:
322         - history
323         - offline
324         - online
325     quickSuggestScoreMap:
326       type: json
327       description: >-
328         A JSON object that maps telemetry result types to suggestion scores. If
329         a telemetry result type is present in this map, the client will use the
330         corresponding score as the score for all suggestions of the type,
331         overriding all other sources of scores for the type. In other words,
332         the scores in this map will override scores that are set in remote
333         settings and Merino as well as scores that are hardcoded in the client.
334         Example entries: `"amo": 0.5`, `"adm_sponsored": 0.9`
335     quickSuggestShouldShowOnboardingDialog:
336       type: boolean
337       fallbackPref: browser.urlbar.quicksuggest.shouldShowOnboardingDialog
338       description: Whether or not to show the QuickSuggest onboarding dialog
339     quickSuggestShowOnboardingDialogAfterNRestarts:
340       type: int
341       fallbackPref: browser.urlbar.quicksuggest.showOnboardingDialogAfterNRestarts
342       description: Show QuickSuggest onboarding dialog after N browser restarts
343     quickSuggestSponsoredEnabled:
344       type: boolean
345       description: Whether sponsored suggestions should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) sponsored suggestions, if the user has already toggled that preference.
346     quickSuggestSponsoredIndex:
347       type: int
348       fallbackPref: browser.urlbar.quicksuggest.sponsoredIndex
349       description: >-
350         The index of sponsored QuickSuggest results within the general group. A
351         negative index is relative to the end of the group
352     quickSuggestSponsoredPriority:
353       type: boolean
354       fallbackPref: browser.urlbar.quicksuggest.sponsoredPriority
355       description: >-
356         Whether or not showing sponsored suggestion as priority.
357         If this variable is true, the following things are processed.
358         * "Sponsored" label is shown as the group label.
359         * Change the suggested index to 1.
360         * Handle as top pick.
361     recentSearchesFeatureGate:
362       type: boolean
363       setPref:
364         branch: default
365         pref: browser.urlbar.recentsearches.featureGate
366       description: Gate for the recent searches feature.
367     recentSearchesMaxResults:
368       type: int
369       setPref:
370         branch: default
371         pref: browser.urlbar.recentsearches.maxResults
372       description: The maximum number of recent searches to show.
373     recordNavigationalSuggestionTelemetry:
374       type: boolean
375       description: Whether to record navigational suggestion telemetry. Defaults to false.
376     showSearchTermsFeatureGate:
377       type: boolean
378       fallbackPref: browser.urlbar.showSearchTerms.featureGate
379       description: Gate for the show search terms feature. If false, the preference#search will not show the search terms feature checkbox, and search terms will never persist in the urlbar. If true, the preference checkbox will be shown on preferences#search, and the user can choose to persist search terms on or off in the urlbar.
380     weatherFeatureGate:
381       type: boolean
382       fallbackPref: browser.urlbar.weather.featureGate
383       description: >-
384         Feature gate that controls whether all aspects of the weather suggestion
385         feature are exposed to the user. See also `weatherKeywords` and
386         `weatherKeywordsMinimumLength`. In summary: To enable the weather
387         suggestion, set `weatherFeatureGate` to true, `weatherKeywords` to an
388         array of full keyword strings, and `weatherKeywordsMinimumLength` to a
389         non-zero integer. To disable the weather suggestion, leave out all
390         weather-related variables.
391     weatherKeywords:
392       type: json
393       description: >-
394         An array of full keyword strings that will trigger the weather
395         suggestion when the user types them in the address bar. If absent or
396         null, Firefox will fall back to the weather keywords defined in remote
397         settings. If neither Nimbus nor remote settings defines any keywords,
398         the weather suggestion will be disabled. See also
399         `weatherKeywordsMinimumLength`.
400     weatherKeywordsMinimumLength:
401       type: int
402       description: >-
403         If defined and non-zero, the weather suggestion will be triggered by
404         typing any prefix of a full weather keyword when the prefix is at least
405         `weatherKeywordsMinimumLength` characters long. If this variable is
406         absent or zero, Firefox will fall back to the minimum length defined in
407         remote settings. If neither Nimbus nor remote settings defines a minimum
408         length, only full keywords will trigger the suggestion. See also
409         `weatherKeywords`.
410     weatherKeywordsMinimumLengthCap:
411       type: int
412       description: >-
413         If defined and non-zero, the user will not be able to increment the
414         minimum keyword length beyond this value. e.g., if this value is 6, the
415         current minimum length is 5, and the user clicks "Show less frequently",
416         then the minimum length will be incremented to 6, the "Show less
417         frequently" command will be hidden, and the user can continue to trigger
418         the weather suggestion by typing 6 characters, but they will not be able
419         to increment the minimum length any further. If this variable is absent
420         or zero, Firefox will fall back to the cap defined in remote settings.
421         If neither Nimbus nor remote settings defines a cap, no cap will be
422         used, and the user will be able to increment the minimum length without
423         any limit.
424     weatherSimpleUI:
425       type: boolean
426       description: >-
427         If true, show the weather suggestion by simple UI edition as follows.
428         * Remove the forcast text from the summary text.
429     yelpMinKeywordLength:
430       type: int
431       fallbackPref: browser.urlbar.yelp.minKeywordLength
432       description: >-
433         If the length of user's query is less than this value plus
434         "yelp.showLessFrequentlyCount", Yelp suggestion never be shown.
435     yelpFeatureGate:
436       type: boolean
437       fallbackPref: browser.urlbar.yelp.featureGate
438       description: >-
439         Feature gate that controls whether all aspects of the Yelp suggestion
440         feature are exposed to the user.
441     yelpShowLessFrequentlyCap:
442       type: int
443       fallbackPref: browser.urlbar.yelp.showLessFrequentlyCap
444       description: >-
445         If defined and non-zero, this is the maximum number of times the user
446         will be able to click the "Show less frequently" command for Yelp
447         suggestions. If undefined or zero, the user will be able to click the
448         command without any limit.
449     yelpSuggestNonPriorityIndex:
450       type: int
451       fallbackPref: browser.urlbar.yelp.suggestedIndex
452       description: >-
453         The group-relative suggestedIndex of Yelp suggestions within the Firefox
454         Suggest section. Ignored when `yelpSuggestPriority` is true.
455     yelpSuggestPriority:
456       type: boolean
457       fallbackPref: browser.urlbar.yelp.priority
458       description: >-
459         Whether or not showing yelp suggestion as priority.
460         If this variable is true, the following things are processed.
461         * Change the suggested index to 1.
462         * Handle as top pick.
463     originsAlternativeEnable:
464       description: >-
465         Use an alternative ranking algorithm for autofilling origins, that is
466         mainly domains of Web pages. When the user types the beginning of an
467         origin, we autofill the whole origin. Whether autofill happens depends
468         on the ranking algorithm. Bookmarks are always autofilled anyway.
469       type: boolean
470       setPref:
471         branch: user
472         pref: "places.frecency.origins.alternative.featureGate"
473     originsDaysCutOff:
474       description: >-
475         The alternative ranking algorithm only considers pages visited in the
476         last N days, where N is controlled by this variable.
477       type: int
478       setPref:
479         branch: user
480         pref: "places.frecency.origins.alternative.daysCutOff"
481     pagesAlternativeEnable:
482       description: >-
483         Use an alternative ranking algorithm for sorting history and bookmarks
484         among the urlbar results.
485       type: boolean
486       setPref:
487         branch: user
488         pref: "places.frecency.pages.alternative.featureGate"
489     pagesNumSampledVisits:
490       description: >-
491         The number of recent visits to sample when calculating the ranking of
492         a page. Examining all the visits would be expensive, so we only sample
493         recent visits.
494       type: int
495       setPref:
496         branch: user
497         pref: "places.frecency.pages.alternative.numSampledVisits"
498     pagesHalfLifeDays:
499       description: >-
500         The number of days after which the ranking halves. This implements the
501         "recency" part of the algorithm.
502       type: int
503       setPref:
504         branch: user
505         pref: "places.frecency.pages.alternative.halfLifeDays"
506     pagesHighWeight:
507       description: >-
508         The weight to use for the high importance bucket.
509       type: int
510       setPref:
511         branch: user
512         pref: "places.frecency.pages.alternative.highWeight"
513     pagesMediumWeight:
514       description: >-
515         The weight to use for the medium importance bucket.
516       type: int
517       setPref:
518         branch: user
519         pref: "places.frecency.pages.alternative.mediumWeight"
520     pagesLowWeight:
521       description: >-
522         The weight to use for the low importance bucket.
523       type: int
524       setPref:
525         branch: user
526         pref: "places.frecency.pages.alternative.lowWeight"
528 aboutwelcome:
529   description: "The about:welcome page"
530   owner: omc@mozilla.com
531   hasExposure: true
532   exposureDescription: >-
533     Exposure is sent once per browsing session when the about:welcome URL is
534     first accessed.
535   isEarlyStartup: true
536   variables:
537     enabled:
538       type: boolean
539       fallbackPref: browser.aboutwelcome.enabled
540       description: >-
541         Should users see about:welcome? If this is false, users will see a
542         regular new tab instead.
543     id:
544       type: string
545       description: >-
546         Descriptive ID for the about:welcome content
547     screens:
548       type: json
549       fallbackPref: browser.aboutwelcome.screens
550       description: Content to show in the onboarding flow
551     languageMismatchEnabled:
552       type: boolean
553       fallbackPref: intl.multilingual.aboutWelcome.languageMismatchEnabled
554       description: >-
555         Suggest to change the language on about:welcome when there is a mismatch with
556         the OS.
557     transitions:
558       type: boolean
559       description: Enable transition effect between screens
560     showModal:
561       type: boolean
562       fallbackPref: browser.aboutwelcome.showModal
563       description: >-
564         Should users see window modal onboarding
565     backdrop:
566       type: string
567       fallbackPref: browser.aboutwelcome.backdrop
568       description: >-
569         Specify the color to be used to update the background color
570     newtabUrlBarFocus:
571       type: boolean
572       fallbackPref: browser.aboutwelcome.newtabUrlBarFocus
573       description: >-
574         Should the urlbar be focused when the new tab page loads after new user onboarding
576 moreFromMozilla:
577   description: "New page on about:preferences to suggest more Mozilla products"
578   owner: omc@mozilla.com
579   hasExposure: true
580   exposureDescription: >-
581     Exposure is sent once per browsing session when the about:preferences URL is
582     first accessed.
583   variables:
584     enabled:
585       type: boolean
586       fallbackPref: browser.preferences.moreFromMozilla
587       description: Should users see the new more from Mozilla section.
588     template:
589       type: string
590       fallbackPref: browser.preferences.moreFromMozilla.template
591       description: UI template used to display Mozilla products. Possible values simple, advanced. Default is simple.
593 windowsLaunchOnLogin:
594   description: "New checkbox in about:preferences startup section to start Firefox on Windows login"
595   owner: omc@mozilla.com
596   hasExposure: true
597   exposureDescription: >-
598     Exposure is sent once per browsing session when the about:preferences URL is
599     first accessed.
600   variables:
601     enabled:
602       type: boolean
603       setPref:
604         branch: default
605         pref: browser.startup.windowsLaunchOnLogin.enabled
606       description: Should users see the Windows launch on login checkbox.
608 windowsJumpList:
609   description: "Controls for the Windows Jump List integration."
610   owner: mconley@mozilla.com
611   hasExposure: false
612   isEarlyStartup: true
613   variables:
614     legacyBackend:
615       type: boolean
616       setPref:
617         branch: user
618         pref: browser.taskbar.lists.legacyBackend
619       description: True if users should use the legacy Windows Jump List backend.
621 abouthomecache:
622   description: "The startup about:home cache."
623   owner: omc@mozilla.com
624   hasExposure: false
625   isEarlyStartup: true
626   variables:
627     enabled:
628       type: boolean
629       fallbackPref: browser.startup.homepage.abouthome_cache.enabled
630       description: Is the feature enabled?
632 newtab:
633   description: "The about:newtab page"
634   owner: omc@mozilla.com
635   hasExposure: true
636   exposureDescription: >-
637     Exposure is sent once per browsing session when the first newtab page loads
638     (either about:newtab or about:home).
639   isEarlyStartup: true
640   variables:
641     newTheme:
642       type: boolean
643       description: Enable the new theme
644     customizationMenuEnabled:
645       type: boolean
646       fallbackPref: browser.newtabpage.activity-stream.customizationMenu.enabled
647       description: Enable the customization panel inside of the newtab
648     prefsButtonIcon:
649       type: string
650       description: Icon url to use for the preferences button
651     topSitesContileEnabled:
652       type: boolean
653       fallbackPref: browser.topsites.contile.enabled
654       description: Enable the Contile integration for Sponsored Top Sites
655     topSitesUseAdditionalTilesFromContile:
656       type: boolean
657       description: Allow Contile to use additonal sponsored top sites
659 pocketNewtab:
660   description: The Pocket section in newtab
661   owner: sdowne@getpocket.com
662   hasExposure: false
663   isEarlyStartup: true
664   variables:
665     spocPositions:
666       type: string
667       fallbackPref: browser.newtabpage.activity-stream.discoverystream.spoc-positions
668       description: CSV string of spoc position indexes on newtab Pocket grid
669     spocTopsitesPositions:
670       type: string
671       fallbackPref: browser.newtabpage.activity-stream.discoverystream.spoc-topsites-positions
672       description: CSV string of spoc position indexes on newtab topsites section
673     contileTopsitesPositions:
674       type: string
675       fallbackPref: browser.newtabpage.activity-stream.discoverystream.contile-topsites-positions
676       description: CSV string of contile position indexes on newtab topsites section
677     spocAdTypes:
678       type: string
679       fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocAdTypes
680       description: CSV string of data to set the spoc content.
681     spocZoneIds:
682       type: string
683       fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocZoneIds
684       description: CSV string of data to set the spoc content.
685     spocTopsitesAdTypes:
686       type: string
687       fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesAdTypes
688       description: CSV string of data to set the spoc content.
689     spocTopsitesZoneIds:
690       type: string
691       fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesZoneIds
692       description: CSV string of data to set the spoc content.
693     spocTopsitesPlacementEnabled:
694       type: boolean
695       fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesPlacement.enabled
696       description: Tuns on and off the sponsored topsites placement.
697     spocSiteId:
698       type: string
699       fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocSiteId
700       description: String ID to set the spoc content.
701     widgetPositions:
702       type: string
703       fallbackPref: browser.newtabpage.activity-stream.discoverystream.widget-positions
704       description: CSV string of widget position indexes on newtab grid
705     hybridLayout:
706       type: boolean
707       fallbackPref: browser.newtabpage.activity-stream.discoverystream.hybridLayout.enabled
708       description: Enable compact cards on newtab grid only for specific breakpoints
709     hideCardBackground:
710       type: boolean
711       fallbackPref: browser.newtabpage.activity-stream.discoverystream.hideCardBackground.enabled
712       description: Removes Pocket card background and borders.
713     fourCardLayout:
714       type: boolean
715       fallbackPref: browser.newtabpage.activity-stream.discoverystream.fourCardLayout.enabled
716       description: Enable four Pocket cards per row.
717     newFooterSection:
718       type: boolean
719       fallbackPref: >-
720         browser.newtabpage.activity-stream.discoverystream.newFooterSection.enabled
721       description: Enable an updated Pocket section topics footer
722     saveToPocketCard:
723       type: boolean
724       fallbackPref: >-
725         browser.newtabpage.activity-stream.discoverystream.saveToPocketCard.enabled
726       description: >-
727         A save to Pocket button inside the card, shown on the card thumbnail, on
728         hover.
729     saveToPocketCardRegions:
730       type: string
731       fallbackPref: >-
732         browser.newtabpage.activity-stream.discoverystream.saveToPocketCardRegions
733       description: >-
734         CSV string of regions that support the save to Pocket button inside the card.
735     hideDescriptions:
736       type: boolean
737       fallbackPref: >-
738         browser.newtabpage.activity-stream.discoverystream.hideDescriptions.enabled
739       description: >-
740         Hide or display descriptions for Pocket stories on newtab.
741     hideDescriptionsRegions:
742       type: string
743       fallbackPref: >-
744         browser.newtabpage.activity-stream.discoverystream.hideDescriptionsRegions
745       description: >-
746         CSV string of regions that hide descriptions for Pocket stories on newtab.
747     compactGrid:
748       type: boolean
749       fallbackPref: >-
750         browser.newtabpage.activity-stream.discoverystream.compactGrid.enabled
751       description: >-
752         Reduce the number of pixels between the Pocket cards on newtab.
753     compactImages:
754       type: boolean
755       fallbackPref: >-
756         browser.newtabpage.activity-stream.discoverystream.compactImages.enabled
757       description: >-
758         Reduce the height on Pocket card images on newtab.
759     imageGradient:
760       type: boolean
761       fallbackPref: >-
762         browser.newtabpage.activity-stream.discoverystream.imageGradient.enabled
763       description: >-
764         Add a gradient to the bottom of Pocket card images on newtab to blend the
765         image in with the card.
766     titleLines:
767       type: int
768       fallbackPref: >-
769         browser.newtabpage.activity-stream.discoverystream.titleLines
770       description: >-
771         Changes the maximum number of lines a title can be for Pocket cards on newtab.
772     descLines:
773       type: int
774       fallbackPref: >-
775         browser.newtabpage.activity-stream.discoverystream.descLines
776       description: >-
777         Changes the maximum number of lines a description can be for Pocket cards on newtab.
778     onboardingExperience:
779       type: boolean
780       fallbackPref: >-
781         browser.newtabpage.activity-stream.discoverystream.onboardingExperience.enabled
782       description: >-
783         Enables an onboarding experience for Pocket section on newtab.
784     essentialReadsHeader:
785       type: boolean
786       fallbackPref: >-
787         browser.newtabpage.activity-stream.discoverystream.essentialReadsHeader.enabled
788       description: >-
789         Updates the Pocket section header and title to say "Today’s Essential Reads",
790         moves the "Recommended by Pocket" header to the right side.
791     editorsPicksHeader:
792       type: boolean
793       fallbackPref: >-
794         browser.newtabpage.activity-stream.discoverystream.editorsPicksHeader.enabled
795       description: >-
796         Updates the Pocket section header and title to say "Editor’s Picks", if used with
797         essentialReadsHeader, creates a second section 2 rows down for editorsPicksHeader.
798     recentSavesEnabled:
799       type: boolean
800       fallbackPref: >-
801         browser.newtabpage.activity-stream.discoverystream.recentSaves.enabled
802       description: >-
803         Updates the Pocket section with a new header and 1 row of recently saved Pocket stories.
804     readTime:
805       type: boolean
806       fallbackPref: >-
807         browser.newtabpage.activity-stream.discoverystream.readTime.enabled
808       description: >-
809         Displays an estimated read time for Pocket cards on newtab.
810     newSponsoredLabel:
811       type: boolean
812       fallbackPref: >-
813         browser.newtabpage.activity-stream.discoverystream.newSponsoredLabel.enabled
814       description: >-
815         Updates the sponsored label position to below the image for Pocket cards on newtab.
816     sendToPocket:
817       type: boolean
818       fallbackPref: >-
819         browser.newtabpage.activity-stream.discoverystream.sendToPocket.enabled
820       description: >-
821         Decides what to do when a logged out user click "Save to Pocket" from a Pocket card.
822     recsPersonalized:
823       type: boolean
824       fallbackPref: >-
825         browser.newtabpage.activity-stream.discoverystream.recs.personalized
826       description: >-
827         Enables Pocket stories personalization.
828     spocsPersonalized:
829       type: boolean
830       fallbackPref: >-
831         browser.newtabpage.activity-stream.discoverystream.spocs.personalized
832       description: >-
833         Enables Pocket sponsored content personalization.
834     spocsCacheTimeout:
835       type: int
836       fallbackPref: >-
837         browser.newtabpage.activity-stream.discoverystream.spocs.cacheTimeout
838       description: >-
839         Set sponsored content cache timeout in minutes.
840     discoveryStreamConfig:
841       description: A JSON blob of discovery stream configuration.
842       type: string
843       setPref:
844         branch: user
845         pref: "browser.newtabpage.activity-stream.discoverystream.config"
846     spocsEndpoint:
847       description: The URL for the spocs endpoint.
848       type: string
849       setPref:
850         branch: user
851         pref: "browser.newtabpage.activity-stream.discoverystream.spocs-endpoint"
852     spocsEndpointAllowlist:
853       description: Comma separated list of allowed endpoints for fetching spocs
854       type: string
855       setPref:
856         branch: user
857         pref: "browser.newtabpage.activity-stream.discoverystream.endpoints"
858     spocsClearEndpoint:
859       description: URL for deleting any server data when a user opts out of sponsored content
860       type: string
861       setPref:
862         branch: user
863         pref: "browser.newtabpage.activity-stream.discoverystream.endpointSpocsClear"
864     ctaButtonSponsors:
865       description: A CSV list of sponsors that should use a button CTA.
866       type: string
867       fallbackPref: >-
868         browser.newtabpage.activity-stream.discoverystream.ctaButtonSponsors
869     ctaButtonVariant:
870       description: Specifies which veriant to use for any sponsors in ctaButtonSponsors
871       type: string
872       fallbackPref: >-
873         browser.newtabpage.activity-stream.discoverystream.ctaButtonVariant
874     regionStoriesConfig:
875       description: A comma-separated list of region to get stories for.
876       type: string
877       fallbackPref: >-
878         browser.newtabpage.activity-stream.discoverystream.region-stories-config
879     regionBffConfig:
880       type: string
881       fallbackPref: >-
882         browser.newtabpage.activity-stream.discoverystream.region-bff-config
883       description: A comma-separated list of regions to get stories from the recommendations BFF. Also requires region-stories-config.
884     regionStoriesBlock:
885       description: A comma-separated list of regions that do not get stories, regardless of locale-list-config.
886       type: string
887       fallbackPref: >-
888         browser.newtabpage.activity-stream.discoverystream.region-stories-block
889     localeListConfig:
890       description: A comma-separated list of locales that get stories, regardless of region-stories-config.
891       type: string
892       fallbackPref: >-
893         browser.newtabpage.activity-stream.discoverystream.locale-list-config
894     regionSpocsConfig:
895       description: A comma-separated list of regions that get spocs by default.
896       type: string
897       fallbackPref: >-
898         browser.newtabpage.activity-stream.discoverystream.region-spocs-config
899     topSitesMaxSponsored:
900       # Defined under `pocketNewtab` as it needs to be used along with other variables
901       type: int
902       description: The maximum number of sponsored Top Sites to be displayed
903     topSitesContileMaxSponsored:
904       # Defined under `pocketNewtab` as it needs to be used along with other variables
905       type: int
906       description: The maximum number of sponsored Top Sites used from Contile
907     topSitesContileSovEnabled:
908       # Defined under `pocketNewtab` as it needs to be used along with other variables
909       description: Enable the Share-of-Voice feature for Sponsored Topsites.
910       type: boolean
911       fallbackPref: >-
912         browser.topsites.contile.sov.enabled
914 saveToPocket:
915   description: The save to Pocket feature
916   owner: sdowne@getpocket.com
917   hasExposure: false
918   isEarlyStartup: true
919   variables:
920     emailButton:
921       type: boolean
922       fallbackPref: extensions.pocket.refresh.emailButton.enabled
923       description: Just for the new Pocket panels, enables the email signup button.
924     hideRecentSaves:
925       type: boolean
926       fallbackPref: extensions.pocket.refresh.hideRecentSaves.enabled
927       description: Hides the recently saved section in the home panel.
928     bffRecentSaves:
929       type: boolean
930       fallbackPref: "extensions.pocket.bffRecentSaves"
931       description: Use the new BFF Proxy Service instead of the legacy Pocket Service for Recent Saves
932     bffApi:
933       type: string
934       fallbackPref: "extensions.pocket.bffApi"
935       description: BFF Proxy Service domain
936     oAuthConsumerKeyBff:
937       type: string
938       fallbackPref: "extensions.pocket.oAuthConsumerKeyBff"
939       description: BFF Proxy Service OAuth Consumer Key
941 password-autocomplete:
942   description: A special autocomplete UI for password fields.
943   owner: sgalich@mozilla.com
944   hasExposure: false
945   variables:
946     directMigrateSingleProfile:
947       type: boolean
948       description: Enable direct migration?
950 cm-csv-import:
951   description: Importing logins from CSV files
952   owner: issozi@mozilla.com
953   hasExposure: false
954   variables:
955     csvImport:
956       type: boolean
957       description: Can show CSV Import in about:logins or Migration Wizard
958       setPref:
959         branch: default
960         pref: "signon.management.page.fileImport.enabled"
962 # This feature flag mirrors the one used for ios
963 # https://github.com/mozilla-mobile/firefox-ios/blob/main/nimbus-features/addressAutofillFeature.yaml
964 address-autofill-feature:
965   description: Enabling address autofill feature
966   owner: issozi@mozilla.com
967   hasExposure: false
968   variables:
969     status:
970       type: boolean
971       setPref:
972         branch: default
973         pref: extensions.formautofill.addresses.experiments.enabled
974       description: If true, we will allow user to use address autofill
976 shellService:
977   description: "Interface with OS, e.g., pinning and set default"
978   owner: desktop-integrations@mozilla.com
979   hasExposure: false
980   isEarlyStartup: true
981   variables:
982     disablePin:
983       type: boolean
984       description: Disable pin to taskbar feature
985     setDefaultBrowserUserChoice:
986       type: boolean
987       fallbackPref: browser.shell.setDefaultBrowserUserChoice
988       description: Should it set as default browser
989     setDefaultPDFHandler:
990       type: boolean
991       fallbackPref: browser.shell.setDefaultPDFHandler
992       description: Should setting it as the default browser set it as the default PDF handler.
993     setDefaultPDFHandlerOnlyReplaceBrowsers:
994       type: boolean
995       fallbackPref: browser.shell.setDefaultPDFHandler.onlyReplaceBrowsers
996       description: >-
997         Should setting it as the default PDF handler only replace existing PDF
998         handlers that are browsers, and not other PDF handlers such as Acrobat
999         Reader or Nitro PDF.
1001 upgradeDialog:
1002   description: The dialog shown for major upgrades
1003   owner: omc@mozilla.com
1004   hasExposure: false
1005   isEarlyStartup: true
1006   variables:
1007     enabled:
1008       type: boolean
1009       fallbackPref: browser.startup.upgradeDialog.enabled
1010       description: Is the feature enabled?
1012 cfr:
1013   description: "A Firefox Messaging System message for the cfr message channel"
1014   owner: omc@mozilla.com
1015   hasExposure: true
1016   exposureDescription: "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched."
1017   schema:
1018     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1019     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1020   variables: {}
1022 "moments-page":
1023   description: "A Firefox Messaging System message for the moments-page message channel"
1024   owner: omc@mozilla.com
1025   hasExposure: true
1026   exposureDescription: >-
1027     "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched."
1028   schema:
1029     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1030     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1031   variables: {}
1033 infobar:
1034   description: "A Firefox Messaging system message for the infobar message channel"
1035   owner: omc@mozilla.com
1036   hasExposure: true
1037   exposureDescription: >-
1038     "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched."
1039   schema:
1040     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1041     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1042   variables: {}
1044 spotlight:
1045   description: "A Firefox Messaging System message for the spotlight message channel"
1046   owner: omc@mozilla.com
1047   hasExposure: true
1048   exposureDescription: >-
1049     "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched."
1050   schema:
1051     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1052     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1053   variables: {}
1055 # Before 117, this feature only included one variable, pdfJsTourProgress. So,
1056 # the minimum version for messaging experiments using this feature ID is 117.
1057 featureCallout:
1058   description: "A Firefox Messaging System message for the Feature Callout message channel"
1059   owner: omc@mozilla.com
1060   hasExposure: true
1061   exposureDescription: >-
1062     "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched."
1063   schema:
1064     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1065     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1066   variables: {}
1068 fullPageTranslation:
1069   description: This feature opens a popup panel to offer to translate a page.
1070   owner: gtatum@mozilla.com
1071   hasExposure: false
1072   isEarlyStartup: true
1073   variables:
1074     boolean:
1075       description: Set to true to enable the translations feature
1076       type: boolean
1077       setPref:
1078         branch: user
1079         pref: browser.translations.enable
1081 fullPageTranslationAutomaticPopup:
1082   description: Controls whether the popup automatically shows for translations.
1083   owner: gtatum@mozilla.com
1084   hasExposure: false
1085   isEarlyStartup: true
1086   variables:
1087     boolean:
1088       description: Set to true to automatically popup, and false to only show the button.
1089       type: boolean
1090       setPref:
1091         branch: user
1092         pref: browser.translations.automaticallyPopup
1094 pdfjs:
1095   description: The Firefox pdf reader.
1096   owner: pdfjs-team@mozilla.com
1097   hasExposure: true
1098   exposureDescription: >-
1099     Exposure is sent each time a pdf is displayed.
1100   variables:
1101     addHighlight:
1102       description: Set to true to highlight some text or something else in an existing pdf.
1103       type: boolean
1104       setPref:
1105         branch: default
1106         pref: pdfjs.enableHighlightEditor
1108 addAnImageInPDF:
1109   description: Add an image in an existing pdf.
1110   owner: cdenizet@mozilla.com
1111   hasExposure: false
1112   variables:
1113     boolean:
1114       description: Set to true to enable the add-an-image feature
1115       type: boolean
1116       setPref:
1117         branch: default
1118         pref: pdfjs.enableStampEditor
1120 # fxms-message-* placeholder feature ids
1122 # https://docs.google.com/spreadsheets/d/119YbeKStLL0Fg2QkK-yN93mrtD1rlneGZGTl_jAwtyw/edit#gid=1903378504
1123 # has info on using these placeholder feature ids, as well as (very short) instructions on
1124 # checking to see if we need more (which we do once per Nightly) and how to add them.
1126 # Instructions for adding a new fxms-message-* placeholder feature id
1127 # 1) clone an existing one here
1128 # 2) update the YAML feature id to the next unused number
1129 # 3) update the YAML description
1130 # 4) add the new feature id to MESSAGING_EXPERIMENTS_DEFAULT_FEATURES list in MessagingExperimentConstants.sys.mjs
1131 # 5) add the new feature id and the version it landed to the spreadsheet tab linked to above
1133 fxms-message-1:
1134   description: "A Firefox Messaging System message"
1135   owner: omc@mozilla.com
1136   hasExposure: true
1137   exposureDescription: >-
1138     "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched."
1139   schema:
1140     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1141     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1142   variables: {}
1144 fxms-message-2:
1145   description: "Firefox Messaging System message 2"
1146   owner: omc@mozilla.com
1147   hasExposure: true
1148   exposureDescription: >-
1149     "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched."
1150   schema:
1151     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1152     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1153   variables: {}
1155 fxms-message-3:
1156   description: "Firefox Messaging System message 3"
1157   owner: omc@mozilla.com
1158   hasExposure: true
1159   exposureDescription: >-
1160     "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched."
1161   schema:
1162     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1163     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1164   variables: {}
1166 fxms-message-4:
1167   description: "Firefox Messaging System message 4"
1168   owner: omc@mozilla.com
1169   hasExposure: true
1170   exposureDescription: >-
1171     "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched."
1172   schema:
1173     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1174     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1175   variables: {}
1177 fxms-message-5:
1178   description: "Firefox Messaging System message 5"
1179   owner: omc@mozilla.com
1180   hasExposure: true
1181   exposureDescription: >-
1182     "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched."
1183   schema:
1184     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1185     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1186   variables: {}
1188 fxms-message-6:
1189   description: "Firefox Messaging System message 6"
1190   owner: omc@mozilla.com
1191   hasExposure: true
1192   exposureDescription: >-
1193     "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched."
1194   schema:
1195     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1196     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1197   variables: {}
1199 fxms-message-7:
1200   description: "Firefox Messaging System message 7"
1201   owner: omc@mozilla.com
1202   hasExposure: true
1203   exposureDescription: >-
1204     "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched."
1205   schema:
1206     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1207     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1208   variables: {}
1210 fxms-message-8:
1211   description: "Firefox Messaging System message 8"
1212   owner: omc@mozilla.com
1213   hasExposure: true
1214   exposureDescription: >-
1215     "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched."
1216   schema:
1217     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1218     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1219   variables: {}
1221 fxms-message-9:
1222   description: "Firefox Messaging System message 9"
1223   owner: omc@mozilla.com
1224   hasExposure: true
1225   exposureDescription: >-
1226     "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched."
1227   schema:
1228     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1229     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1230   variables: {}
1232 fxms-message-10:
1233   description: "Firefox Messaging System message 10"
1234   owner: omc@mozilla.com
1235   hasExposure: true
1236   exposureDescription: >-
1237     "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched."
1238   schema:
1239     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1240     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1241   variables: {}
1243 fxms-message-11:
1244   description: "Firefox Messaging System message 11"
1245   owner: omc@mozilla.com
1246   hasExposure: true
1247   exposureDescription: >-
1248     "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched."
1249   schema:
1250     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1251     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1252   variables: {}
1254 pbNewtab:
1255   description: "A Firefox Messaging System message for the pbNewtab message channel"
1256   owner: omc@mozilla.com
1257   hasExposure: true
1258   exposureDescription: >-
1259     Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched.
1260   schema:
1261     uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json"
1262     path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json"
1263   variables: {}
1265 backgroundTaskMessage:
1266   description: "A Firefox Messaging System message for the background task message channel"
1267   owner: nalexander@mozilla.com
1268   applications:
1269     - firefox-desktop-background-task
1270   hasExposure: true
1271   exposureDescription: >-
1272     Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched.
1273   schema:
1274     uri: "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json"
1275     path: "browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json"
1276   variables: {}
1278 backgroundUpdateAutomaticRestart:
1279   description: "Whether to automatically restart when the background update task could make more progress."
1280   owner: nalexander@mozilla.com
1281   applications:
1282     - firefox-desktop-background-task
1283   hasExposure: false
1284   variables:
1285     enabled:
1286       type: boolean
1287       fallbackPref: app.update.background.automaticRestartEnabled
1288       description: >-
1289         When true, make the background update task restart when the final update state is `READY_FOR_RESTART`.
1290         Generally, this will finish applying a staged update, completing the update earlier than it
1291         otherwise would have been completed.
1293 pictureinpicture:
1294   description: Message for first time Picture-in-Picture users
1295   owner: nbaumgardner@mozilla.com
1296   hasExposure: true
1297   exposureDescription: Exposure is sent when a user hovers over a video and Picture-in-Picture has not been used before
1298   variables:
1299     title:
1300       type: string
1301       description: The title to be used for the PiP toggle
1302     message:
1303       type: string
1304       description: The message to be used in the PiP toggle
1305     showIconOnly:
1306       type: boolean
1307       description: Whether to show the first time PiP toggle or show the PiP icon only
1308     oldToggle:
1309       type: boolean
1310       description: Whether to show the control style (true) or variant style (false) for the first time PiP toggle
1311     displayDuration:
1312       type: int
1313       description: Duration of PiP first time toggle display in days before switching to PiP icon toggle
1315 glean:
1316   description: "The Glean data-control-plane feature within Firefox Desktop for controlling metric configuration"
1317   owner: glean-team@mozilla.com
1318   hasExposure: false
1319   variables:
1320     newtabPingEnabled:
1321       type: "boolean"
1322       fallbackPref: "browser.newtabpage.ping.enabled"
1323       description: "Whether to submit the 'newtab' ping"
1324     gleanMetricConfiguration:
1325       type: json
1326       description: |
1327         A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric.
1328         This variable is intended for interacting with the Glean data-control-plane via the Server Knobs functionality
1329         to remotely configure metrics to be enabled or disabled.
1331 gleanInternalSdk:
1332   description: "The Glean internal SDK feature intended only for internal Glean Team use"
1333   hasExposure: false
1334   # Some variables are used through the C++ API and thus require pref-storage.
1335   # We rely on those values at Glean.init time, which happens at startup.
1336   isEarlyStartup: true
1337   variables:
1338     finalInactive:
1339       type: "boolean"
1340       description: "Enables FOG early shutdown pings when true"
1341     gleanMetricConfiguration:
1342       type: json
1343       description: |
1344         A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric.
1345         This is not for public use! For data-control-plane use, please refer to the Glean documentation and use the
1346         `gleanMetricConfiguration` found in the `glean` feature for this.
1347     gleanMaxPingsPerMinute:
1348       type: int
1349       description: >-
1350         Maximum number of pings that can be sent in a 60 second interval
1351     enableEventTimestamps:
1352       type: "boolean"
1353       description: "Enables precise event timestamps for Glean events"
1355 majorRelease2022:
1356   description: Major Release 2022
1357   owner: firefoxview@mozilla.com
1358   hasExposure: false
1359   isEarlyStartup: true
1360   variables:
1361     feltPrivacyPBMDarkTheme:
1362       type: boolean
1363       fallbackPref: "browser.theme.dark-private-windows"
1364       description: "Use dark theme variant for PBM windows. This is only supported if the theme sets darkTheme data."
1365     feltPrivacyShowPreferencesSection:
1366       type: boolean
1367       fallbackPref: "browser.privacySegmentation.preferences.show"
1368       description: "Controls visibility of the privacy segmentation preferences section."
1369     feltPrivacyWindowSeparation:
1370       type: boolean
1371       fallbackPref: "browser.privateWindowSeparation.enabled"
1372       description: "Whether or not private browsing windows use a separate icon in the Windows taskbar"
1373     colorwayCloset:
1374       type: boolean
1375       fallbackPref: "browser.theme.colorway-closet"
1376       description: "Whether or not to show the colorway closet modal"
1377     onboarding:
1378       type: boolean
1379       fallbackPref: "browser.majorrelease.onboarding"
1380       description: "Whether or not to use the MR2022 onboarding settings."
1382 browserLowMemoryPrefs:
1383   description: Prefs which control the browser's behaviour under low memory.
1384   owner: haftandilian@mozilla.com
1385   hasExposure: false
1386   variables:
1387     lowMemoryResponseMask:
1388       description: Control the response on macOS when under memory pressure.
1389       type: int
1390       setPref:
1391         branch: default
1392         pref: "browser.lowMemoryResponseMask"
1393     lowMemoryResponseOnWarn:
1394       description: Controls which macOS memory-pressure levels trigger the browser low memory response.
1395       type: boolean
1396       setPref:
1397         branch: default
1398         pref: "browser.lowMemoryResponseOnWarn"
1399     tabsUnloadOnLowMemory:
1400       description: Whether to unload tabs when available memory is running low.
1401       type: boolean
1402       setPref:
1403         branch: default
1404         pref: "browser.tabs.unloadOnLowMemory"
1406 scriptLoaderPrefs:
1407   description: Prefs that control the script loader.
1408   owner: npierron@mozilla.com
1409   hasExposure: false
1410   variables:
1411     delazificationStrategy:
1412       description: >-
1413         Selects which parsing/delazification strategy should be used while
1414         parsing scripts off-main-thread. See DelazificationOption in
1415         CompileOptions.h for values.
1416       type: int
1417       setPref:
1418         branch: default
1419         pref: "dom.script_loader.delazification.strategy"
1421 echPrefs:
1422   description: Prefs that control Encrypted Client Hello.
1423   owner: djackson@mozilla.com
1424   hasExposure: false
1425   variables:
1426     tlsEnabled:
1427       description: Whether to enable ECH for connections using TLS
1428       type: boolean
1429       setPref:
1430         branch: default
1431         pref: "network.dns.echconfig.enabled"
1432     h3Enabled:
1433       description: Whether to enable ECH for connections using H3/QUIC
1434       type: boolean
1435       setPref:
1436         branch: default
1437         pref: "network.dns.http3_echconfig.enabled"
1438     forceWaitHttpsRR:
1439       description: Whether to force waiting for HTTPS DNS records, which ECH requires.
1440       type: boolean
1441       setPref:
1442         branch: default
1443         pref: "network.dns.force_waiting_https_rr"
1444     insecureFallback:
1445       description: Whether to fallback to non-ECH connections if all ECH RRs fail.
1446       type: boolean
1447       setPref:
1448         branch: default
1449         pref: "network.dns.echconfig.fallback_to_origin_when_all_failed"
1450     tlsGreaseProb:
1451       description: Probability of GREASEing a TLS connection with ECH (0-100).
1452       type: int
1453       setPref:
1454         branch: default
1455         pref: "security.tls.ech.grease_probability"
1456     h3GreaseEnabled:
1457       description: Whether to apply GREASE settings to H3/QUIC connections.
1458       type: boolean
1459       setPref:
1460         branch: default
1461         pref: "security.tls.ech.grease_http3"
1462     disableGreaseOnFallback:
1463       description: Whether to disable GREASE when retrying a connection.
1464       type: boolean
1465       setPref:
1466         branch: default
1467         pref: "security.tls.ech.disable_grease_on_fallback"
1468     greasePaddingSize:
1469       description: Assumed echConfig padding length for GREASE extensions (1-255).
1470       type: int
1471       setPref:
1472         branch: default
1473         pref: "security.tls.ech.grease_size"
1475 dohPrefs:
1476   description: Prefs that control DNS over HTTPS.
1477   owner: vgosu@mozilla.com
1478   hasExposure: false
1479   variables:
1480     trrMode:
1481       description: Has a value of 2 for TRR first, 3 for TRR only, 0 for off.
1482       type: int
1483       setPref:
1484         branch: default
1485         pref: "network.trr.mode"
1486     trrUri:
1487       description: The URL of the DNS over HTTPS endpoint
1488       type: string
1489       setPref:
1490         branch: default
1491         pref: "network.trr.uri"
1492     dohMode:
1493       description: Same as trrMode, but set by the DoHController module.
1494       type: int
1495       setPref:
1496         branch: default
1497         pref: "doh-rollout.mode"
1498     dohUri:
1499       description: Same as trrUri, but set by the DoHController module.
1500       type: string
1501       setPref:
1502         branch: default
1503         pref: "doh-rollout.uri"
1504     enableFallbackWarningPage:
1505       description: Whether DoH fallback warning page will be displayed when DoH doesn't work in TRR first mode.
1506       type: boolean
1507       setPref:
1508         branch: default
1509         pref: "network.trr.display_fallback_warning"
1510     showFallbackCheckbox:
1511       description: Whether the checkbox to enable the fallback warning page is displayed in the settings UI.
1512       type: boolean
1513       setPref:
1514         branch: default
1515         pref: "network.trr_ui.show_fallback_warning_option"
1517 dooh:
1518   description: "DNS over Oblivious HTTP"
1519   owner: vgosu@mozilla.com
1520   hasExposure: false
1521   variables:
1522     ohttpEnabled:
1523       description: Whether to use Oblivious HTTP for the resolution
1524       type: boolean
1525       setPref:
1526         branch: default
1527         pref: "network.trr.use_ohttp"
1528     ohttpRelayUri:
1529       description: The URL of the Oblivious HTTP relay
1530       type: string
1531       setPref:
1532         branch: default
1533         pref: "network.trr.ohttp.relay_uri"
1534     ohttpConfigUri:
1535       description: The URL used to fetch the configuration of the Oblivious HTTP gateway
1536       type: string
1537       setPref:
1538         branch: default
1539         pref: "network.trr.ohttp.config_uri"
1540     ohttpUri:
1541       description: The URL of the Oblivious DNS over HTTPS target resource
1542       type: string
1543       setPref:
1544         branch: default
1545         pref: "network.trr.ohttp.uri"
1547 networking:
1548   description: "Firefox Networking (Necko)"
1549   owner: vgosu@mozilla.com
1550   hasExposure: false
1551   variables:
1552     ehPreloadEnabled:
1553       description: Whether Early Hints preload is enabled
1554       type: boolean
1555       setPref:
1556         branch: default
1557         pref: "network.early-hints.enabled"
1558     ehPreconnectEnabled:
1559       description: Whether Early Hints preconnect is enabled
1560       type: boolean
1561       setPref:
1562         branch: default
1563         pref: "network.early-hints.preconnect.enabled"
1564     dnsMaxPriorityThreads:
1565       description: The maximum number of high priority DNS threads that can be created.
1566       type: int
1567       setPref:
1568         branch: default
1569         pref: "network.dns.max_high_priority_threads"
1570     dnsMaxAnyPriorityThreads:
1571       description: The maximum number of DNS threads that can be created to handle any priority DNS requests.
1572       type: int
1573       setPref:
1574         branch: default
1575         pref: "network.dns.max_any_priority_threads"
1576     preconnect:
1577       description: Whether the rel=preconnect feature is enabled
1578       type: boolean
1579       setPref:
1580         branch: default
1581         pref: "network.preconnect"
1582     networkPredictor:
1583       description: Whether the Necko predictor is enabled
1584       type: boolean
1585       setPref:
1586         branch: default
1587         pref: "network.predictor.enabled"
1588     http3CCalgorithm:
1589       description: The congestion control algorithm with which to configure neqo. 0 for NewReno, 1 for Cubic
1590       type: int
1591       setPref:
1592         branch: default
1593         pref: "network.http.http3.cc_algorithm"
1594     sendOnDataFinished:
1595       description: Whether we can send OnDataFinished in the content process
1596       type: boolean
1597       setPref:
1598         branch: default
1599         pref: "network.send_OnDataFinished"
1600     sendOnDataFinshedFromInputStreamPump:
1601       description: Whether we can send OnDataFinished to the content process from InputStreamPump
1602       type: boolean
1603       setPref:
1604         branch: default
1605         pref: "network.send_OnDataFinished.nsInputStreamPump"
1606     sendOnDataFinishedToHtml5parser:
1607       description: Whether we can send OnDataFinished to the html5parser in content process
1608       type: boolean
1609       setPref:
1610         branch: default
1611         pref: "network.send_OnDataFinished.html5parser"
1612     sendOnDataFinishedToCssLoader:
1613       description: Whether we can send OnDataFinished to the cssLoader in content process
1614       type: boolean
1615       setPref:
1616         branch: default
1617         pref: "network.send_OnDataFinished.cssLoader"
1619 pingsender:
1620   description: "In-product usage of the pingsender telemetry reporter."
1621   owner: nalexander@mozilla.com
1622   hasExposure: false
1623   variables:
1624     backgroundTaskEnabled:
1625       type: "boolean"
1626       fallbackPref: "toolkit.telemetry.shutdownPingSender.backgroundtask.enabled"
1627       description: "Whether to use the `pingsender` background task to send shutdown telemetry"
1629 dapTelemetry:
1630   description: DAP Telemetry
1631   owner: simon@mozilla.com
1632   hasExposure: false
1633   isEarlyStartup: true # Data is sent on startup with a trigger in BrowserGlue.sys.mjs
1634   variables:
1635     enabled:
1636       type: boolean
1637       fallbackPref: toolkit.telemetry.dap_enabled
1638       description: Whether to automatically send DAP measurements.
1639     task1Enabled:
1640       type: boolean
1641       fallbackPref: toolkit.telemetry.dap_task1_enabled
1642       description: Whether to send fake measurements for task 1.
1643     task1TaskId:
1644       type: string
1645       fallbackPref: toolkit.telemetry.dap_task1_taskid
1646       description: The task ID to use for task 1 measurements.
1647     visitCountingEnabled:
1648       type: boolean
1649       fallbackPref: toolkit.telemetry.dap_visit_counting_enabled
1650       description: Whether to count visits to the provided list of URLs.
1651     visitCountingExperimentList:
1652       fallbackPref: toolkit.telemetry.dap_visit_counting_experiment_list
1653       type: json
1654       description: A list of experiments with URLs for which we want to count visits.
1656 etpLevel2PBMPref:
1657   description: The pref that controls the ETP level 2 list in the private browsing mode
1658   owner: tihuang@mozilla.com
1659   hasExposure: false
1660   variables:
1661     enabled:
1662       description: Whether to enable ETP level 2 list in the private browsing mode.
1663       type: boolean
1664       setPref:
1665         branch: default
1666         pref: "privacy.annotate_channels.strict_list.pbmode.enabled"
1668 fxaButtonVisibility:
1669   description: Prefs to control the visibility of the Firefox Accounts toolbar button when not signed in.
1670   owner: mconley@mozilla.com
1671   hasExposure: false
1672   isEarlyStartup: true
1673   variables:
1674     boolean:
1675       description: True if the Firefox Accounts toolbar button should be visible when not signed in.
1676       type: boolean
1677       setPref:
1678         branch: user
1679         pref: identity.fxaccounts.toolbar.defaultVisible
1680     pxiToolbarEnabled:
1681       description: >-
1682         True if we're enabling the PXI dropdown menu for the FxA toolbar button instead of
1683         taking the user straight to login
1684       type: boolean
1685       setPref:
1686         branch: user
1687         pref: identity.fxaccounts.toolbar.pxiToolbarEnabled
1688     monitorEnabled:
1689       description: >-
1690         Toggle the Monitor CTA
1691       type: boolean
1692       setPref:
1693         branch: user
1694         pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.monitorEnabled
1695     relayEnabled:
1696       description: >-
1697         Toggle the Relay CTA
1698       type: boolean
1699       setPref:
1700         branch: user
1701         pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.relayEnabled
1702     vpnEnabled:
1703       description: >-
1704         Toggle the VPN CTA
1705       type: boolean
1706       setPref:
1707         branch: user
1708         pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.vpnEnabled
1710 legacyHeartbeat:
1711   description: Normandy Heartbeat exposed to Nimbus
1712   owner: barret@mozilla.com
1713   hasExposure: false
1714   schema:
1715     uri: "resource://normandy/schemas/LegacyHeartbeat.schema.json"
1716     path: "toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json"
1717   variables:
1718     survey:
1719       type: json
1720       description: The Heartbeat survey parameters.
1722 queryStripping:
1723   description: Query parameter stripping anti-tracking feature.
1724   owner: pbz@mozilla.com
1725   hasExposure: false
1726   variables:
1727     enabledNormalBrowsing:
1728       type: boolean
1729       setPref:
1730         branch: default
1731         pref: privacy.query_stripping.enabled
1732       description: Enables / disables URL query string stripping in normal browsing mode.
1733     enabledPrivateBrowsing:
1734       type: boolean
1735       setPref:
1736         branch: default
1737         pref: privacy.query_stripping.enabled.pbmode
1738       description: Enables / disables URL query string stripping in private browsing mode.
1739     allowList:
1740       type: string
1741       setPref:
1742         branch: default
1743         pref: privacy.query_stripping.allow_list
1744       description: >-
1745         List of sites exempt from query stripping. This list will be merged with
1746         records coming from RemoteSettings.
1747     stripList:
1748       type: string
1749       setPref:
1750         branch: default
1751         pref: privacy.query_stripping.strip_list
1752       description: >-
1753         List of query params to be stripped from URIs. This list will be merged
1754         with records coming from RemoteSettings.
1756 fontvisibility:
1757   description: Control Font Visibility in PBM
1758   owner: tom@mozilla.com
1759   hasExposure: false
1760   variables:
1761     enabledETP:
1762       type: int
1763       setPref:
1764         branch: default
1765         pref: layout.css.font-visibility.trackingprotection
1766       description: Set the Font Visibility level when Enhanced Tracking Protection is enabled
1767     enabledStandard:
1768       type: int
1769       setPref:
1770         branch: default
1771         pref: layout.css.font-visibility.standard
1772       description: Set the Font Visibility level for normal browsing
1773     enabledPBM:
1774       type: int
1775       setPref:
1776         branch: default
1777         pref: layout.css.font-visibility.private
1778       description: Set the Font Visibility level for private browsing (will override ETP)
1780 fingerprintingProtection:
1781   description: Control Fingerprinting Protection
1782   owner: tihuang@mozilla.com
1783   hasExposure: false
1784   variables:
1785     enabledNormal:
1786       type: boolean
1787       setPref:
1788         branch: default
1789         pref: privacy.fingerprintingProtection
1790       description: Enables / disables fingerprinting protection in normal browsing mode.
1791     enabledPrivate:
1792       type: boolean
1793       setPref:
1794         branch: default
1795         pref: privacy.fingerprintingProtection.pbmode
1796       description: Enables / disables fingerprinting protection in private browsing mode.
1797     overrides:
1798       type: string
1799       setPref:
1800         branch: default
1801         pref: privacy.fingerprintingProtection.overrides
1802       description: >-
1803         The protection overrides to add or remove fingerprinting protection
1804         targets. Please check RFPTargets.inc for all supported targets.
1806 migrationWizard:
1807   description: Prefs to control the Migration Wizard UI.
1808   owner: mconley@mozilla.com
1809   hasExposure: false
1810   isEarlyStartup: true
1811   variables:
1812     showImportAll:
1813       description: True if the "Variant 2" of the Migration Wizard browser / profile selection UI should be used. This is only meaningful in the new Migration Wizard.
1814       type: boolean
1815       setPref:
1816         branch: user
1817         pref: browser.migrate.content-modal.import-all.enabled
1818     showPreferencesEntrypoint:
1819       description: True if an entrypoint to the migration wizard should be visible in about:preferences.
1820       type: boolean
1821       setPref:
1822         branch: user
1823         pref: browser.migrate.preferences-entrypoint.enabled
1824     aboutWelcomeBehavior:
1825       description: >-
1826         When migration is kicked off from about:welcome, there are
1827         a few different behaviors that we want to test, controlled
1828         by a preference that is instrumented for Nimbus. The pref
1829         has the following possible states:
1831         "autoclose":
1832           The user will be directed to the migration wizard in
1833           about:preferences, but once the wizard is dismissed,
1834           the tab will close.
1836         "embedded":
1837           The migration wizard is embedded in about:welcome.
1839         "standalone":
1840           The migration wizard will open in a new top-level content
1841           window.
1843         "default" / other
1844           The user will be directed to the migration wizard in
1845           about:preferences. The tab will not close once the
1846           user closes the wizard.
1847       type: string
1848       setPref:
1849         branch: user
1850         pref: browser.migrate.content-modal.about-welcome-behavior
1851     migrateExtensions:
1852       description: True if importing extensions is enabled.
1853       type: boolean
1854       setPref:
1855         branch: user
1856         pref: browser.migrate.chrome.extensions.enabled
1857     chromeCanRequestPermissions:
1858       description: >-
1859         True if Chrome-based browsers can request read permissions on
1860         platforms where the browser is restricted from reading the contents
1861         of a Chrome-based browser's user data directory. In practice, this
1862         is only relevant to the Linux platform when the browser is installed
1863         as a Snap package.
1864       type: boolean
1865       setPref:
1866         branch: user
1867         pref: browser.migrate.chrome.get_permissions.enabled
1869 mixedContentUpgrading:
1870   description: Prefs to control whether we upgrade mixed passive content (images, audio, video) from http to https
1871   owner: fbraun@mozilla.com
1872   hasExposure: false
1873   variables:
1874     enabled:
1875       description: True if the mixed content upgrading pref is enabled
1876       type: boolean
1877       setPref:
1878         branch: default
1879         pref: security.mixed_content.upgrade_display_content
1880     image:
1881       description: True if the mixed content upgrading is enabled for images
1882       type: boolean
1883       setPref:
1884         branch: default
1885         pref: security.mixed_content.upgrade_display_content.image
1886     audio:
1887       description: True if the mixed content upgrading is enabled for audio
1888       type: boolean
1889       setPref:
1890         branch: default
1891         pref: security.mixed_content.upgrade_display_content.audio
1892     video:
1893       description: True if the mixed content upgrading is enabled for videos
1894       type: boolean
1895       setPref:
1896         branch: default
1897         pref: security.mixed_content.upgrade_display_content.video
1899 jsParallelParsing:
1900   description: Pref to toggle JS parallel parsing.
1901   owner: dpalmeiro@mozilla.com, nbp@mozilla.com
1902   isEarlyStartup: true
1903   hasExposure: false
1904   variables:
1905     enabled:
1906       description: True to enable parallel parsing.
1907       type: boolean
1908       setPref:
1909         branch: user
1910         pref: "javascript.options.parallel_parsing"
1912 gcParallelMarking:
1913   description: Pref to toggle parallel marking in the GC.
1914   owner: dpalmeiro@mozilla.com, jonco@mozilla.com
1915   isEarlyStartup: true
1916   hasExposure: false
1917   variables:
1918     enabled:
1919       description: True to enable parallel marking.
1920       type: boolean
1921       setPref:
1922         branch: user
1923         pref: "javascript.options.mem.gc_parallel_marking"
1925 jitThresholds:
1926   description: Prefs that control jit tier thresholds.
1927   owner: dpalmeiro@mozilla.com, jdemooij@mozilla.com
1928   isEarlyStartup: true
1929   hasExposure: false
1930   variables:
1931     blinterp_threshold:
1932       description: Set the threshold to enable blinterp compilation.
1933       type: int
1934       setPref:
1935         branch: user
1936         pref: "javascript.options.blinterp.threshold"
1937     baseline_threshold:
1938       description: Set the threshold to enable baseline compilation.
1939       type: int
1940       setPref:
1941         branch: user
1942         pref: "javascript.options.baselinejit.threshold"
1943     ion_threshold:
1944       description: Set the threshold to enable ion compilation.
1945       type: int
1946       setPref:
1947         branch: user
1948         pref: "javascript.options.ion.threshold"
1949     ion_bailout_threshold:
1950       description: Set the ion frequent bailout threshold.
1951       type: int
1952       setPref:
1953         branch: user
1954         pref: "javascript.options.ion.frequent_bailout_threshold"
1955     ion_offthread_compilation:
1956       description: True to enable offthread ion compilations.
1957       type: boolean
1958       setPref:
1959         branch: user
1960         pref: "javascript.options.ion.offthread_compilation"
1961     inlining_max_length:
1962       description: Set the max bytecode length considered for inlining.
1963       type: int
1964       setPref:
1965         branch: user
1966         pref: "javascript.options.inlining_bytecode_max_length"
1968 jitHintsCache:
1969   description: Pref to toggle the JIT hints cache.
1970   owner: dpalmeiro@mozilla.com
1971   isEarlyStartup: true
1972   hasExposure: false
1973   variables:
1974     enabled:
1975       description: True to enable the hints cache.
1976       type: boolean
1977       setPref:
1978         branch: user
1979         pref: "javascript.options.jithints"
1981 raceCacheWithNetwork:
1982   description: Prefs to toggle the race cache with network.
1983   owner: dpalmeiro@mozilla.com, acreskey@mozilla.com
1984   hasExposure: false
1985   variables:
1986     enabled:
1987       description: True to enable the rcwn feature.
1988       type: boolean
1989       setPref:
1990         branch: default
1991         pref: "network.http.rcwn.enabled"
1993 httpSpeculativeParallelLimit:
1994   description: Prefs to control the http speculative parallel limit.
1995   owner: dpalmeiro@mozilla.com, acreskey@mozilla.com
1996   hasExposure: false
1997   variables:
1998     speculative_parallel_limit:
1999       description: Maximum number of parallel speculative connections.
2000       type: int
2001       setPref:
2002         branch: default
2003         pref: "network.http.speculative-parallel-limit"
2005 deviceMigration:
2006   description: Prefs to control aspects of the new device migration experiment
2007   owner: hjones@mozilla.com
2008   hasExposure: false
2009   isEarlyStartup: true
2010   variables:
2011     helpMenuHidden:
2012       description: True if new help menu item should be hidden
2013       type: boolean
2014       fallbackPref: browser.device-migration.help-menu.hidden
2016 shopping2023:
2017   description: Prefs to control the 2023 shopping experiment.
2018   owner: jhirsch@mozilla.com
2019   hasExposure: true
2020   exposureDescription: >-
2021     The timing of the exposure event depends on the experiment, but generally
2022     the event is recorded when the user first encounters onboarding UI for
2023     the shopping feature.
2024   variables:
2025     enabled:
2026       description: True if the experience is enabled (experimental treatment group)
2027       type: boolean
2028       fallbackPref: browser.shopping.experience2023.enabled
2029     control:
2030       description: True if the experiment is enabled but experience is disabled (experimental control group)
2031       type: boolean
2032       fallbackPref: browser.shopping.experience2023.control
2033     adsEnabled:
2034       description: True if showing recommended products is enabled
2035       type: boolean
2036       setPref:
2037         branch: default
2038         pref: browser.shopping.experience2023.ads.enabled
2039     adsExposure:
2040       description: True if we want to record ad inventory for opted-in users, even if ads are disabled
2041       type: boolean
2042       setPref:
2043         branch: default
2044         pref: browser.shopping.experience2023.ads.exposure
2045     surveyEnabled:
2046       description: True if showing survey is enabled
2047       type: boolean
2048       fallbackPref: browser.shopping.experience2023.survey.enabled
2049     autoOpenEnabled:
2050       description: True if auto-open behavior for the sidebar is enabled
2051       type: boolean
2052       setPref:
2053         branch: default
2054         pref: browser.shopping.experience2023.autoOpen.enabled
2056 shoppingOHTTP:
2057   description: Prefs to control the OHTTP URLs used for shopping.
2058   owner: gijs@mozilla.com
2059   hasExposure: false
2060   variables:
2061     ohttpRelayURL:
2062       description: What OHTTP relay URL to use
2063       type: string
2064       setPref:
2065         branch: default
2066         pref: toolkit.shopping.ohttpRelayURL
2067     ohttpConfigURL:
2068       description: URL for the OHTTP config to use
2069       type: string
2070       setPref:
2071         branch: default
2072         pref: toolkit.shopping.ohttpConfigURL
2074 opaqueResponseBlocking:
2075   description: Prefs to enable Opaque Response Blocking
2076   owner: farre@mozilla.com
2077   isEarlyStartup: true
2078   hasExposure: true
2079   exposureDescription: Exposure is sent when a response is blocked
2080   variables:
2081     enabled:
2082       description: Whether ORB is enabled
2083       type: boolean
2084       setPref:
2085         branch: user
2086         pref: "browser.opaqueResponseBlocking"
2087     javascriptValidator:
2088       description: Whether JavaScript validation for ORB is enabled
2089       type: boolean
2090       setPref:
2091         branch: user
2092         pref: "browser.opaqueResponseBlocking.javascriptValidator"
2093     filterFetchResponse:
2094       description: Whether filtering of internal responses in the parent ORB is enabled
2095       type: int
2096       setPref:
2097         branch: user
2098         pref: "browser.opaqueResponseBlocking.filterFetchResponse"
2099     mediaExceptionsStrategy:
2100       description: >-
2101         If we partially or wholly allow audio and video MIME types in conflict with spec.
2102       type: int
2103       setPref:
2104         branch: user
2105         pref: "browser.opaqueResponseBlocking.mediaExceptionsStrategy"
2107 updatePrompt:
2108   description: Prefs to control content and behavior of update notifications
2109   owner: omc@mozilla.com
2110   hasExposure: true
2111   exposureDescription: >-
2112     Exposure is sent at most once per browsing session when an update
2113     notification prompt is displayed.
2114   isEarlyStartup: true
2115   variables:
2116     showReleaseNotesLink:
2117       type: boolean
2118       description: >-
2119         If true, the "Learn More" link will be shown in the update prompt. If
2120         false or omitted, the link will only be shown for supported locales.
2121     releaseNotesURL:
2122       type: string
2123       fallbackPref: app.releaseNotesURL.prompt
2124       description: >-
2125         Template for the URL opened when the user clicks the "Learn More" link
2126         in the update prompt. If an empty string, the link will not be shown.
2128 powerSaver:
2129   description: Prefs to control power saving behaviors
2130   owner: florian@mozilla.com
2131   hasExposure: false
2132   isEarlyStartup: true
2133   variables:
2134     reduceFrameRates:
2135       type: int
2136       setPref:
2137         branch: user
2138         pref: "gfx.display.max-frame-rate"
2139       description: >-
2140         Limit the number of frames displayed per second.
2141         If omitted, the refresh rate of the screen will be used.
2142     mediaAutoPlay:
2143       type: int
2144       setPref:
2145         branch: user
2146         pref: "media.autoplay.default"
2147       description: >-
2148         Control if media is allowed to auto-play, with and without sound.
2149     backgroundTimerMinTime:
2150       type: int
2151       setPref:
2152         branch: user
2153         pref: "dom.min_background_timeout_value"
2154       description: >-
2155         Limit how frequently timers are allowed to run in background tabs.
2156     backgroundTimerRegenerationRate:
2157       type: int
2158       setPref:
2159         branch: user
2160         pref: "dom.timeout.background_budget_regeneration_rate"
2161       description: >-
2162         Limit how quickly the background tab timer budget regenerates.
2164 backgroundUpdate:
2165   description: Prefs to control aspects of the background update process.
2166   owner: install-update@mozilla.com
2167   hasExposure: true
2168   exposureDescription: >-
2169     The exposure event is sent when scheduling the background task and both the
2170     feature is enabled and the service registry key (Mozilla Maintenance
2171     Service) is *not* available for this installation. That is the first time
2172     the feature can impact Firefox behaviour and the user experience.
2173   isEarlyStartup: true
2174   variables:
2175     enableUpdatesForUnelevatedInstallations:
2176       description: >-
2177         Allow the background update process to download and apply updates when
2178         the Mozilla Maintenance Service is unavailable but the installation
2179         directory can be written.
2180       type: boolean
2181       setPref:
2182         branch: default
2183         pref: app.update.background.allowUpdatesForUnelevatedInstallations
2185 defaultAgent:
2186   description: >-
2187     Features that configure the Windows Default Browser Agent.
2188   owner: install-update@mozilla.com
2189   applications:
2190     - firefox-desktop-background-task
2191   hasExposure: false
2192   variables:
2193     cppFallback:
2194       description: >-
2195         Triggers the Default Agent to fall back to the C++ implementation of DoTask if true.
2196       type: boolean
2197       fallbackPref: "defaultAgent.cppFallback.enabled"
2199 bookmarks:
2200   description: Prefs to control aspects of the bookmarks system.
2201   owner: omc@mozilla.com
2202   hasExposure: false
2203   isEarlyStartup: true
2204   variables:
2205     enableBookmarksToolbar:
2206       type: string
2207       setPref:
2208         branch: user
2209         pref: browser.toolbars.bookmarks.visibility
2210       description: If the bookmarks toolbar should never, always, or only show on newtab.
2212 cookieBannerHandling:
2213   description: Automatically handle cookie banners on the user's behalf.
2214   owner: pbz@mozilla.com
2215   hasExposure: false
2216   variables:
2217     modeNormalBrowsing:
2218       type: int
2219       setPref:
2220         branch: default
2221         pref: cookiebanners.service.mode
2222       description: >-
2223         Controls the cookie banner handling mode in normal browsing.
2224         Values: 0 - disabled, 1 - reject all, 2 - reject all with accept all fallback.
2225     modePrivateBrowsing:
2226       type: int
2227       setPref:
2228         branch: default
2229         pref: cookiebanners.service.mode.privateBrowsing
2230       description: >-
2231         Controls the cookie banner handling mode in private browsing.
2232         Values: 0 - disabled, 1 - reject all, 2 - reject all with accept all fallback.
2233     enableGlobalRules:
2234       type: boolean
2235       setPref:
2236         branch: default
2237         pref: cookiebanners.service.enableGlobalRules
2238       description: >-
2239         Enables use of global CookieBannerRules, which apply to all sites.
2240         This enables handling of CMPs across sites without the use of site-specific rules.
2241     enableGlobalRulesSubFrames:
2242       type: boolean
2243       setPref:
2244         branch: default
2245         pref: cookiebanners.service.enableGlobalRules.subFrames
2246       description: >-
2247         Whether global rules are allowed to run in sub-frames. Running query
2248         selectors in every sub-frame may negatively impact performance, but is
2249         required for some CMPs.
2250     enableDetectOnly:
2251       type: boolean
2252       setPref:
2253         branch: default
2254         pref: cookiebanners.service.detectOnly
2255       description: >-
2256         When set to true, cookie banners are detected and detection events are
2257         dispatched, but they will not be handled.
2258         This pref applies to both normal and private browsing windows.
2259     enableFirefoxDesktopUI:
2260       type: boolean
2261       setPref:
2262         branch: default
2263         pref: cookiebanners.ui.desktop.enabled
2264       description: Enables the cookie banner desktop UI.
2265     enablePromo:
2266       type: boolean
2267       setPref:
2268         branch: default
2269         pref: browser.promo.cookiebanners.enabled
2270       description: Enables the cookie banner promo in about:privatebrowsing.
2271     enableDesktopFeatureCallout:
2272       type: boolean
2273       setPref:
2274         branch: default
2275         pref: cookiebanners.ui.desktop.showCallout
2276       description: Enables the cookie banner feature callout on desktop.
2278 backgroundThreads:
2279   description: Prefs to control MacOS thread priorities for power savings.
2280   owner: kwright@mozilla.com
2281   hasExposure: false
2282   isEarlyStartup: true
2283   variables:
2284     use_low_power:
2285       description: >-
2286         Use the MacOS QoS libraries to deprioritize select threads.
2287       type: boolean
2288       setPref:
2289         branch: user
2290         pref: threads.use_low_power.enabled
2291     lower_mainthread_priority_in_background:
2292       description: >-
2293         When a browsing context is put in the background and isn't actively playing
2294         media, deprioritize its main thread.
2295       type: boolean
2296       setPref:
2297         branch: user
2298         pref: threads.lower_mainthread_priority_in_background.enabled
2300 reportBrokenSite:
2301   description: the Report Broken Site feature
2302   hasExposure: false
2303   isEarlyStartup: true
2304   variables:
2305     enabled:
2306       type: boolean
2307       setPref:
2308         branch: user
2309         pref: ui.new-webcompat-reporter.enabled
2310       description: >-
2311         Whether Report Broken Site is enabled
2312     sendMoreInfo:
2313       type: boolean
2314       setPref:
2315         branch: user
2316         pref: ui.new-webcompat-reporter.send-more-info-link
2317       description: >-
2318         Whether Report Broken Site shows the send more info link directing
2319         users to webcompat.com (defaults to true for prerelease channels)
2320     reasonDropdown:
2321       type: int
2322       setPref:
2323         branch: user
2324         pref: ui.new-webcompat-reporter.reason-dropdown
2325       description: >-
2326         0 = do not show the "reason" dropdown
2327         1 = show an optional "reason" dropdown
2328         2 = show a required "reason" dropdown
2330 feltPrivacy:
2331   description: Prefs for Felt Privacy v1 experiments
2332   owner: cmeador@mozilla.com
2333   hasExposure: true
2334   exposureDescription: Exposure when user opens a private browsing window.
2335   variables:
2336     feltPrivacy:
2337       type: boolean
2338       setPref:
2339         branch: default
2340         pref: browser.privatebrowsing.felt-privacy-v1
2341       description: >-
2342         When true, new styles and copy enabled on about:privatebrowsing. When true,
2343         a toggle for showing or hiding quick suggestions appears in about:preferences.
2344     resetPBMAction:
2345       type: boolean
2346       setPref:
2347         branch: default
2348         pref: browser.privatebrowsing.resetPBM.enabled
2349       description: >-
2350         Enables the reset PBM feature button and confirmation panel.
2352 phc:
2353   description: Prefs to control the Probabalistic Heap Checker (PHC)
2354   owner: pbone@mozilla.com
2355   hasExposure: false
2356   isEarlyStartup: true
2357   variables:
2358     phcEnabled:
2359       description: Whether to enable PHC
2360       type: boolean
2361       setPref:
2362         branch: user
2363         pref: memory.phc.enabled
2364     phcMinRamMB:
2365       description: The minimum amount of RAM required to enable PHC
2366       type: int
2367       setPref:
2368         branch: user
2369         pref: memory.phc.min_ram_mb
2370     phcAvgDelayFirst:
2371       description: The delay before the first PHC allocation
2372       type: int
2373       setPref:
2374         branch: user
2375         pref: memory.phc.avg_delay.first
2376     phcAvgDelayNormal:
2377       description: The delay between PHC allocations
2378       type: int
2379       setPref:
2380         branch: user
2381         pref: memory.phc.avg_delay.normal
2382     phcAvgDelayPageReuse:
2383       description: The delay before reusing a PHC page
2384       type: int
2385       setPref:
2386         branch: user
2387         pref: memory.phc.avg_delay.page_reuse
2389 mailto:
2390   description: Prefs to control aspects of the mailto handler
2391   owner: install-update@mozilla.com
2392   hasExposure: true
2393   exposureDescription: >-
2394     The exposure event is sent when a webmail site calls the
2395     registerProtocolHandler function and when users use mailto links in Firefox.
2396   variables:
2397     dualPrompt:
2398       type: boolean
2399       description: >-
2400         Can be used to toggle the entire feature on and off.
2401       fallbackPref: browser.mailto.dualPrompt
2402     dualPrompt.os:
2403       type: boolean
2404       description: >-
2405         Make webmail sites display prompts to set Firefox as default OS mailto
2406         application and another prompt to set the current site as default
2407         webmail site in Firefox.
2408       fallbackPref: browser.mailto.dualPrompt.os
2410 nimbusIsReady:
2411   description: A feature that provides the number of Nimbus is_ready events to send
2412       when Nimbus is ready.
2413   owner: chumphreys@mozilla.com
2414   hasExposure: false
2415   applications:
2416     - firefox-desktop
2417   variables:
2418     eventCount:
2419       description: The number of events that should be sent.
2420       type: int
2422 nimbusTelemetry:
2423   description: A feature that enables or disables Nimbus telemetry.
2424   owner: chumphreys@mozilla.com
2425   hasExposure: false
2426   applications:
2427     - firefox-desktop
2428   variables:
2429     gleanMetricConfiguration:
2430       description: A Glean metric configuration JSON blob.
2431       type: json