Performance Chat Summary: 11 March 2025

The full chat log is available beginning here on Slack.

WordPress Performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets

  • @westonruter The second beta of 6.8 was just released.
  • @westonruter There are 5 performance tickets in the milestone.
    • @johnbillion RE #63026, this is an issue with the performance of the tests due to the high number of user fixtures, all of which generate and hash a password for the user with each fixture. The regular performance tests are not indicatiny any general performance regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5.. I think we can therefore remove the performance focus unless there’s an objection.

Performance Lab plugins

Discussing the upcoming release scheduled for Monday, Mar 17, 2025 at 17:00 UTC.

  • @westonruter Let’s start with the upcoming set of Performance Lab releases which is due March 17th.
  • @westonruter As noted by @flixos90, this release won’t actually include any update to the Performance Lab pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party itself. Instead there will be updates to Optimization Detective, Image Prioritizer, Embed Optimizer, Speculative Loading, and Modern Image Formats. Therefore, he suggests that we take this as an opportunity move away from using the PL’s version for the release tags. In reality this should have been done long ago when we split up the plugin into standalone plugins. So instead of the release branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch". being release/4.0.0 it could instead be release/20250317. The title of the release then I suppose would be 2025-03-17 as well.
  • @mukesh27 Does the release triggered manually as we didn’t release PL plugin?
    • @westonruter The GHA workflow doesn’t depend on releasing the PL plugin anymore, right? I mean, ever since the plugin was split into standalone plugins, I don’t think this was the case
  • @flixos90 It would feel a bit odd to have a release called 2025-03-17 in the GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged be the repository owner. https://github.com/ releases page, but I’d argue that’s only because of the previous releases using the PL version number. It’s already odd now in that each release is labelled by the PL version number, but actually includes multiple releases using different versions. So I think that would be fine.
  • @westonruter We can include a note in the release description that explains the naming convention change.
  • @mukesh27 What happens in the future if we find ourselves in the same situation? Will we use the release date again?
  • @westonruter Yeah, I think we’ll use dates from now on.
    • @flixos90 Are you saying we should use dates for the release branches and GH releases going forward even when PL is among the released plugins? If we are going to do that, we should modify the documentation in the CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Performance Handbook.
    • @westonruter Yes, I think we should use dates going forward.
    • @swissspidy Agreed. Would be even more confusing otherwise.
  • @westonruter There are 4 milestones for Monday which have issues/PRs:
  • @westonruter Looks like Modern Image Formats primarily just needs a couple tweaks prior to merging one PR. It looks like the other PR will need to get bumped.
  • @flixos90 Regarding the changed branch naming and release naming strategy, anyone up for updating the Make Core Performance Handbook documentation accordingly?
    • @westonruter I can do it. I typically tweak the handbook after going through the release based on how it went.
  • @mukesh27 I have to share update on the accurate sizes project: I picked it up and started working on it this week. The PR #1795 adds the ancestor blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. context and is ready for review.

Our next chat will be held on Tuesday, Mar 25, 2025 at 16:00 UTC in the #core-performance channel in Slack.

#core-performance, #hosting, #performance, #performance-chat, #summary

Performance Chat Summary: 25 February 2025

The full chat log is available beginning here on Slack.

Announcements / Reminders

  • Core Performance Team Rep nominations deadline ending this Friday, Feb 28.
  • WordPress 6.8 BetaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. 1 is next Tuesday, Mar 4. Therefore any feature or enhancementenhancement Enhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature. tickets must be completed or punted by Monday.

WordPress Performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets

