Navigation Overlay: Explicitly set fetchpriority for images#76208
Navigation Overlay: Explicitly set fetchpriority for images#76208
Conversation
westonruter
left a comment
There was a problem hiding this comment.
Thanks for jumping on this so quickly!
|
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message. To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
|
Flaky tests detected in 5d077c4. 🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/22847693432
|
Co-authored-by: Weston Ruter <weston@ruter.net>
Co-authored-by: Weston Ruter <weston@ruter.net>
Co-authored-by: Weston Ruter <weston@ruter.net>
Co-authored-by: Weston Ruter <weston@ruter.net>
Co-authored-by: Weston Ruter <weston@ruter.net>
Co-authored-by: Weston Ruter <weston@ruter.net>
Co-authored-by: Weston Ruter <weston@ruter.net>
Co-authored-by: Weston Ruter <weston@ruter.net>
Co-authored-by: Weston Ruter <weston@ruter.net>
|
@westonruter Thanks for the quick and detailed review! I think I've addressed all your feedback. This should be ready for another review 🤞 |
westonruter
left a comment
There was a problem hiding this comment.
Some minor suggestions to add assertions that the next_tag() calls are successful.
|
@mikachan I've opened a companion ticket Core-64823 and PR #76208 to fix things on the core side. |
Co-authored-by: Weston Ruter <weston@ruter.net>
Co-authored-by: Weston Ruter <weston@ruter.net>
Co-authored-by: Weston Ruter <weston@ruter.net>
Co-authored-by: Weston Ruter <weston@ruter.net>
Co-authored-by: Weston Ruter <weston@ruter.net>
Co-authored-by: Weston Ruter <weston@ruter.net>
Co-authored-by: Weston Ruter <weston@ruter.net>
Co-authored-by: Weston Ruter <weston@ruter.net>
|
Thanks @westonruter! All of the latest feedback should now be addressed. |
* Set images to lazy loading in overlay * Explicitly set fetchpriority=low * Update comment * Update packages/block-library/src/navigation/index.php Co-authored-by: Weston Ruter <weston@ruter.net> * Update packages/block-library/src/navigation/index.php Co-authored-by: Weston Ruter <weston@ruter.net> * Update packages/block-library/src/navigation/index.php Co-authored-by: Weston Ruter <weston@ruter.net> * Update packages/block-library/src/navigation/index.php Co-authored-by: Weston Ruter <weston@ruter.net> * Update packages/block-library/src/navigation/index.php Co-authored-by: Weston Ruter <weston@ruter.net> * Update phpunit/blocks/render-block-navigation-test.php Co-authored-by: Weston Ruter <weston@ruter.net> * Update phpunit/blocks/render-block-navigation-test.php Co-authored-by: Weston Ruter <weston@ruter.net> * Update phpunit/blocks/render-block-navigation-test.php Co-authored-by: Weston Ruter <weston@ruter.net> * Update packages/block-library/src/navigation/index.php Co-authored-by: Weston Ruter <weston@ruter.net> * Rename function * Use WP_HTML_Tag_Processor in tests * Update phpunit/blocks/render-block-navigation-test.php Co-authored-by: Weston Ruter <weston@ruter.net> * Update phpunit/blocks/render-block-navigation-test.php Co-authored-by: Weston Ruter <weston@ruter.net> * Update phpunit/blocks/render-block-navigation-test.php Co-authored-by: Weston Ruter <weston@ruter.net> * Update phpunit/blocks/render-block-navigation-test.php Co-authored-by: Weston Ruter <weston@ruter.net> * Update phpunit/blocks/render-block-navigation-test.php Co-authored-by: Weston Ruter <weston@ruter.net> * Update phpunit/blocks/render-block-navigation-test.php Co-authored-by: Weston Ruter <weston@ruter.net> * Update phpunit/blocks/render-block-navigation-test.php Co-authored-by: Weston Ruter <weston@ruter.net> * Update phpunit/blocks/render-block-navigation-test.php Co-authored-by: Weston Ruter <weston@ruter.net> --------- Co-authored-by: Weston Ruter <weston@ruter.net> Co-authored-by: mikachan <mikachan@git.wordpress.org> Co-authored-by: westonruter <westonruter@git.wordpress.org> Co-authored-by: t-hamano <wildworks@git.wordpress.org>
|
I just cherry-picked this PR to the wp/7.0 branch to get it included in the next release: 25fb7e8 |
This updates the pinned hash from the `gutenberg` from `9b8144036fa5faf75de43d4502ff9809fcf689ad` to `8c78d87453509661a9f28f978ba2c242d515563b`. The following changes are included: - Navigation Editor: Allow any blocks to be inserted by gating contentOnly insertion rules to section blocks (WordPress/gutenberg#76189) - Add `fetchpriority=low` to `IMG` tags in collapsed Details blocks (WordPress/gutenberg#76269) - Connectors: Add logo URL support for custom AI providers (WordPress/gutenberg#76190) - Cover Block: Add a playlist parameter to loop YouTube background videos. (WordPress/gutenberg#76004) - Connectors: Memoize getConnectors selector (WordPress/gutenberg#76339) - HTML Block: Fix broken layout (WordPress/gutenberg#76278) - Tests: Skip connector logo URL tests when AI Client is unavailable (WordPress/gutenberg#76343) - Navigation Overlay: Explicitly set fetchpriority for images (WordPress/gutenberg#76208) - Connectors: Show API key source for env vars and wp-config constants (WordPress/gutenberg#76355) - Connectors: Move API key validation and masking to REST dispatch level (WordPress/gutenberg#76327) - Connectors: Replace apiFetch with core-data store selectors (WordPress/gutenberg#76333) - Do not sync local attributes (WordPress/gutenberg#76267) - Add `fetchpriority=low` to `IMG` tags in collapsed Accordion Item blocks (WordPress/gutenberg#76336) - Implement disconnection debounce after initial connection (WordPress/gutenberg#76114) - Allow Post Content to be edited when 'Show template' is active and Post content is nested in a Template Part (WordPress/gutenberg#76305) - Fix: Document Bar: Back button flickers (WordPress/gutenberg#76320) - RTC: Move event hooks from editor to core-data (WordPress/gutenberg#76358) - fix(navigation): prevent right-justified submenu overflow in custom overlays (WordPress/gutenberg#76360) - Connectors: Add connectors registry for extensibility (WordPress/gutenberg#76364) - Connectors: Add empty state when no connectors are registered (WordPress/gutenberg#76375) - Temp: Disable RTC in the site editor (WordPress/gutenberg#76223) - Connectors: Add AI Experiments plugin callout with install/activate functionality (WordPress/gutenberg#76379) - Editor: Polish real-time collaboration presence UI and move Avatar to editor package (WordPress/gutenberg#75652) (WordPress/gutenberg#76365) - RTC: Add collaborator selection highlighting in rich text (WordPress/gutenberg#76107) - Sync changes from `wp_enqueue_global_styles()` to Gutenberg override (WordPress/gutenberg#76127) - [RTC] Fix performance regression on post save (WordPress/gutenberg#76370) - Media: Enable AVIF support for client-side uploads (WordPress/gutenberg#76371) - Connectors: Move plugin status computation to script module data (WordPress/gutenberg#76409) - Revisions: Skip rendered fields in REST API responses (WordPress/gutenberg#76347) - E2E Tests: Add connector setup flow tests with test AI provider (WordPress/gutenberg#76433) - RTC: Place sync connection modal in front of popover (WordPress/gutenberg#76431) - Connectors: Sync PHP code with WordPress Core (WordPress/gutenberg#76443) - Editor: Show own presence in collaborative editing sessions (WordPress/gutenberg#76413) (WordPress/gutenberg#76445) A full list of changes can be found on GitHub: https://github.com/WordPress/gutenberg/compare/9b8144036fa5faf75de43d4502ff9809fcf689ad…8c78d87453509661a9f28f978ba2c242d515563b. Log created with: git log --reverse --format="- %s" 9b8144036fa5faf75de43d4502ff9809fcf689ad..8c78d87453509661a9f28f978ba2c242d515563b | sed 's|#\([0-9][0-9]*\)|https://github.com/WordPress/gutenberg/pull/\1|g; /github\.com\/WordPress\/gutenberg\/pull/!d' | pbcopy See #64595. git-svn-id: https://develop.svn.wordpress.org/trunk@61988 602fd350-edb4-49c9-b593-d223f7449a82
This updates the pinned hash from the `gutenberg` from `9b8144036fa5faf75de43d4502ff9809fcf689ad` to `8c78d87453509661a9f28f978ba2c242d515563b`. The following changes are included: - Navigation Editor: Allow any blocks to be inserted by gating contentOnly insertion rules to section blocks (WordPress/gutenberg#76189) - Add `fetchpriority=low` to `IMG` tags in collapsed Details blocks (WordPress/gutenberg#76269) - Connectors: Add logo URL support for custom AI providers (WordPress/gutenberg#76190) - Cover Block: Add a playlist parameter to loop YouTube background videos. (WordPress/gutenberg#76004) - Connectors: Memoize getConnectors selector (WordPress/gutenberg#76339) - HTML Block: Fix broken layout (WordPress/gutenberg#76278) - Tests: Skip connector logo URL tests when AI Client is unavailable (WordPress/gutenberg#76343) - Navigation Overlay: Explicitly set fetchpriority for images (WordPress/gutenberg#76208) - Connectors: Show API key source for env vars and wp-config constants (WordPress/gutenberg#76355) - Connectors: Move API key validation and masking to REST dispatch level (WordPress/gutenberg#76327) - Connectors: Replace apiFetch with core-data store selectors (WordPress/gutenberg#76333) - Do not sync local attributes (WordPress/gutenberg#76267) - Add `fetchpriority=low` to `IMG` tags in collapsed Accordion Item blocks (WordPress/gutenberg#76336) - Implement disconnection debounce after initial connection (WordPress/gutenberg#76114) - Allow Post Content to be edited when 'Show template' is active and Post content is nested in a Template Part (WordPress/gutenberg#76305) - Fix: Document Bar: Back button flickers (WordPress/gutenberg#76320) - RTC: Move event hooks from editor to core-data (WordPress/gutenberg#76358) - fix(navigation): prevent right-justified submenu overflow in custom overlays (WordPress/gutenberg#76360) - Connectors: Add connectors registry for extensibility (WordPress/gutenberg#76364) - Connectors: Add empty state when no connectors are registered (WordPress/gutenberg#76375) - Temp: Disable RTC in the site editor (WordPress/gutenberg#76223) - Connectors: Add AI Experiments plugin callout with install/activate functionality (WordPress/gutenberg#76379) - Editor: Polish real-time collaboration presence UI and move Avatar to editor package (WordPress/gutenberg#75652) (WordPress/gutenberg#76365) - RTC: Add collaborator selection highlighting in rich text (WordPress/gutenberg#76107) - Sync changes from `wp_enqueue_global_styles()` to Gutenberg override (WordPress/gutenberg#76127) - [RTC] Fix performance regression on post save (WordPress/gutenberg#76370) - Media: Enable AVIF support for client-side uploads (WordPress/gutenberg#76371) - Connectors: Move plugin status computation to script module data (WordPress/gutenberg#76409) - Revisions: Skip rendered fields in REST API responses (WordPress/gutenberg#76347) - E2E Tests: Add connector setup flow tests with test AI provider (WordPress/gutenberg#76433) - RTC: Place sync connection modal in front of popover (WordPress/gutenberg#76431) - Connectors: Sync PHP code with WordPress Core (WordPress/gutenberg#76443) - Editor: Show own presence in collaborative editing sessions (WordPress/gutenberg#76413) (WordPress/gutenberg#76445) A full list of changes can be found on GitHub: https://github.com/WordPress/gutenberg/compare/9b8144036fa5faf75de43d4502ff9809fcf689ad…8c78d87453509661a9f28f978ba2c242d515563b. Log created with: git log --reverse --format="- %s" 9b8144036fa5faf75de43d4502ff9809fcf689ad..8c78d87453509661a9f28f978ba2c242d515563b | sed 's|#\([0-9][0-9]*\)|https://github.com/WordPress/gutenberg/pull/\1|g; /github\.com\/WordPress\/gutenberg\/pull/!d' | pbcopy See #64595. Built from https://develop.svn.wordpress.org/trunk@61988 git-svn-id: http://core.svn.wordpress.org/trunk@61270 1a063a9b-81f0-0310-95a4-ce76da25c4cd
What?
Closes #76181
This PR sets
fetchpriority="low"on images inside a Navigation Overlay template part so they don't compete with the page's actual LCP image.Why?
When a navigation block uses a custom overlay template part containing an image, that image can incorrectly receive
fetchpriority="high"even though it is hidden until the user opens the menu. This happens because the template part block callswp_filter_content_tags()on its rendered content with the context "template_part_header", whichwp_get_loading_optimization_attributes()treats as an in-viewport context and may assignfetchpriority="high".This has two negative effects on LCP:
fetchpriority="high", causing the browser to fetch it with high priority even though it is not visible.wp_increase_content_media_count) is incremented by the hidden image, potentially using up the budget before the actual LCP image (e.g. the post's featured image) is processed, causing it not to receivefetchpriority="high".How?
After the overlay blocks are rendered in
WP_Navigation_Block_Renderer::get_responsive_container_markup(), a new helper functionblock_core_navigation_set_overlay_image_lazy_loading()usesWP_HTML_Tag_Processorto setfetchpriority="low"on every<img>in the overlay HTML.Testing Instructions
<img>inside the Navigation Overlay should havefetchpriority="low"fetchpriority="high"