Page MenuHomePhabricator

Review the performance of the new ULS
Open, In Progress, MediumPublic8 Estimated Story Points

Description

Analyze and improve where needed. E.g.

  • Time to open from first click
  • Resource loader module size (esp. for anything loaded for all page views)
  • Slow/render blocking JavaScript

Consult with experts where possible.

Details

Related Changes in Gerrit:
SubjectRepoBranchLines +/-
mediawiki/extensions/Translatemaster+13 -7
mediawiki/extensions/UniversalLanguageSelectormaster+5 -4
mediawiki/coremaster+0 -77
mediawiki/coremaster+5 -83
mediawiki/coremaster+9 -3
mediawiki/coremaster+0 -77
mediawiki/extensions/Translatemaster+8 -4
mediawiki/extensions/UniversalLanguageSelectormaster+8 -5
mediawiki/coremaster+538 -596
mediawiki/coremaster+44 -0
mediawiki/coremaster+356 -154
mediawiki/extensions/UniversalLanguageSelectormaster+12 -2
mediawiki/coremaster+57 -15
mediawiki/extensions/UniversalLanguageSelectormaster+15 -6
mediawiki/extensions/UniversalLanguageSelectormaster+110 -3
mediawiki/extensions/UniversalLanguageSelectormaster+1 -1
mediawiki/extensions/UniversalLanguageSelectormaster+81 -122
mediawiki/extensions/UniversalLanguageSelectormaster+38 -9
mediawiki/extensions/UniversalLanguageSelectormaster+1 -1
mediawiki/extensions/UniversalLanguageSelectormaster+20 -9
mediawiki/extensions/UniversalLanguageSelectormaster+79 -85
mediawiki/extensions/UniversalLanguageSelectormaster+28 -7
mediawiki/extensions/UniversalLanguageSelectormaster+7 -10
mediawiki/extensions/UniversalLanguageSelectormaster+0 -1
mediawiki/extensions/UniversalLanguageSelectormaster+96 -121
mediawiki/extensions/UniversalLanguageSelectormaster+23 -18
mediawiki/coremaster+17 -25
mediawiki/coremaster+0 -10
mediawiki/coremaster+70 -66
mediawiki/extensions/Translatemaster+2 -2
mediawiki/coremaster+205 -170
mediawiki/extensions/UniversalLanguageSelectormaster+2 -2
Show related patches Customize query in gerrit

Event Timeline

Nikerabbit set the point value for this task to 8.

Change #1277053 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/core@master] LangaugeSelector: Breakup code into smaller modules

https://gerrit.wikimedia.org/r/1277053

Change #1277054 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/core@master] LanguageSelector: Add mediawiki.languageselector.data

https://gerrit.wikimedia.org/r/1277054

Change #1277152 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS Rewrite: Remove dependency on mediawiki.languageselector

https://gerrit.wikimedia.org/r/1277152

abi_ changed the task status from Open to In Progress.Apr 27 2026, 7:58 AM
abi_ claimed this task.
abi_ moved this task from Ready for dev to In Progress on the LPL Essential (FY2025-26 Q3&4) board.

Change #1277053 merged by jenkins-bot:

[mediawiki/core@master] LanguageSelector: Breakup code into smaller modules

https://gerrit.wikimedia.org/r/1277053

Change #1277152 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS Rewrite: Remove dependency on mediawiki.languageselector

https://gerrit.wikimedia.org/r/1277152

Change #1277570 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite:EntrypointRegistry: Reduce overhead & improve minification

https://gerrit.wikimedia.org/r/1277570

Change #1277579 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Output only rtl languages to reduce module size

https://gerrit.wikimedia.org/r/1277579

Change #1277617 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Remove unused string

https://gerrit.wikimedia.org/r/1277617

Change #1279270 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/core@master] LanguageSelector: Minor code improvements

https://gerrit.wikimedia.org/r/1279270

Change #1279354 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/core@master] LookupLanguageSelector: Code improvements

https://gerrit.wikimedia.org/r/1279354

Change #1279376 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/Translate@master] AggregateGroupDialog: Use mediawiki.languageselector.lookup

https://gerrit.wikimedia.org/r/1279376

Change #1279381 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/core@master] Remove mediawiki.languageselector resource module

https://gerrit.wikimedia.org/r/1279381

Change #1279376 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] AggregateGroupDialog: Use mediawiki.languageselector.lookup

https://gerrit.wikimedia.org/r/1279376

Change #1277054 merged by jenkins-bot:

[mediawiki/core@master] LanguageSelector: Remove the supportedLanguages.json module