Discussion of performance tickets for the upcoming 6.8 release:

  • @westonruter added two tickets to the milestone yesterday: #43258 and #63007
    • @flixos90: #43258 seems like a pretty big change to start working on this late in the cycle. It looks like there’s no PR yet?
    • @westonruter: No PR yet, but it has been in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ (client-side navigation experiment) for awhile now, and in Optimization Detective as well. The patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing. would be small.
    • @flixos90: Since WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. has never included an output buffer (whether for good reasons or not), I think this requires more discussion that would not be possible to have in just a few days.
    • @westonruter: I’ll open a PR and we can discuss. If no consensus  then we’ll puntpunt Contributors sometimes use the verb "punt" when talking about a ticket. This means it is being pushed out to a future release. This typically occurs for lower priority tickets near the end of the release cycle that don't "make the cut." In this is colloquial usage of the word, it means to delay or equivocate. (It also describes a play in American football where a team essentially passes up on an opportunity, hoping to put themselves in a better position later to try again.).
  • @pbearne believes his tickets are ready
    • @flixos90: Some PRs like the one on #62124 may be ready, but they haven’t had any reviews from committers yet. So depending on bandwidth, they may not make it
  • @flixos90: It looks like most of the 6.8 performance enhancements have had some updates in the last few days, so hopefully they’re moving along. I’m going to check in on the ones without recent updates later, and can do another last-minute scrub to either commit or punt on Monday.
  • @joemcgill is curious about #58001 and #57496, which are both close, but the deadline for Beta 1 is coming very quickly. #58001 was marked early and is at risk of getting punted this week without follow-up.
    • @spacedmonkey: I need to add unit tests right? Is there anything else needed?
    • @joemcgill: @flixos90 left feedback on the PR that is not resolved, but once you two are happy with it being committed, it seems good to go
    • @flixos90: Beyond my feedback that hasn’t been addressed yet, the #58001 PR needs a review by someone else. I explicitly mentioned that the metadata lazyloader changes that are part of it fall outside my domain too much so I wouldn’t be comfortable approving those changes. Alternatively, the PR could be split into two pieces, as I’m happy and more confident to review the WP_User changes
    • @joemcgill: Oh right. I’ll look again, but it seemed ok to me. Could be good to get @peterwilsoncc‘s feedback given he’s also looking at #57496.

Performance Lab PluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party (and other performance plugins)

  • @flixos90 opened https://github.com/WordPress/performance/pull/1883 yesterday to use the now merged WP Core APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. for Speculative Loading conditionally if available

Open Floor

  • @westonruter: From doing performance audits at WordCampWordCamp WordCamps are casual, locally-organized conferences covering everything related to WordPress. They're one of the places where the WordPress community comes together to teach one another what they’ve learned throughout the year and share the joy. Learn more. Asia (and previous WordCamps), something I’ve been seeing more and more being the performance bottleneck is render-blocking stylesheets in the HEAD. This often shows up as a render delay when the LCP element is text, e.g. a paragraph or heading. I started investigating further and I found that Twenty Twenty-Two and Twenty Twenty-Five are not inlining their style.css files when they should be, so I opened this ticketticket Created for both bug reports and feature development on the bug tracker. with a patch to implement: #63007
    • @westonruter: When all stylesheets are inclined a dramatic reduction in LCP(-TTFB) results when I tested with a Slow 3G networknetwork (versus site, blog) condition: 4196.1 ms (poor) down to 2230.8 ms (good). Related to that, I found that no stylesheets in core themes are getting minified, so I opened #63012 to address that.
    • @westonruter: Additionally, I think we should investigate increasing the styles_inline_size_limit from 20,000 bytes to maybe 50,000 bytes. I intend to do some benchmarks to show the performance tradeoff of inlining versus having a cached stylesheet for repeat visits. Relatedly, the landing of Speculative Loading means additional byte size of documents with inclined CSSCSS Cascading Style Sheets. will now result in less of an impact due to prefetching.
    • @spacedmonkey: There is some push back to minify theme css right?
    • @flixos90: I think the concern is related to blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. themes specifically, since end users are more in touch with them than they were with classic themes, e.g. you can export a theme etc. from making changes in the UIUI User interface. So the lines between end user and developer territory blur. I’m not sure about whether that should block us from implementing minification, but all I’m saying is the implications differ between block themes and classic themes.
    • @westonruter: But with block themes users don’t edit any CSS file in the Site Editor, right? It’s separate from Global Styles.
    • @flixos90: Worth highlighting https://core.trac.wordpress.org/ticket/58519#comment:2 too (and other comments of similar nature) that highlight that before we allow inlining default theme CSS, we should minify the files to avoid more HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. bloat. So potentially #63007 should depend on #63012.
  • @westonruter: I wanted to mention that the talk I gave at WordCamp Asia about Optimization Detective is available: https://weston.ruter.net/2025/02/21/boosting-performance-with-optimization-detective/

