WordPress 6.4 is the third major release of the year that delivers a better user experience to site visitors by improving performance of the core software. This version improves server response time by ~4% over version 6.3.2. This, combined with additional frontend optimizations, leads to improvements to Largest Contentful Paint (LCP)—an important Core Web Vital. For example, Twenty Twenty-One (a classic theme) shows an improvement of ~4% for LCP and Twenty Twenty-Three (a block theme) shows a ~9% LCP improvement when run on WordPress 6.4 compared with 6.3.2 based on benchmarks conducted by the WordPress Performance team.
This release caps off an ambitious year of work for the Performance Team, with major improvements made in each release. You can read more about those improvements in the performance improvement summary posts for version 6.2and version 6.3. While version 6.2 focused on server side improvements, and 6.3 focused more on client side improvements, this release was focused on continuing server side improvements while further optimizing and extending the improvements that were made earlier in the year. Meanwhile, the team continued iterating on the tools and methodologies used to measure and report on performance.
Performance highlights for this release
An overview of the performance enhancements in this release is included in the WordPress 6.4 Field Guide and you can read details about the following highlights in their individual dev-note posts:
Server side improvements
- Improvements to object caching in WordPress 6.4
- New option functions in WordPress 6.4
- Improvements to template loading in WordPress 6.4
Client side improvements
- Image loading optimization enhancements in WordPress 6.4
- Script loading changes in WordPress 6.4
- Replacing hard coded style tags with wp_add_inline_style
Evolving our benchmarking methodology
Previous performance benchmarks reported for each release were taken by @flixos90 (the performance release lead) on his own computer, using a standardized set of best practices and tools. This release we have attempted to automate the process in order to establish a reproducible methodology that can be used by any contributor using a standard set of tools.
The process for this release uses the compare-wp-performance GitHub action, originally developed by @swissspidy, which sets up two standard test sites using wp-env inside of a GitHub worker, takes a set of metrics based on 100 requests, and reports them in the action summary (example). To account for variance between each run, this is done 5 times and the median values are used for reporting purposes.
Revisiting previous releases
Since the testing environment has an important impact on performance benchmarks, we wanted to revisit the previous versions from this year and apply the same methodology for comparison. Each of the following metrics show the percentage the metric either improved (negative numbers) or got worse (positive numbers) between versions.
WordPress 6.2.3 vs 6.1.4
- LCP: +2.87%
- Server Timing -4.21%
- LCP: -4.72%
- Server Timing -18.15%
WordPress 6.3.2 vs 6.2.3
- LCP: -10.82%
- Server Timing -3.34%
- LCP: -14.23%
- Server Timing -10.21%
WordPress 6.4.0 vs 6.3.2
- LCP: -3.95%
- Server Timing -4.05%
- LCP: -9.06%
- Server Timing -4.59%
Detailed data can be found in this spreadsheet, with links to the individual GitHub workflows.
While the methodology used for this release is an improvement over the previous process, there is much room for improvement, including finding ways to stabilize the metrics collected during benchmarks for releases and during development, improving the test content and use cases we test for these benchmarks, testing different configurations and environment characteristics (e.g., PHP versions, persistent object cache, etc.).