{"id":123107,"date":"2026-05-08T01:02:56","date_gmt":"2026-05-08T01:02:56","guid":{"rendered":"https:\/\/make.wordpress.org\/core\/?p=123107"},"modified":"2026-05-08T01:02:57","modified_gmt":"2026-05-08T01:02:57","slug":"results-real-time-collaboration-performance-testing-analysis","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/core\/2026\/05\/08\/results-real-time-collaboration-performance-testing-analysis\/","title":{"rendered":"Results: Real Time Collaboration performance testing analysis"},"content":{"rendered":"<p class=\"has-large-font-size wp-block-paragraph\">Following the decision to <a href=\"https:\/\/make.wordpress.org\/core\/2026\/05\/08\/rtc-removed-from-7-0\/\">remove real-time collaboration from WordPress 7.0,<\/a> this post summarizes what the latest hosting test data showed and outlines the recommended storage strategy for future iteration. A huge thank you to every web host that submitted results in response to last week\u2019s call for testing. Submissions came in from eight hosting environments between April 29 and May 4, and analysis of the aggregated, anonymized data is now complete. Based on the results, the recommendation is to use <code>custom-table-with-transients<\/code> as the default RTC storage strategy for continued testing and future iteration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As a reminder, four candidate storage strategies for the <a href=\"https:\/\/make.wordpress.org\/core\/2026\/03\/10\/real-time-collaboration-in-the-block-editor\/\">Real Time Collaboration (\u201cRTC\u201d)<\/a> feature were tested under load:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>post-meta<\/code> \u2014 the RC2 baseline.<\/li>\n\n\n\n<li><code>custom-table<\/code> \u2014 a dedicated table for all RTC data.<\/li>\n\n\n\n<li><code>post-meta-transients<\/code> \u2014 post <span tabindex='0' class='glossary-item-container'>meta<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Meta<\/span> <span class='glossary-item-description'>Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress.<\/span><\/span><\/span> for storage with transients for client awareness.<\/li>\n\n\n\n<li><code>custom-table-with-transients<\/code> \u2014 a dedicated table with an object cache-backed awareness (Note: while contributors have been referring to this as a transient approach, it is a convenient short hand rather than a technical description)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The test runner captured per-request REST dispatch time and database query counts during sustained 30-second polling windows. Eight complete captures from a mix of shared, shared-with-Redis, managed-cloud, and no-object-cache environments form the basis of the analysis below.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What the data showed<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Across the cohort, <strong><code>custom-table-with-transients<\/code> was first or tied-first on six of seven complete environments<\/strong>, and was never slower than the RC2 baseline (<code>post-meta<\/code> approach). On average, the <code>custom-table-with-transients<\/code> approach was ~52% faster and the purely <code>custom-table<\/code> approach was ~37% faster than the current implementation. On hosts without a persistent object cache, it landed within 0.05\u20130.17 ms of plain <code>custom-table<\/code>\u2014close enough that the two are effectively tied where caching is absent.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Two clean signals showed up in the database query counts during dispatch:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>With a persistent object cache present, both transient-based strategies dropped to a single database query per dispatch.<\/li>\n\n\n\n<li>Independent of caching, the <code>custom-table<\/code> schema cut the query count roughly in half compared to the post-meta strategies.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><code>custom-table-with-transients<\/code> wins because it gets the schema reduction when caching is absent, and the cache reduction when it\u2019s present. <code>post-meta-transients<\/code>, by contrast, is not recommended even as a fallback. It nearly doubles in latency without a persistent cache, and on one no-cache shared environment it exhibited a pathological transient code path that pushed dispatch latency past 26 ms \u2014 several times worse than any other strategy on that host.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Recommendation for the future<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The recommended storage strategy\u00a0<code>custom-table-with-transients<\/code> is considered the best case among the candidates. It wins decisively on environments with a persistent object cache, remains comfortably ahead of the baseline on environments without one, and degrades gracefully across the full spread of hosting tiers represented in the data.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Read the full analysis<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The full anonymized analysis\u2014including per-environment dispatch tables, query counts, cross-cuts comparing cache effects, and bootstrap floors\u2014is available <a href=\"https:\/\/gist.github.com\/dd32\/bd15729b7de1e842cc8de9b2f875a63f\">here<\/a>. All submissions remain anonymized in line with the commitment made in the original call for testing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Summary<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The data from this testing window was sufficient to make the call confidently: <code>custom-table-with-transients<\/code> is the best option forward as the default for real time collaboration. When work resumes after clean up from 7.0, this is the approach best positioned to explore more deeply next. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Thank you again to every host that participated. Your contributions provided the data needed to make this storage recommendation and will help set real-time collaboration up for success across the wide range of environments where WordPress runs. Props to Ionos, BlueHost, Kinsta, XServer, and <span tabindex='0' class='glossary-item-container'>WordPress.com<span class='glossary-item-hidden-content'><span class='glossary-item-header'>WordPress.com<\/span> <span class='glossary-item-description'>An online implementation of WordPress code that lets you immediately access a new WordPress environment to publish your content.  WordPress.com is a private company owned by Automattic that hosts the largest multisite in the world. This is arguably the best place to start blogging if you have never touched WordPress before. <a href=\"https:\/\/wordpress.com\/\">https:\/\/wordpress.com\/<\/a><\/span><\/span><\/span> for their contributions here. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Props to <a href=\"https:\/\/profiles.wordpress.org\/griffbrad\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>griffbrad<\/a> for drafting this post. Props to <a href=\"https:\/\/profiles.wordpress.org\/dd32\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>dd32<\/a> <a href=\"https:\/\/profiles.wordpress.org\/desrosj\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>desrosj<\/a> <a href=\"https:\/\/profiles.wordpress.org\/jmdodd\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>jmdodd<\/a> <a href=\"https:\/\/profiles.wordpress.org\/peterwilsoncc\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>peterwilsoncc<\/a> <a href=\"https:\/\/profiles.wordpress.org\/jorbin\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>jorbin<\/a> <a href=\"https:\/\/profiles.wordpress.org\/4thhubbard\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>4thhubbard<\/a> for testing, analysis, and review. If I missed your name, please tell me as it\u2019s a mistake and there have been a lot of moving pieces.<\/em><\/p>\n<p class=\"o2-appended-tags\"><a href=\"https:\/\/make.wordpress.org\/core\/tag\/feature-real-time-collaboration\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>feature-real-time-collaboration<\/a><\/p><nav class='o2-post-footer-actions'><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><a href=\"https:\/\/login.wordpress.org\/?redirect_to=https%3A%2F%2Fmake.wordpress.org%2Fcore%2F2026%2F05%2F08%2Fresults-real-time-collaboration-performance-testing-analysis%2F%23respond&#038;locale=en_US\" title=\"Login to Reply\"  class=\"genericon  genericon-reply\"  data-action=\"login-to-reply\"  data-actionstate=\"default\" >Login to Reply<\/a><\/li><\/ul><div class='o2-post-footer-action-likes'><\/div><ul class='o2-post-footer-action-row'><\/ul><\/nav>","protected":false},"excerpt":{"rendered":"<p>Following the decision to remove real-time collaboration from WordPress 7.0, this post summarizes what the latest hosting test data showed and outlines the recommended storage strategy for future iteration. A huge thank you to every web host that submitted results in response to last week\u2019s call for testing. Submissions came in from eight hosting environments [&hellip;]<\/p>\n","protected":false},"author":13782018,"featured_media":123121,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1175,1176],"tags":[5833],"class_list":["post-123107","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-general","category-summaries","tag-feature-real-time-collaboration","mentions-4thhubbard","mentions-dd32","mentions-desrosj","mentions-griffbrad","mentions-jmdodd","mentions-jorbin","mentions-peterwilsoncc","author-annezazu"],"revision_note":"","jetpack_featured_media_url":"https:\/\/make.wordpress.org\/core\/files\/2026\/05\/Real-Time-Collaboration-performance-testing-analysis-featured-image.png","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2AvED-w1B","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/123107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/13782018"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?post=123107"}],"version-history":[{"count":5,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/123107\/revisions"}],"predecessor-version":[{"id":123120,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/123107\/revisions\/123120"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media\/123121"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media?parent=123107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories?post=123107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags?post=123107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}