Our next chat will be held on Tuesday, Mar 11, 2025 at 16:00 UTC in the #core-performance channel in Slack.

#core-performance, #hosting, #performance, #performance-chat, #summary

Performance Chat Summary: 11 February 2025

The full chat log is available beginning here on Slack.

WordPress Performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets

Discussion of performance tickets for the upcoming 6.8 release:

  • #39242 (Add caching to count_user_posts()) – Jonny Harris plans to commit
  • #62503 (Add speculative loading support) is now waiting for follow up reviews

Performance Lab PluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party (and other performance plugins)

  • A reminder that the next version of the Performance Lab plugin will be this Thursday. 
  • The release branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch". has been cut and the PR to prep the release has been opened.
  • Needs testing and then we’re good to go for Thursday.
  • Builds for Thursday’s release are now available for testing: https://github.com/WordPress/performance/pull/1862#issuecomment-2649801657

Open Floor

  • There are still 13 enhancements in the milestone for 6.8.
    • Discussion of which tickets are ready or need further review.
  • #56481 and #39242 are both ready to commit.  
  • #58001 is close
  • #57496 Needs another review

Our next chat will be held on Tuesday, Feb 25, 2025 at 16:00 UTC in the #core-performance channel in Slack

#core-performance, #hosting, #performance, #performance-chat, #summary

Performance Chat Summary: 28 January 2025

The full chat log is available beginning here on Slack.

Announcements

  • All meetings will be held fortnightly, following a set agenda laid out in this document
  • With the start of 2025, we are looking for new Team Reps to represent the CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Performance Team within the overall WordPress project. If you have someone to nominate or you would like to volunteer yourself, please leave a comment!
    https://make.wordpress.org/performance/2025/01/13/core-performance-team-rep-nominations-for-2025/
    • Being a Team RepTeam Rep A Team Rep is a person who represents the Make WordPress team to the rest of the project, make sure issues are raised and addressed as needed, and coordinates cross-team efforts. is a great way to contribute, for both new and seasoned contributors. So if you’re new and unsure about it, please don’t hesitate. We are around for onboarding and guidance as needed

Discussion

  • @spacedmonkey working on #57496, #58001 and #59592 all of which could use more eyes on them
  • @mukesh27 The initial context related issue for blocks has been fixed for 6.8 and committed! https://core.trac.wordpress.org/changeset/59662
  • @flixos90 looking for reviews for https://github.com/WordPress/wordpress-develop/pull/7860, which is for #62503. Since this is a new performance feature, it would be great to get eyes soon – we probably would want to merge this sooner than later to have ample time for testing
  • @joemcgill left an update on #62126 – TL;DR, this one I was reviewing that needs to be picked up and the original reporter hasn’t responded so it’s likely a puntpunt Contributors sometimes use the verb "punt" when talking about a ticket. This means it is being pushed out to a future release. This typically occurs for lower priority tickets near the end of the release cycle that don't "make the cut." In this is colloquial usage of the word, it means to delay or equivocate. (It also describes a play in American football where a team essentially passes up on an opportunity, hoping to put themselves in a better position later to try again.) unless someone else wants to give it a look.
  • @mukesh27 For accurate sizes, opened two PRs, #1795 and #1818, and currently discussing with @joemcgill the best path forward to address the issue for nested blocks. Received some valuable feedback from Joe, which is being implemented

Our next chat will be held on Tuesday, February 11, 2025 at 16:00 UTC in the #core-performance channel in Slack

#core-performance, #hosting, #performance, #performance-chat, #summary

Performance Chat Summary: 14 January 2025

The full chat log is available beginning here on Slack.

Announcements

Discussion

  • Bug scrub cadence proposal from @flixos90
    • Bug scrub meetings can be inefficient because the people who need to weigh in on tickets are usually not there. So they sometimes end up mostly as a “monologue”.
    • There’s also the overhead of commenting on the ticketticket Created for both bug reports and feature development on the bug tracker. but also sharing what happens in SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/., which makes scrubbing the bugs slower.
    • Scheduled bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. scrubs are important also for the fact that otherwise there’s a chance nobody will do it.
    • We could consider a format where we have regular bug scrubs, but it’s always one person doing it (rotating per meeting). They would always share a report on Slack when they start and then go over the tickets on their own and comment on each ticket with whatever update they think makes sense (checking in with reporter or PR author, changing milestone, changing priority, …).
  • After discussion, it has been agreed that the cadence of these meetings will remain fortnightly, and will be led by one person
    • The recommended process has been captured in this document which we invite people to review and comment
    • The rotation of bug scrub leads can be found in this spreadsheet – we welcome volunteers to help here

