The Client Cleanup Continues

Our latest blog details the progress we're making in our efforts to improve the League client.

Earlier this year, we made a commitment to share bi-monthly updates on the behind-the-scenes work we're doing to improve the performance of the League of Legends client.

Today's update is the third in the series. (See the first blog here, and the second blog here.)

TL;DR: We're making consistent progress on our goal of cleaning up the code that powers the client. We're also smashing troublesome bugs along the way, which we've shared below. Despite progress, much work remains to be done. The Cleanup Campaign continues.


RECENT PROGRESS

As we said in our first client blog, we believe that the best way to solve some of the client's performance issues is by consolidating and reducing the number of plugins and ember apps in the client.

Plugins—for those who don't know—are tools that allow us to break the client's code up into useful chunks. Ember apps help drive the client's user interface.

We've continued to make progress toward this goal. The chart below shows the total count of plugins and ember apps over time.

Architecture-Stats.png

If you're reading the chart above, you're probably thinking okay, but how exactly does this impact the client's performance? The answer to that is complicated, but at high level: fewer plugins and Ember apps means more efficient client code. Leaner code equals better performance and also results in a client that's easier for devs to maintain.

One of the ways we've been measuring the impact of our work is by tracking the amount of time it takes for the client to boot up. Below you can see a chart showing how that metric has been tracking over time:

Loading-Screen-Render.png

As you can see, bootstrap times have mostly been holding steady over the past couple of months. We actually consider this to be a moderate success, given the risks inherent to the work we're doing. Shuffling around big chunks of code and rewiring plugins could cause some unforeseen issues if we're not careful—but so far that doesn't seem to be happening.

We're hopeful that we'll start to see more improvement to bootstrap times over the next few patches, especially now that we've developed a new solution that allows us to more intelligently specify which plugins load in whenever you boot up your client. (See the most recent client blog for a deeper discussion about this topic, in the section labeled "The Trouble With Affinity.")

Our plan for now is to continue the consolidation work for at least the next couple of months, as we believe there are meaningful long-term benefits of reducing the number of plugins and ember apps—by cleaning up the overall code environment, we're making it easier to solve bugs, memory leaks, and crashes.

Speaking of bugs and crashes, let’s talk about some recently-shipped fixes.

RECENT BUGFIXES

The client team has been opportunistically tackling tons of bugs over the previous few months. Starting with patch 10.13, you'll see client bugfixes in their own section of the League patch notes.

In the meantime, here's a list of some of the client bugs the team has addressed on a per-patch basis since the beginning of the year:

  • 10.1 - The client's position no longer resets after finishing a game
  • 10.1 - Fixed an issue that sometimes caused the League logo next to the "Play" button to disappear
  • 10.1 - [MAC] Fixed an issue that sometimes caused the client to crash when regaining internet connection after having been disconnected for over a minute
  • 10.1 - Profile background changes are now properly displayed to other players
  • 10.3 - Middle-clicking links no longer breaks the client
  • 10.3 - The Store icon is now properly highlighted when selected after using a Hextech Chest in loot
  • 10.3 - Sorting the Collection no longer defaults to reverse-alphabetical order when changing sorting filters
  • 10.3 - Sorting by "Milestones Passed" in the Collection now works properly
  • 10.4 - Addressed an issue causing the social panel and chat window to break in Champ Select if certain actions (removing a friend, being removed, being blocked) were taken
  • 10.4 - Champions are once again searchable using alternative spelling methods in the Collection
  • 10.4 - Searching for champions in the Collection is no longer case-sensitive
  • 10.4 - Sorting champions by alphabetical order in the Collection is now accurate
  • 10.4 - The client no longer shows a black screen after clicking "Play Again" if the player went into game while viewing personalized offers
  • 10.5 - Removed an unnecessary scroll bar from the bottom of the champions page in the Collection
  • 10.7 - Fixed an issue causing the "Send Friend Request" button to become non-functional in custom lobbies
  • 10.7 - The "View Schedule" information screen no longer appears blurry when viewing upcoming tournaments in the Clash hub
  • 10.8 - When leaving the emotes tab with unsaved changes, the save prompt will now appear as intended
  • 10.8 - Exiting the End of Game screen no longer brings the player to the Profile page
  • 10.8 - Summoner icons now display properly when logging into the client
  • 10.9 - Fixed an issue that was making the Blue Minion Bruiser summoner icon unselectable
  • 10.9 - Players no longer receive the wrong error message when attempting to log in while League is closed for maintenance.
  • 10.9 - Fixed an issue preventing blocked players' names from being visible on your blocked list
  • 10.9 - Various fixes to address memory leaks caused by an older version of Ember
  • 10.10 - Addressed a bug causing Rune Pages to appear missing or deleted upon login
  • 10.10 - Rune pages now automatically close when the "Play" button is clicked
  • 10.10 - Rearranging rune pages no longer creates duplicate rune pages or causes crashes
  • 10.10 - Addressed an issue preventing some players from editing rune pages
  • 10.11 - The "Enable Low Spec Mode" and "Close Client During Game" settings are now properly saved when the settings window is closed
  • 10.11 - Fixed an issue causing the "skin rarity" button in the Collection to become partially blank
  • 10.11 - Addressed an issue that sometimes prevented players from entering Spectator mode
  • 10.12 - Addressed some issues affecting rune page functionality in Champ Select

That's the list for now! You can also always submit feedback by clicking the "bug" button in the bottom-right corner of your client.

NEXT STEPS

As we work on the client, we keep asking ourselves a fundamental question: Is the League client worthy of our players?

The answer, of course, is that it isn't. Not yet, at least.

There are many more bugs to solve, crashes to prevent, and deep architecture problems to root out. The work we started earlier this year will continue until we can answer that question—is the client worthy of you, our players?—with a resounding "yes."

It will take time to get to that point, and we'll keep you updated along the way. For the next few patches, we intend to continue consolidating plugins and ember apps while smashing bugs as we see them. By the time we share our next update, we hope to be ready to enter a new phase of our campaign, whereupon we'll specifically focus on improving Champ Select responsiveness.

As always, thanks for playing, and we'll be back with another client blog in a couple of months.