https://gerrit.wikimedia.org/r/1277054

Change #1279449 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/core@master] LanguageSelector: Add useLanguageLookup composable

https://gerrit.wikimedia.org/r/1279449

Change #1279381 merged by jenkins-bot:

[mediawiki/core@master] Remove mediawiki.languageselector resource module

https://gerrit.wikimedia.org/r/1279381

Change #1279270 merged by jenkins-bot:

[mediawiki/core@master] LanguageSelector: Minor code improvements

https://gerrit.wikimedia.org/r/1279270

Change #1280052 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/core@master] LanguageSelector: Consolidate and simplify modules

https://gerrit.wikimedia.org/r/1280052

Change #1277570 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite:EntrypointRegistry: Reduce overhead & improve minification

https://gerrit.wikimedia.org/r/1277570

Change #1277579 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Output only rtl languages to reduce module size

https://gerrit.wikimedia.org/r/1277579

Change #1277617 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Remove unused string

https://gerrit.wikimedia.org/r/1277617

To improve performance, we've made the following changes:

I'm also working on a patch to merge the code in the lookup language selectors which should remove duplication.

I'll continue working on this ticket later.

GGalofre-WMF lowered the priority of this task from High to Medium.Thu, May 21, 8:30 AM

Change #1293761 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Avoid rebuilding language annotations on every keystroke

https://gerrit.wikimedia.org/r/1293761

Change #1293762 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Pass isAvailable as a boolean to LanguageItem

https://gerrit.wikimedia.org/r/1293762

Change #1293766 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Generate sections from a declarative array

https://gerrit.wikimedia.org/r/1293766

Change #1295420 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Use matchMedia for mobile breakpoint detection

https://gerrit.wikimedia.org/r/1295420

Change #1295869 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] Prefetch ULS rewrite modules on hover and pointer-down

https://gerrit.wikimedia.org/r/1295869

Change #1295870 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] Inline LanguageItem into LanguageList

https://gerrit.wikimedia.org/r/1295870

Change #1295871 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] Progressively render the language list

https://gerrit.wikimedia.org/r/1295871

Change #1293761 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Avoid rebuilding language annotations on every keystroke

https://gerrit.wikimedia.org/r/1293761

Change #1293762 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Pass isUnavailable as a boolean to LanguageItem

https://gerrit.wikimedia.org/r/1293762

Change #1293766 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Generate sections from a declarative array

https://gerrit.wikimedia.org/r/1293766

Change #1295420 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Use matchMedia for mobile breakpoint detection

https://gerrit.wikimedia.org/r/1295420

Following up from this comment: https://phabricator.wikimedia.org/T424005#11915541; here are additional improvements made:

  • Progressively render the language list to improve time to first paint. The selector now paints a screenful immediately and fills the rest during idle time, reducing initial block time.
  • Inline LanguageItem into LanguageList to significantly reduce initialization overhead. This avoids the synchronous creation of ~780 Vue component instances when the interface language selector opens.
  • Prefetch modules on hover and pointer-down to eliminate network latency. By speculative loading the rewrite modules on pointerenter, the code is typically ready by the time the user actually clicks.

Change #1295869 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Prefetch modules on hover and pointer-down

https://gerrit.wikimedia.org/r/1295869

Change #1295870 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Inline LanguageItem into LanguageList

https://gerrit.wikimedia.org/r/1295870

Change #1297071 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Improve list performance

https://gerrit.wikimedia.org/r/1297071

Change #1297076 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/core@master] LanguageSelector: Don't re-search the active single selection

https://gerrit.wikimedia.org/r/1297076

Change #1297077 had a related patch set uploaded (by Huei Tan; author: Huei Tan):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Optimize language list hover rendering

https://gerrit.wikimedia.org/r/1297077

Change #1297084 had a related patch set uploaded (by Huei Tan; author: Huei Tan):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Optimize baseAnnotations computed loop during search

https://gerrit.wikimedia.org/r/1297084

Change #1297071 abandoned by Abijeet Patro:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Improve list performance

Reason:

in favor of I800d6be48b5e9cf8ed484493ac036bc518444305

https://gerrit.wikimedia.org/r/1297071

Change #1297077 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Optimize language list hover rendering

https://gerrit.wikimedia.org/r/1297077

Change #1295871 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Progressively render the language list

https://gerrit.wikimedia.org/r/1295871

Change #1297105 had a related patch set uploaded (by Huei Tan; author: Huei Tan):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Avoid useClickOutside on mobile