Our next chat will be held on Tuesday, January 28, 2025 at 16:00 UTC in the #core-performance channel in Slack

#core-performance, #hosting, #performance, #performance-chat, #summary

Performance Chat Summary: 7 January 2025

Meeting agenda here and the full chat log is available beginning here on Slack.

Announcements

  • Welcome to our new members of #core-performance
  • Open floor discussion around this meeting format and changes in 2025
    • Agreed to move to a fortnightly performance meeting in a more “office hours” format from January 14 onwards
    • No agenda will be posted ahead of each meeting, instead the meeting host will follow the format suggested in this document, which is open for comments please
  • Bug scrub cadence was also discussed, but no conclusion reached – we will continue the discussion on the next meeting January 14

WordPress Performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. Tickets

  • @joemcgill is planning to commit the fix for #62692 soon. His concern is that anyone on an older version of WP will still be affected by this bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority.. Joe has reached out to all the affected caching plugins identified on the ticketticket Created for both bug reports and feature development on the bug tracker. and so far have seen mostly that those projects aren’t interested in supporting versions of WP that are impacted by the bug

Our next chat will be held on Tuesday, January 14, 2025 at 16:00 UTC in the #core-performance channel in Slack

#core-performance, #hosting, #performance, #performance-chat, #summary

Performance Chat Summary: 10 December 2024

Meeting agenda here and the full chat log is available beginning here on Slack.

Announcements

  • Welcome to our new members of #core-performance
  • The Performance team have posted the WordPress 6.7 Performance Improvements results
  • The next Performance Lab release will be on December 16
  • Our performance chat time slot next week will be for our Hallway Hangout: Performance End of Year Review 2024 taking place December 17, 2024 at 16:00 UTC we welcome as many people there as possible!
  • The performance bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. scrub on December 18, 2024 at 16:00 UTC will also be an end of year wrap up session
  • Upcoming Performance Weekly Chats in December
    • No meeting on Tuesday December 24
    • No meeting on Tuesday December 31
    • Meetings will resume again on Tuesday January 7, 2025

Priority Items

  • WordPress performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets
  • Performance Lab pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party (and other performance plugins)
  • Active priority projects

WordPress Performance Trac Tickets

  • @spacedmonkey ticketticket Created for both bug reports and feature development on the bug tracker. #62658 is nearly ready to commit
  • @joemcgill we’ve got 5 marked for early that would be good to scrub later today if there’s time, since we skipped last week
  • @pbearne does not yet have a fix for #42743. The issue is that I can’t separate blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. widgets from the others the way it hackedhacked in is the problem
    • @joemcgill Has that challenge been documented anywhere? Happy to read up on it and try to give feedback, or perhaps there is someone else that is familiar with the issue that could help?
    • @pbearne The block widgets are load a single widgetWidget A WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user. as part of the option. Happy to have others look at this
  • @mukesh27 for #58001 suggested we can review the PR and iterate early in the 6.8 cycle
    • @spacedmonkey Not had time to look into this one again. I would love if someone else could pick this one up, as it most just needs unit tests now. IMO

Performance Lab Plugin (and other Performance Plugins)

Active Priority Projects

Improving the calculation of image size attributes

Enable Client Side Modern Image Generation

  • No updates this week

Open Floor

  • @spacedmonkey to discuss #57496
    • Has added tests to the above. I need code review. Can this be added to WP 6.8?
    • @joemcgill I don’t see any reason why it can’t be milestoned if it’s close. @pbearne you had self assigned ownership, but am wondering who needs to shepherd this into the release?
    • @pbearne the code is ready it just need a committercommitter A developer with commit access. WordPress has five lead developers and four permanent core developers with commit access. Additionally, the project usually has a few guest or component committers - a developer receiving commit access, generally for a single release cycle (sometimes renewed) and/or for a specific component. to help
    • @spacedmonkey I am happy to commit this and action feedback. It doesn’t really need much more, I think it is basically done.

