Make WordPress Core

Opened 5 years ago

Last modified 5 months ago

#40330 assigned task (blessed)

Reconsider the usage of infinite scrolling across the admin

Reported by: afercia Owned by:
Milestone: Future Release Priority: normal
Severity: normal Version:
Component: Administration Keywords: a11y-task
Focuses: ui, accessibility, javascript Cc:


As accessibility team, we've often discussed and we're aware of some a11y issues in the WordPress admin but haven't formalized them in a Trac ticket yet. That's because they're general, broad, issues and they probably can't be solved soon, as they have a big impact on the way some relevant parts of the user interface are built. They would require some extensive discussion and research. Nevertheless, if we're not going to at least open a discussion, the solution is not going to happen 🙂 . During the last accessibility weekly meeting we've decided to open a series of tickets and use a special keyword to group them, something like a11y-task. This is the first ticket of the series.

Infinite scrolling (sometimes known as "endless scrolling") can be a serious accessibility barrier. It's used in the admin in a few places, for example:

  • Media Grid
  • Add Themes screens
  • Customizer > Add menu items
  • Editor > Insert/Edit link > Search
  • any other places?

For a comprehensive view of all the potential issues, I'd refer to the list of resources below. I'd recommend everyone to have a look at those posts.

I'd say the issues can be grouped in three different categories: accessibility, usability, and performance. Just to mention some of the most relevant ones:

  • a11y: it's impossible or very hard for keyboard users to reach content placed after an infinite scrolling region: think for example at the Media Grid, where tabbing through attachments loads more and more attachments (potentially hundreds or thousands of them) forcing users to keep tabbing indefinitely
  • a11y: no audible feedback or instructions about how infinite scrolling works, the current and total number of items, or when new items get loaded
  • usability: infinite scrolling often breaks the browser's history
  • usability: there's no JS fallback
  • performance: memory footprint can be huge, especially when loading hundreds of big images, see the Theme install screens

Resources mostly focused on accessibility:


Resources mostly focused on usability:


Resources focused on memory footprint:


Maybe for the future: the ARIA role feed
(at the time of writing, ARIA 1.1 is still a Candidate Recommendation, and as far as I know, no assistive technologies support the role feed)
See also: http://www.ssbbartgroup.com/blog/differences-aria-1-0-1-1-additions-role/

See #19815, #28927, #28998.

Change History (27)

#1 @afercia
5 years ago

About performance, I'm not familiar with profiling tools so anyone with better skills than me is greatly welcome to help measuring memory footprint issues. Checking the data reported by the Activity Monitor on my operating system I've noticed the browser's memory usage can easily go way higher than 1.5 GB after scrolling for a while in the Theme Installer screen. This is on a modern, powerful macbook pro. I can't imagine what happens on less powerful hardware or mobile devices. Not a surprise that, on mobile devices, sometimes browsers simply crash, as reported in #28927.

Worth reminding the Theme installer screen loads hundreds of big images, often 1200 by 900 pixels images. Also, unfortunately some themes use a non-optimized screenshot.png image which in some cases weights more than 2 MB. The theme installer screen then displays these images in an area of about 380 pixels, depending on the display's size, so I'd say loading such big images is highly inefficient. Ideally, the theme submission process should check for non-optimized images, or require an additional, smaller, image with a file size limit. Maybe consider alternative image sources and srcset and sizes, by the way these should be generated on the .org side.

Not to mention mobile bandwidth consumption.

Last edited 5 years ago by afercia (previous) (diff)

This ticket was mentioned in Slack in #accessibility by afercia. View the logs.

5 years ago

#3 @joedolson
5 years ago

  • Milestone changed from Awaiting Review to Future Release

This is something that is very important, and needs to be done. We're marking it as future release, and will work on these issues as time allows.

This ticket was mentioned in Slack in #core-customize by melchoyce. View the logs.

5 years ago

#5 @afercia
4 years ago

Related: #28927.

This ticket was mentioned in Slack in #accessibility by afercia. View the logs.

4 years ago

#7 @afercia
4 years ago

See @melchoyce comment on https://core.trac.wordpress.org/ticket/28927#comment:10

FWIW, I think we should consider mimicking Google here — load a bunch of images, and then after a certain point add a "load more" button to the end, both on desktop and mobile.

This ticket was mentioned in Slack in #core-media by joemcgill. View the logs.

3 years ago

#9 @valentinbora
20 months ago

  • Milestone changed from Future Release to 5.5

This ticket was mentioned in Slack in #core-media by valentinbora. View the logs.

20 months ago

This ticket was mentioned in Slack in #accessibility by afercia. View the logs.

19 months ago

#12 @afercia
19 months ago

  • Owner set to afercia
  • Status changed from new to assigned

This ticket was mentioned in Slack in #accessibility by afercia. View the logs.

18 months ago

This ticket was mentioned in Slack in #accessibility by afercia. View the logs.

18 months ago

This ticket was mentioned in Slack in #accessibility by afercia. View the logs.

18 months ago

#16 @afercia
17 months ago

#50143 reported one more case where users experience is not that great with the Media Library infinite scrolling.

This ticket was mentioned in Slack in #core-media by afercia. View the logs.

16 months ago

This ticket was mentioned in Slack in #accessibility by afercia. View the logs.

16 months ago

#19 @audrasjb
16 months ago

  • Type changed from defect (bug) to task (blessed)

Changing this umbrella ticket to a task, as we only keep it open to track other tasks/tickets.

This ticket was mentioned in Slack in #accessibility by afercia. View the logs.

15 months ago

#21 @afercia
15 months ago

  • Milestone changed from 5.5 to 5.6

Moving to 5.6 as this is a task that will span across multiple release cycles.

This ticket was mentioned in Slack in #accessibility by afercia. View the logs.

13 months ago

#23 @afercia
13 months ago

  • Milestone changed from 5.6 to Future Release

See related #50105. This ticket was discussed during today's accessibility bug-scrub: given the Beta 1 period is approaching fast and considering #50105 would need greater visibility and a good amount of time for in depth testing, the teams agreed to punt to future release. Since this is a task, it will be likely re-added to the next release milestone.

#24 @afercia
12 months ago

  • Owner afercia deleted

This ticket was mentioned in Slack in #core by desrosj. View the logs.

6 months ago

#26 @joedolson
5 months ago

In 50829:

Media: Remove infinite scroll from media library and modal.

Replace infinitely autoloading behavior on scroll with a user-controlled load more button. Fix a long standing accessibility issue in the media library. Infinite scroll poses a wide range of problems for accessibility, usability, and performance.

This change modifies the library to load 40 items in the initial view, with a load more button to load the next 40 items and a button to move focus from the load more region to the first of the most recently added items.

The text for communicating the jump target was broadly discussed, agreeing that the text incorporated here would most concisely and clearly convey the purpose of the button, and any further detail is learnable from use.

Props afercia, adamsilverstein, joedolson, audrasjb, francina
Fixes #50105. See #40330.

#27 @SergeyBiryukov
5 months ago

In 50831:

Docs: Correct @since tags for new properties and functions related to infinite scrolling in Media Library.

Follow-up to [50829].

See #50105, #40330, #52628.

Note: See TracTickets for help on using tickets.