[wp-trac] [WordPress Trac] #55585: WordPress 5.9 wp-container styles introduce Cumulative Layout Shift

WordPress Trac noreply at wordpress.org
Mon Apr 18 06:05:00 UTC 2022

#55585: WordPress 5.9 wp-container styles introduce Cumulative Layout Shift
 Reporter:  rinart73      |      Owner:  (none)
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  Awaiting Review
Component:  Themes        |    Version:  5.9
 Severity:  normal        |   Keywords:
  Focuses:  css           |
 I'm using the latest stable WordPress version and Generatepress theme
 which doesn't support the newest fullsite block editing and templates
 (like the majority of themes right now).

 I understand that the new `wp-container-NUMBER` styles were added to allow
 better customization. But in the current implementation they’re
 cumbersome, repetative and introduce Cumulative Layout Shift.

 First of all, repetative styles are not being bundled together. Styles are
 being defined even if they'll never be used (I don't have tags that use
 `alignleft` or `alignright` in those blocks). And it makes no point in
 defining tags if they have default values.
 Default Gutenberg container block (at least for me) doesn't even have an
 option to change margins for child elements.

 <style>.wp-container-2 .alignleft { float: left; margin-right: 2em; }.wp-
 container-2 .alignright { float: right; margin-left: 2em; }</style>
 <style>.wp-container-3 .alignleft { float: left; margin-right: 2em; }.wp-
 container-3 .alignright { float: right; margin-left: 2em; }</style>
 So a better output would be:
 <style>.wp-container-2 .alignleft, .wp-container-3 .alignleft { float:
 left; margin-right: 2em; }.wp-container-2 .alignright, .wp-container-3
 .alignright { float: right; margin-left: 2em; }</style>
 Or even no output at all, since those are default values.

 Now to the topic of Cumilative Layout Shift. Currently `wp-container`
 inline styles are being output in the `wp_footer` action unless user theme
 supports newest templates feature. This results in the following behaviour
 during the loading (Default Social Block as an example):
 And after page is fully loaded it looks like it's intented to be:

 Those styles either should be output in the `wp_head` action or right
 before block tags.

Ticket URL: <https://core.trac.wordpress.org/ticket/55585>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform

More information about the wp-trac mailing list