Our next chat will be held on Tuesday, December 10, 2024 at 16:00 UTC in the #core-performance channel in Slack in the form of our Hallway Hangout: Performance End of Year Review 2024

#core-performance, #hosting, #performance, #performance-chat, #summary

WordPress 6.7 Performance Improvements

This post is the latest in a series of updates focused on the performance improvements of major releases (see 6.6, 6.5, 6.4, 6.3, and 6.2).

WordPress 6.7, “Rollins” is the last major version of WordPress released in 2024. This release delivers important performance updates, including faster pattern loading, optimized previews in the data views component, improved PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher 8+ support and removal of deprecated code, auto sizes for lazy-loaded images, and more efficient tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) processing in the HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways..

Explore the WordPress 6.7 Field Guide. Learn about the changes in this release with detailed developer notes.

Further details on the methodology behind these measurements are provided later in this article, along with an explanation of possible regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5. sources.

Key improvements

Media: Auto sizes for lazy loaded images

In #61847,  support was added for sizes=”auto” for lazy-loaded images. This feature, which was recently added to the HTML specification, allows the  browser to use the rendered layout width of the image when selecting a source from the srcset list, since lazy loaded images don’t load until after the layout is known. It maintains backward compatibility while boosting performance, particularly for responsive and dynamic layouts. Explore the details in the official dev note.

Media: Caching _wp_image_editor_choose results for improved performance

In #61532, WordPress now caches the results of _wp_image_editor_choose, storing the WP_Image_Editor implementation that supports queried options. This avoids redundant and costly compatibility checks, such as multiple calls to WP_Image_Editor_Imagick::supports_mime_type(), often triggered during tasks like setting up wp_plupload_default_settings(). The cache, stored for one day, speeds up editor loading times and introduces a new global caching group, image_editor, to manage future optimizations for image editor performance.

Media: Improve speed of AVIF image generation

In #61758, the change results in the AVIF encoder working faster by raising heic:speed to 7 from the default of 5. AVIF generation time is reduced by up to 20% with minimal impact on image size.

Editor: New blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. type registration APIs to improve performance

In #62002, new block type registration APIs were introduced, offering a more efficient way to manage block metadata and improve performance across the board. These APIs allow developers to register blocks more flexibly, reducing server-side processing and enhancing editor load times. With these changes, WordPress lays the groundwork for faster, more scalable block-based experiences while maintaining backward compatibility. Explore the details in the official dev note.

Editor: Caching Global Styles for Blocks

In #59595, profiling WordPress 6.4 revealed that the WP_Theme_JSON::compute_style_properties method could account for 6-11% of server time during page generation. To address this, the editor now caches the generated CSSCSS Cascading Style Sheets. for block nodes derived from merged Theme JSONJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. data. By saving the computed styles in a transient, WordPress avoids repeated and resource-intensive operations, significantly improving performance and reducing server load. This change is a key optimization for sites leveraging block themes and theme.json.

Themes: Improve performance of applying background image styles in theme.json.

In #61858, the cost of using WP_Theme_JSON::get_block_nodes() for this in its original shape was high enough to lead to a performance regression. Therefore this changeset introduces a new option on the method that allows to bypass all logic except for retrieving the node paths, which is much faster and everything that this functionality needs.

Miscellaneous Editor improvements:

In addition to the previously listed editor improvements, this release includes the following list of changes that improves the editor experience itself:

Additional performance focused changes

In total, there were 23 performance related improvements included in this release, split evenly between new enhancements (12) and bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fixes (11).

Performance metrics

In our analysis, block themes (Twenty Twenty-Four was tested) experienced a modest regression in performance. The median Largest Contentful Pain (LCP) time increased by ~6ms or ~3.5% in tests, and the median Time To First Byte (TTFB) shows a 2ms (2%) regression.

Classic themes show a slight improvement (Twenty Twenty-One was tested). The median Largest Contentful Pain (LCP) and Time To First Byte (TTFB) time shows a slight 0.2ms or 0.2% improvement in tests.

How release performance is measured