https://gerrit.wikimedia.org/r/1297105

Change #1297627 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Prefetch settings modules when dialog is opened

https://gerrit.wikimedia.org/r/1297627

Change #1297084 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Optimize baseAnnotations computed loop

https://gerrit.wikimedia.org/r/1297084

Change #1297076 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/core@master] LanguageSelector: Don't re-search the active single selection

https://gerrit.wikimedia.org/r/1297076

Change #1279354 merged by jenkins-bot:

[mediawiki/core@master] LookupLanguageSelector: Code & usability improvements

https://gerrit.wikimedia.org/r/1279354

Change #1297627 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Prefetch settings modules when dialog is opened

https://gerrit.wikimedia.org/r/1297627

Change #1279449 merged by jenkins-bot:

[mediawiki/core@master] LanguageSelector: Add useLanguageLookup composable

https://gerrit.wikimedia.org/r/1279449

Change #1280052 merged by jenkins-bot:

[mediawiki/core@master] LanguageSelector: Consolidate and simplify modules

https://gerrit.wikimedia.org/r/1280052

Change #1297076 merged by jenkins-bot:

[mediawiki/core@master] LanguageSelector: Don't re-search the active single selection

https://gerrit.wikimedia.org/r/1297076

Change #1297105 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Avoid useClickOutside on mobile

https://gerrit.wikimedia.org/r/1297105

Change #1298955 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] PreferredLanguagesTab: Use LanguageSelector component directly

https://gerrit.wikimedia.org/r/1298955

Change #1298953 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/core@master] mediawiki.languageselector.lookup: Expose LanguageSelector component

https://gerrit.wikimedia.org/r/1298953

Change #1298954 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/core@master] mediawiki.languageselector.lookup: Remove MultiselectLookupLanguageSelector

https://gerrit.wikimedia.org/r/1298954

Change #1298958 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/Translate@master] AggregateGroupDialog: Use LanguageSelector instead of LookupLanguageSelector

https://gerrit.wikimedia.org/r/1298958

Change #1298954 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/core@master] mediawiki.languageselector: Remove MultiselectLookupLanguageSelector

https://gerrit.wikimedia.org/r/1298954

Change #1298957 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/core@master] mediawiki.languageselector: Remove LookupLanguageSelector component

https://gerrit.wikimedia.org/r/1298957

Change #1298959 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/core@master] mediawiki.languageselector: Remove LookupLanguageSelector component

https://gerrit.wikimedia.org/r/1298959

Change #1298961 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/Translate@master] AggregateGroupDialog: Use LanguageSelector instead of LookupLanguageSelector

https://gerrit.wikimedia.org/r/1298961

Change #1298958 abandoned by Abijeet Patro:

[mediawiki/extensions/Translate@master] AggregateGroupDialog: Use LanguageSelector instead of LookupLanguageSelector

Reason:

in favor of I417af590fc27dfbeea13436e270557d29a7af371

https://gerrit.wikimedia.org/r/1298958

Change #1298958 restored by Abijeet Patro:

[mediawiki/extensions/Translate@master] AggregateGroupDialog: Use LanguageSelector instead of LookupLanguageSelector

https://gerrit.wikimedia.org/r/1298958

Change #1298961 abandoned by Abijeet Patro:

[mediawiki/extensions/Translate@master] AggregateGroupDialog: Use LanguageSelector instead of LookupLanguageSelector

Reason:

For a different patch

https://gerrit.wikimedia.org/r/1298961

Change #1298959 abandoned by Abijeet Patro:

[mediawiki/core@master] mediawiki.languageselector: Remove LookupLanguageSelector component

Reason:

Duplicat epatch

https://gerrit.wikimedia.org/r/1298959

Change #1298953 merged by jenkins-bot:

[mediawiki/core@master] mediawiki.languageselector: Expose LanguageSelector component

https://gerrit.wikimedia.org/r/1298953

Change #1298955 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] PreferredLanguagesTab: Use LanguageSelector component directly

https://gerrit.wikimedia.org/r/1298955

Change #1298954 merged by jenkins-bot:

[mediawiki/core@master] mediawiki.languageselector: Remove MultiselectLookupLanguageSelector

https://gerrit.wikimedia.org/r/1298954

Change #1298958 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] AggregateGroup: Use LanguageSelector instead of LookupLanguageSelector

https://gerrit.wikimedia.org/r/1298958

Change #1298957 merged by jenkins-bot:

[mediawiki/core@master] mediawiki.languageselector: Remove LookupLanguageSelector component

https://gerrit.wikimedia.org/r/1298957