<div style="text-align:center"></div><div>
<p><em>This post is the latest in a series of updates focused on the performance improvements of major releases (see <a href="https://make.wordpress.org/core/2024/12/10/wordpress-6-7-performance-improvements/">6.7</a>, <a href="https://make.wordpress.org/core/2024/07/29/wordpress-6-6-performance-improvements/">6.6</a>, <a href="https://make.wordpress.org/core/2024/04/23/wordpress-6-5-performance-improvements/">6.5</a>, <a href="https://make.wordpress.org/core/2023/11/13/wordpress-6-4-performance-improvements/">6.4</a>, <a href="https://make.wordpress.org/core/2023/08/07/wordpress-6-3-performance-improvements/">6.3</a>, and <a href="https://make.wordpress.org/core/2023/04/05/wordpress-6-2-performance-improvements-for-all-themes/">6.2</a>).</em></p>
<p><a href="https://wordpress.org/news/2025/04/cecil/">WordPress 6.8, “Cecil”</a> is the first and likely only major version WordPress released in 2025. It includes numerous significant performance improvements to the editing and browsing experience, spearheaded by the speculative loading feature. The release pays special attention to performance in the block editor, frontend interactivity, block type registration, and query caching.</p>
<p>This post summarizes the performance changes since the 6.7 release, both in terms of enhancements and concrete metrics. For a comprehensive overview of new features and enhancements beyond just performance, please explore the <a href="https://make.wordpress.org/core/2025/03/28/wordpress-6-8-field-guide/">WordPress 6.8 Field Guide</a>.</p>
<h2 class="wp-block-heading">Key improvements</h2>
<p>In total, there were <a href="https://core.trac.wordpress.org/query?status=closed&#038;focuses=~performance&#038;milestone=6.8">24 performance related improvements</a> included in this release: 1 feature, 14 enhancements, and 9 bug fixes. This section summarizes a few highlights among them.</p>
<h3 class="wp-block-heading">Speculative loading for near-instance page loads</h3>
<p>In <a href="https://core.trac.wordpress.org/ticket/62503">#62503</a>, the speculative loading feature was added. It can notably improve the <a href="https://web.dev/articles/lcp">Largest Contentful Paint (LCP)</a> performance and, depending on the configuration, lead to truly instant page loads. To accomplish this, the feature uses the <a href="https://wicg.github.io/nav-speculation/speculation-rules.html">Speculation Rules API</a>, a web platform API that allows defining rules for which kinds of URLs to prefetch or prerender, and how eagerly speculative loading should occur. By default, URLs are prefetched when the user interacts with a link to them (“conservative” eagerness). For an additional performance boost, up to the instant page loads, the configuration can be adjusted through filters or by using the canonical <a href="https://wordpress.org/plugins/speculation-rules/">Speculative Loading plugin</a>.</p>
<p>Please refer to the <a href="https://make.wordpress.org/core/2025/03/06/speculative-loading-in-6-8/">Speculative Loading dev note</a> for details on the feature’s behavior and how to customize it.</p>
<h3 class="wp-block-heading">Asynchronous Interactivity API event listeners by default for smoother interactions</h3>
<p>In Gutenberg issue <a href="https://github.com/WordPress/gutenberg/issues/64944">#64944</a>, the foundation was set for asynchronous event listeners by default for the Interactivity API. Running event listener logic asynchronously helps avoid long tasks in the browser, which can notably improve the <a href="https://web.dev/articles/inp">Interaction to Next Paint (INP)</a> performance and thus ensure the website responds to user interactions without any delays. WordPress 6.8 does not actually implement this change just yet, but it prepares for the change to launch in a following release by introducing a <code>withSyncEvent()</code> utility function that needs to be used by any Interactivity API store action that is attached to an event and needs to run synchronously.</p>
<p>Please refer to the <a href="https://make.wordpress.org/core/2025/03/24/interactivity-api-best-practices-in-6-8/">Interactivity API best practices dev note</a> for details on how to use <code>withSyncEvent()</code> and how to avoid deprecation warnings.</p>
<h3 class="wp-block-heading">Smarter <code>WP_Query</code> cache key generation for increased cache hit chance</h3>
<p>In <a href="https://core.trac.wordpress.org/ticket/59516">#59516</a>, the logic around generating a cache key for post queries via <code>WP_Query</code> was improved to increase the chance for a cache hit. In other words, it reduces the need to run SQL queries for queries that are sure to yield the same results even though their query variables may technically differ. In particular, any query variables that expect arrays in which the order of items does not matter are now being normalized prior to generating the cache key.</p>
<h3 class="wp-block-heading"><code>count_user_posts()</code> caching to avoid potentially slow queries</h3>
<p>In <a href="https://core.trac.wordpress.org/ticket/39242">#39242</a>, caching was added to the <code>count_user_posts()</code> function to avoid a SQL query that in certain setups could previously occur on every page load. On sites with many registered users, this query can be slow, which is why caching its results can lead to a notable server-side performance boost. While this primarily applies to WP Admin, certain themes also call this function, so it can have a notable impact on the website’s frontend performance as well.</p>
<h3 class="wp-block-heading"><code>get_option()</code> performance regression from WordPress 6.4 identified and addressed</h3>
<p>In <a href="https://core.trac.wordpress.org/ticket/62692">#62692</a>, a performance regression due to a problem introduced in WordPress 6.4 in the <code>get_option()</code> function was identified and fixed. The lookup of a non-existent option was leading to an unnecessary <code>wp_cache_get()</code> call that would always evaluate to <code>false</code>. For large WordPress sites, this could significantly increase the load on caching servers. The fix ensures the unnecessary <code>wp_cache_get()</code> call no longer happens, leading to a constant number of <code>wp_cache_get()</code> calls per non-existent option, even if it is requested many times.</p>
<h2 class="wp-block-heading">Performance metrics</h2>
<p>The performance benchmarks for the WordPress 6.8 release show a small regression in both server-side performance and client-side performance across block themes and classic themes.</p>
<p>The median Largest Contentful Paint (LCP) time, which is the metric most representative of the <em>overall</em> performance, increased by 3.40 ms (1.76%) for Twenty Twenty-One, 2.65 ms (1.92%) for Twenty Twenty-Three, and 10.05 ms (1.73%) for Twenty Twenty-Five. The increased time signifies a decrease in performance, albeit a small one.</p>
<p>While it is natural that every new feature or enhancement can incur a performance cost, ideally the regression needs to be investigated for whether there is a specific change that is primarily responsible for it or whether it is simply due to the accumulation of several new features and enhancements with a minor performance cost. At first glance, it might be the latter because a similar degree of regression can be noted more or less across all metrics.</p>
<p>It is worth noting that the performance metrics do not benefit from the new speculative loading feature, since it only helps with performance when navigating from one URL of the site to another URL of the site. Because the benchmarks rely on individual requests to specific URLs though, speculative loading does not trigger. In other words, it is fair to assume that the actual performance impact of WordPress 6.8 for users navigating through a WordPress site is more positive than the benchmarks indicate.</p>
<h3 class="wp-block-heading">How release performance is measured</h3>
<p>The performance measurements used for the overview are based on benchmarks conducted using an <a href="https://github.com/felixarntz/compare-wp-performance">automated workflow</a> on GitHub action runners. Benchmarks were taken from the homepage of the Twenty Twenty-One, Twenty Twenty-Three, and Twenty Twenty-Five themes, comparing WordPress 6.8-RC3 with WordPress 6.7.2, which was the latest version of 6.7 available as of the 6.8 release.</p>
<p>Under the hood, the automated workflow collects performance metrics from 100 runs for both <a href="https://make.wordpress.org/performance/handbook/measuring-performance/benchmarking-overall-performance-with-web-vitals/">Web Vitals</a> and <a href="https://make.wordpress.org/performance/handbook/measuring-performance/benchmarking-php-performance-with-server-timing/">Server Timing metrics</a> using <a href="https://github.com/GoogleChromeLabs/wpp-research/tree/main/cli">CLI scripts from the WPP Research repo</a>.</p>
<h3 class="wp-block-heading">Full benchmark data</h3>
<ul class="wp-block-list">
<li>Twenty Twenty-One:
<ul class="wp-block-list">
<li><a href="https://docs.google.com/spreadsheets/d/1tWP6tiK8LAAAI61W09qp2fpHRVBBu3sBuRvmnPT0DIA/edit?gid=0#gid=0">Web Vitals</a></li>
<li><a href="https://docs.google.com/spreadsheets/d/1tWP6tiK8LAAAI61W09qp2fpHRVBBu3sBuRvmnPT0DIA/edit?gid=1697719143#gid=1697719143">Server Timing</a></li>
</ul>
</li>
<li>Twenty Twenty-Three:
<ul class="wp-block-list">
<li><a href="https://docs.google.com/spreadsheets/d/1tWP6tiK8LAAAI61W09qp2fpHRVBBu3sBuRvmnPT0DIA/edit?gid=389950389#gid=389950389">Web Vitals</a></li>
<li><a href="https://docs.google.com/spreadsheets/d/1tWP6tiK8LAAAI61W09qp2fpHRVBBu3sBuRvmnPT0DIA/edit?gid=1435582677#gid=1435582677">Server Timing</a></li>
</ul>
</li>
<li>Twenty Twenty-Five:
<ul class="wp-block-list">
<li><a href="https://docs.google.com/spreadsheets/d/1tWP6tiK8LAAAI61W09qp2fpHRVBBu3sBuRvmnPT0DIA/edit?gid=1088812162#gid=1088812162">Web Vitals</a></li>
<li><a href="https://docs.google.com/spreadsheets/d/1tWP6tiK8LAAAI61W09qp2fpHRVBBu3sBuRvmnPT0DIA/edit?gid=1683322685#gid=1683322685">Server Timing</a></li>
</ul>
</li>
</ul>
<h2 class="wp-block-heading">What’s next?</h2>
<p>Once WordPress 6.8 has been used for at least a month, additional research should be conducted to assess its performance impact in the field by using <a href="https://developer.chrome.com/docs/crux">CrUX</a> data. This will clarify to what extent the regression shown by the benchmarks is an actual reason to worry or not. Additionally, the performance impact of the speculative loading feature should be assessed as part of that, to see how much it influences LCP in practice.</p>
<p>Other than that, the focus of the Core Performance Team remains to iterate on the performance of WordPress by identifying areas of improvement and addressing them. With the <a href="https://make.wordpress.org/core/2025/04/04/dotorg-core-committers-check-in/">reduced major release cadence</a> following the 6.8 release, it may be even more important to focus on all the little things that can be done to improve performance—they add up. Minor releases will continue to ship as necessary, and as mentioned in the linked post there will be a more relaxed barrier for inclusion of enhancements. In other words, WordPress Core continues to provide lots of opportunities for improving its performance.</p>
<p class="has-text-align-right"><em>Props <a href="https://profiles.wordpress.org/joemcgill/" class="mention"><span class="mentions-prefix">@</span>joemcgill</a> for review and proofreading.</em></p>
<p class="o2-appended-tags"><a href="https://make.wordpress.org/core/tag/6-8/" class="tag"><span class="tag-prefix">#</span>6-8</a>, <a href="https://make.wordpress.org/core/tag/core/" class="tag"><span class="tag-prefix">#</span>core</a>, <a href="https://make.wordpress.org/core/tag/core-performance/" class="tag"><span class="tag-prefix">#</span>core-performance</a>, <a href="https://make.wordpress.org/core/tag/performance/" class="tag"><span class="tag-prefix">#</span>performance</a></p>
</div>

Cloudways is bringing back its free Prepathon online event next week, from September 30 to…
Fueled has confirmed layoffs this week, cutting 4–5% of its workforce. But the news reached…
After calling for “more weirdness” in WordPress theme design earlier this year, Nick Hamze has…
FAIR has reached its first major milestone with the release of version 1.0 this week,…
The full chat log is available beginning here on Slack. WordPress Performance Trac tickets @westonruter…
Back in 2011, Jon Penland was selling centrifugal pumping units into the water and wastewater…