The performance measurements used for the overview are based on benchmarks conducted using an automated workflow on GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged be the repository owner. https://github.com/ action runners. Benchmarks were taken from the homepage of the Twenty Twenty-one, Twenty Twenty-three, and Twenty Twenty-four themes, comparing WordPress 6.7 with WordPress 6.6.2 (the latest version of WP 6.6 available when 6.7 was released).

Performance metrics were collected from 100 runs for both CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Web Vitals (CWV) and Server-Timing headers provided by the Performance Lab pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party using CLI scripts from the WPP Research repo.

Benchmark Data

Follow up from this release

WordPress 6.7 shows a regression in performance. While some overhead typically accompanies new features, these declines point to areas where the performance team continues to investigate where these regressions came from and how they can be addressed in the upcoming releases.

Each release, the Performance Team looks for opportunities to improve the performance of WordPress for the following releases, which includes identifying ways we can improve the tooling and processes we use to support the performance practice. For example, we’re collecting opportunities to improve our performance testing in this GitHub issue

Performance Lab – the plugin(s) we use to test out new performance features for core – continues to add new features such as Image Prioritizer , Embed Optimizer, Speculative Loading, Performant Translations, Modern Image Formats, Enhanced Responsive Images, and Web Worker Offloading.

You can also follow progress on other performance-related work being planned for the WordPress 6.8 release in Trac. A full list of the Performance Team’s priorities for the year is available on the 2024 Roadmap page. Additionally, the 2025 Roadmap will be published early in Q1 2025 in the team’s handbook. Come join us in making WordPress as performant as possible.

Props to @joemcgill, @flixos90, @westonruter, and @fabiankaegy for contributing to this post.

#6-7, #core, #core-performance, #performance

Hallway Hangout: Performance End of Year Review 2024

Following up on the prior performance related Hallway Hangout: Performance End of Year Review 2023 in December, @flixos90 @joemcgill and @clarkeemily co-hosted a hallway hangout to review the work and impact of the performance team in 2024, and look ahead to performance improvements in WordPress for 2025.

The Hallway Hangout took place at 2024-12-17 16:00 UTC and the Google Meet link was shared in the #core-performance SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/. channel before starting.

At a high level, we went through:

  • Review of WordPress performance improvements throughout 2024
  • Breaking down CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Web Vitals metrics (November 2023 – November 2024) resulting in CWV passing rates increasing by 6.07% on mobile and 5.92% on desktop
  • WordPress 2024 releases overview (6.5, 6.6 and 6.7) were discussed individually
  • The impact of specific metrics for major features released in 2024 (Enhanced translations engine, Interactivity APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. and image sizes=auto)
  • A look ahead to 2025 plans

As a reminder, hallway hangouts are meant to be casual and collaborative so come prepared with a kind, curious mind along with any questions or items you want to discuss around this important area of the project, especially since the agenda is intentionally loose to allow for it.

Noting this specifically for folks who have expressed interest previously or who are involved directly in this work cc @hellofromtonya @aristath @oandregal @annezazu @illuminea @tweetythierry @desrosj @youknowriad @dmsnell @pbearne @swissspidy @westonruter @adamsilverstein @mukesh27 @joemcgill @johnbillion @linsoftware @spacedmonkey

Recording

Attendees:

@pbearne @joemcgill @benniledl @flixos90 @mukesh27 @mhamal @clarkeemily @b1ink0 @nazmul111 @shyamgadde @kafleg @westonruter @swissspidy @adamsilverstein @annamackenzie

Notes

@flixos90 presented the WordPress Performance 2024 CWV Impact Retrospective slide deck, thank you very much for pulling that together Felix.

