Extension:GrowthExperiments/Technical documentation


GrowthExperiments extension can be configured at different levels:


General overview: Growth/Personalized first day/Newcomer homepage

Special:Homepage is a special page that is the entry point for Growth features. Here are the available modules ("modules" is used more generically here as separate units of functionality, not to be confused with ResourceLoader modules).

Module Name Description Unactivated State Activated State
Banner Display on-wiki message ? ?
Start Email ? ? ?
Suggested edits Suggest editing tasks to users When the user hasn't clicked on the module, the Start Editing module is shown (desktop only) Task feed shown; filters can be updated
Start Editing Show filters for suggested edits inside the module itself (instead of in an overlay) N/A
Impact Show the page views and number of edits the user has done When the user hasn't made any edits, the heart graphic is shown with CTA to open suggested edits Editing statistics shown
Mentorship Allow the user to ask questions to their mentor and show past questions N/A
Mentorship Opt-in Allow the user to opt in to being mentored N/A
Help Show links to help articles N/A

Relevant files

ResourceLoader modules

  • ext.growthExperiments.Homepage.mobile
    • On mobile, some homepage module has two modes: mobile details and mobile summary. The summary mode is shown on Special:Homepage and the details mode is shown in an overlay (when JS is used, otherwise it is shown as a separate page; see task T264992 for more details). This module sets up the overlays.
  • ext.growthExperiments.Homepage
    • JS files for modules that are always enabled (modules that are conditionally enabled are in separate ResourceLoader modules so that they can be conditionally included as well)
  • ext.growthExperiments.Homepage.Mentorship
  • ext.growthExperiments.Homepage.SuggestedEdits
  • ext.growthExperiments.Homepage.styles
    • CSS for server-side rendered modules (CSS for JS-only components are bundled with the respective ResourceLoader modules)


  • includes/Specials/SpecialHomepage.php
  • includes/HomepageHooks.php
  • includes/HomepageModules/
    • Construct HTML for each module
  • includes/Homepage/HomepageModuleRegistry.php
    • Handle dependency injection for each module

Suggested EditsEdit

General overview: Growth/Personalized first day/Newcomer tasks

"Suggested edits" is a module within Special:Homepage that provides users with editing tasks based on certain topics and difficulty levels. There are currently two types of tasks: unstructured and structured. Unstructured tasks are based on maintenance template(s) within an article (for example: " Tone " template for copyedit task). Structured tasks are based on machine suggestions (for example: images to be added to an article).

Relevant files

ResourceLoader modules

  • ext.growthExperiments.Homepage.SuggestedEdits
    • Enhance server-side rendered suggested edits module with the ability to select topics and task types via filters
  • ext.growthExperiments.SuggestedEditSession
    • Executed with each page load; used to keep track of whether the user is in the middle of a task or has just completed the task
  • ext.growthExperiments.PostEdit
    • Loaded via SuggestedEditSession; used to show a dialog after the user has completed a task
  • ext.growthExperiments.Homepage.mobile
    • Set up suggested edits mobile summary module
  • ext.growthExperiments.DataStore
    • Manage states for the task queue and the filters
    • Emit events when the state changes so that the UI can be updated (modeled after Vuex store)


  • includes/NewcomerTasks/
    • Generate the set of tasks for the user; handle task completion
  • includes/HomepageModules/
    • Server-side rendering of the suggested edits module
  • includes/HomepageHooks.php
    • Handle user preferences & opting users into Growth features
    • Output configuration variables needed by JavaScript code
    • Update navigation generated by skins to point to Special:Homepage
    • Generate virtual files needed by ResourceLoader modules


  • Topic selection: The user can filter tasks by topics in which they are interested.
    • Topic selection is enabled via the configuration GEHomepageSuggestedEditsEnableTopics.
    • The topic of the article can be determined in two ways: "morelike" (based on search) and "ores". This can be configured via GENewcomerTasksTopicType.
      • "morelike" can be configured via GENewcomerTasksTopicConfigTitle and "ores" via GENewcomerTasksOresTopicConfigTitle.
    • When there are multiple topics selected, the results are matched to any of the selected topics (OR). To match all of the selected topics (AND), this feature can be enabled via GETopicsMatchModeEnabled.
  • Task type selection: The user can filter tasks by difficulty level (easy/medium/hard).
    • The difficulty level for each task type is specified in the MediaWiki page with title set via GENewcomerTasksConfigTitle.

Structured TasksEdit

Help PanelEdit

General overview: Help:Growth/Tools/Help panel

The help panel provides help content when the user is doing an edit. It can be enabled via growthexperiments-help-panel-tog-help-panel preference. It's only available when JavaScript is enabled.

