WordPress 6.8 performance improvements

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

Sponsored
Sponsored
A WordPress Commenter

Recent Posts

Cloudways Brings Back Prepathon Next Week With Focus on Gen Z and Gen Alpha

Cloudways is bringing back its free Prepathon online event next week, from September 30 to…

2 days ago

Fueled Layoffs Spark Tension After Former Employee Pre-Empts Announcement

Fueled has confirmed layoffs this week, cutting 4–5% of its workforce. But the news reached…

3 days ago

Nick Hamze’s ‘Cool Kids’ Post Kicks Off Fresh Debate on WordPress’s Image Problem

After calling for “more weirdness” in WordPress theme design earlier this year, Nick Hamze has…

4 days ago

New FAIR 1.0 Release Brings Decentralized Package Management to WordPress

FAIR has reached its first major milestone with the release of version 1.0 this week,…

4 days ago

Performance Chat Summary: 23 September 2025

The full chat log is available beginning here on Slack. WordPress Performance Trac tickets @westonruter…

5 days ago

From RV Life to CEO: Jon Penland’s Unlikely Road to Leading Kinsta

Back in 2011, Jon Penland was selling centrifugal pumping units into the water and wastewater…

6 days ago