Please click the image above to view the slide deck

    TTFB Improvements

    @pbearne @flixos90 @joemcgill @westonruter and @adamsilverstein were discussing TTFB passing rates and why the rest of the web has higher rates than WordPress due to that metric. Discussions were held around filtering sites to the top 10k or 100k of sites to re-evaluate passing rates without the bottom end of sites that are not set up correctly. When WordPress is configured correctly, passing rates are much higher, so it was suggested that outreach in the ecosystem may be encouraged to facilitate better hosting environments. The new Core #core-performance-hosting channel will help facilitate these conversations.

    The team went on to discuss file caching and the potential to introduce a file caching API in core. It was agreed this would be a very large effort and would need contribution from multiple teams. We would need to revisit the original decision from WordPress to keep file caching in pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party territory as opposed to within Core. We would also need significant investigation into the large number of WordPress sites where static caching is not something their site can support. 

    Auto Sizes Metric

    The team discussed whether the auto-sizes metric in the slides was the top 70th percentile (it is). 

    Plans for 2025

    There are still some projects ongoing from 2024 to land, speculative loading now has a TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. ticketticket Created for both bug reports and feature development on the bug tracker.. Next steps on responsive image sizes improvements are in progress. The accurate image sizes work. The last piece of dominant colour is going in too! 

    Accurate Image sizes

    The project @joemcgill and @mukesh27 are focusing on will have significant releases this week, around having more detail on the layout of the page and how we can make more informed choices about accurate image sizes. This essentially takes the layout information of image blocks and cover blocks, but also the constraints of the container around it (group blocks) so we can put limits on the size we expect to show things at. The discussion continued around how we can accurately set image sizes in WordPress. 

    Optimization Detective

    @westonruter is continuing to work on the optimisation detective plugin which will include prioritisation of background images defined in external file sheets – this will dramatically improve LCP. In the new year he will be continuing to refine the foundation and use cases to hopefully get more adoption and propose for core. @flixos90 reminded the team that this is a great plugin example which improves how well other performance optimisations are applied. It’s important to improve what we already have in core, and this plugin helps that.

    Props to @joemcgill for proof reading and @flixos90 for the excellent presentation.

    #core-performance, #hallwayhangout, #performance

    Performance Chat Summary: 3 December 2024

    Meeting agenda here and the full chat log is available beginning here on Slack.

    Announcements

    • Welcome to our new members of #core-performance
    • Next Performance Lab release has been moved from December 2 to December 16
    • Upcoming Performance Weekly Chats in December:
      • No meeting on Tuesday December 24
      • No meeting on Tuesday December 31
      • Meetings will resume again on Tuesday January 7, 2025
    • End of year Performance Hallway Hangout

    Priority Items

    • WordPress performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets
    • Performance Lab pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party (and other performance plugins)
    • Active priority projects

    WordPress Performance Trac Tickets

    • @joemcgill While it’s not a performance ticketticket Created for both bug reports and feature development on the bug tracker.. #62046 is the one that I’ve been looking at most recently, as it could have implications on how we approach improving sizes attribute calculation.

    Performance Lab Plugin (and other Performance Plugins)

    • @pbearne aiming to do one more update to Image Placeholders
      • To the media modal https://github.com/WordPress/performance/issues/354#issuecomment-2506494681 if this hack is OK
      • @joemcgill my question would be whether working on adding dominant color backgrounds in the media modal to the plugin has any real performance benefit that would lead this to be a priority at this point?
      • @pbearne it is not a priority but it would nice to finish it now i have worked out how to add it to media model. Adding ThumbHash should be left to @swissspidy client side image code
      • @joemcgill yes, as long as the plugin is still a part of the performance lab repo, I think it’s free for contribution if there is something you’ve already got going.
      • @pbearne will add some cleaner code. But would like someone better at JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. to look at the replace
      • @joemcgill Sure. I’ll respond to the issue and am happy to review a PR once you’ve got something together
    • @mukesh27 The PR 1683 for Bump minimum required WordPress version to 6.6 is ready for review. I will work on issue 1557 in the coming week it’s quick one.

    Active Priority Projects

    Improving the calculation of image size attributes

    • @joemcgill This week, I plan on continuing iteration on https://github.com/WordPress/performance/pull/1701
    • @mukesh27 I’m exploring how we can pass the context for Column blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. as it’s more complex then other parent blocks

    Enable Client Side Modern Image Generation

    • No updates this week

      Open Floor

      • @joemcgill discuss having an end of year Hallway Hangout for the Performance team in the next couple of weeks
        • We could even possibly just use this current meeting slot, but should confirm with @flixos90 what will work for him. I suspect he wants to put together some end of year data, similar to last year, that could be shared on the call.
        • To be picked up async on SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/. once @flixos90 is back

        Our next chat will be held on Tuesday, December 10, 2024 at 16:00 UTC in the #core-performance channel in Slack.

        #core-performance, #hosting, #performance, #performance-chat, #summary