Entry PointsEdit

  1. During suggested edit task — here the help panel is shown regardless of whether the editor is open or not
    • In this case, the help panel is enabled regardless of growthexperiments-help-panel-tog-help-panel preference since it is part of the suggested edits workflow.
  2. When editing an article (non-suggested edits) — here the help panel is only shown when the editor is open


Ask Help

The user can ask questions while editing. Depending on the configuration GEHelpPanelAskMentor, the question can be posed to the user's mentor or the help desk.

General Editing Help

The user can view links to help pages or how-to guides. The links shown are configured via GEHelpPanelLinks.

Task-specific Guidance

This feature is only available when the user is doing a suggested edit task (entry point #2). The guidance content is specific to the task type, the skin and the editor. Each wiki can technically override the guidance content by updating the message on-wiki. For example, to override the main message about copyedit task on Vector with VisualEditor, the message growthexperiments-help-panel-suggestededits-tips-vector-visualeditor-copyedit-main-value can be overridden on-wiki.

Link to Disable

If growthexperiments-help-panel-tog-help-panel is enabled, a link to Special:Preferences is shown.

Relevant filesEdit

ResourceLoader modules

  • ext.growthExperiments.HelpPanel.init
    • Conditionally load ext.growthExperiments.HelpPanel module (used mainly for entry point #2)
  • ext.growthExperiments.HelpPanel
    • Set up the button for opening the help panel HelpPanelCta and event handlers for showing/hiding the button
    • Set up blue dot guidance
    • Conditionally load structured task modules (SuggestedEditsGuidance.js)
  • ext.growthExperiments.Help
    • Set up the contents of the help panel
    • Also used in ext.growthExperiments.Homepage.Mentorship since the ask help functionality is the same as in the mentorship module


  • includes/Rest/Handler/TipsHandler.php
    • Endpoint for retrieving task-specific guidance content
  • includes/HelpPanel/Tips/
    • Classes for generating task-specific guidance content
  • includes/HelpPanel/


The GrowthExperiments extension has a set of features to support Campaigns in the Wikimedia community.


Customized Special:CreateAccount pageEdit

The GrowthExperiments extension allows the creation of customized Special:CreateAccount pages.

Parameter Required? Documentation
campaign true The campaign pattern that will show the Special:CreateAccount campaign page. Example:
geEnabled false Whereas GrowthExperiments features should be enabled by default. Example:
geForceVariant true Whereas the created account should force the user into an application variant. Example:

See Extension:GrowthExperiments/Technical_documentation#Structured_Tasks


List of configuration optionsEdit

Each configuration option is shown without the $wg prefix for brevity; add it when using, ie: $wgGECampaignPattern.

Option Default value Documentation
Mapping of campaign ID to "topics", an array of topic IDs, and "pattern", a regexp for the campaign name, used to show campaign-specific topics in the suggested edits module. The topic IDs must have a corresponding search expression defined in GECampaignTopics. Examples can be found at Extension:GrowthExperiments/Technical_documentation/Special:EditGrowthConfig.
'thankyoupage-2022' => [
		'pattern' => '/^typage-(latam|in|za)-en-2022$/',
        'qualityGateIdsToSkip' => [ 
          'image-recommendation' => [ 'dailyLimit' ]
		'skipWelcomeSurvey' => true,
		'signupPageTemplate' => 'hero',
		'signupPageTemplateParameters' => [
			'showBenefitsList' => 'desktop',
			'messageKey' => 'thankyoupage',
        'topics' => [ 'argentina', 'mexico', 'chile']
  • pattern: {String} Regexp for campaign names which result in a special landing page for the given campaign
  • qualityGateIdsToSkip: {Array} Array of Structured Tasks IDs to determine whether the users registered within the campaign should have a limited number of add an image/add a link tasks per day
  • skipWelcomeSurvey: {Boolean} Boolean to determine whether the users registered within the campaign should get the welcome survey
  • signupPageTemplate: {String} One of ("hero", "video"). Determines which template to use for the Special:CreateAccount page. See designs: TBD.
  • signupPageTemplateParameters: {Array} Array of parameters for the signup template.
    • showBenefitList: {Boolean|String} One of (true, false, "desktop"). Determines whether to show the benefit list for the Special:CreateAccount page. If "desktop" is set, the list will only appear on desktop skin.
    • messageKey: {String} The text key infix to use for generating the campaign landing page texts. Example: TBD.
  • topics: An array of topic IDs (strings)
Mapping of topic IDs to its search expression, used to show campaign-specific topics in the suggested edits module. Examples can be found at Extension:GrowthExperiments/Technical_documentation/Special:EditGrowthConfig.
	'argentina' => 'growtharticletopic:argentina',
	'chile' => 'growtharticletopic:chile',
	'mexico' => 'growtharticletopic:mexico'