Dev Chat summary: May 6, 2026

Startย of the meeting 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/, facilitated by @audrasjb ๐Ÿ”— Agenda post.

Announcements ๐Ÿ“ข

WordPress 7.0 Updates

  • RC3 (โ€œnew Beta 1โ€) scheduled for this Friday, May 8th
  • Call for RTC testing from hosts. Submissions still welcome. Thank you to Bluehost, Kinsta, XServer, GoDaddy,WordPress.comWordPress.com 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. https://wordpress.com/, Ionos, and any other hosts for helping test RTC.
  • A decision about RTC introduction is about to be finalized (and it was finalized). See ticketticket Created for both bug reports and feature development on the bug tracker. #64696.

General

Discussion ๐Ÿ’ฌ

@desrosj noticed there are still 37 open tickets in milestone 7.0 and that the statuts of the about page ticket (#64536) wasnโ€™t clear.

@jorbin proposed to run a dedicated 7.0 scrub after the chat.

@juanmaguitar will host a dedicated 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/ scrub on Thursday.

@jorbin and @audrasjb asked about the Field GuideField guide The field guide is a type of blogpost published on Make/Core during the release candidate phase of the WordPress release cycle. The field guide generally lists all the dev notes published during the beta cycle. This guide is linked in the about page of the corresponding version of WordPress, in the release post and in the HelpHub version page. timeline. It is currently under review and should be published ASAP.


@joefusco asked: โ€œIs there a process for getting systems team feedback on the RTC custom table?ย  The code and testing infrastructure are ready, including a standalone testing 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. that can run on production sites without changes to trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision..ย  Iโ€™m not sure who to direct this to or what the next gate is in the process.โ€

@desrosj answered the systems team has been involved with the discussions and I know that they have been testing.

@joefusco replied โ€œMainly whether there are any outstanding concerns with the table structure or the approach that would prevent it from landing in 7.0.ย  Also, is there a documented process for new table proposals that require systems review?ย  This wonโ€™t be the last time a feature needs a schema change, and it would help future contributors know the path.โ€

Several attendees noted that itโ€™s likely not worth the effort to formalize a process, as that kind of change doesnโ€™t occur regularly.

#7-0, #core, #core-editor, #dev-chat

Results: Real Time Collaboration performance testing analysis

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โ€™s 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 custom-table-with-transients as the default RTC storage strategy for continued testing and future iteration.

As a reminder, four candidate storage strategies for the Real Time Collaboration (โ€œRTCโ€) feature were tested under load:

  • post-meta โ€” the RC2 baseline.
  • custom-table โ€” a dedicated table for all RTC data.
  • post-meta-transients โ€” post metaMeta 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. for storage with transients for client awareness.
  • custom-table-with-transients โ€” 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)

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.

What the data showed

Across the cohort, custom-table-with-transients was first or tied-first on six of seven complete environments, and was never slower than the RC2 baseline (post-meta approach). On average, the custom-table-with-transients approach was ~52% faster and the purely custom-table approach was ~37% faster than the current implementation. On hosts without a persistent object cache, it landed within 0.05โ€“0.17 ms of plain custom-tableโ€”close enough that the two are effectively tied where caching is absent.

Two clean signals showed up in the database query counts during dispatch:

  1. With a persistent object cache present, both transient-based strategies dropped to a single database query per dispatch.
  2. Independent of caching, the custom-table schema cut the query count roughly in half compared to the post-meta strategies.

custom-table-with-transients wins because it gets the schema reduction when caching is absent, and the cache reduction when itโ€™s present. post-meta-transients, 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 โ€” several times worse than any other strategy on that host.

Recommendation for the future

The recommended storage strategyย custom-table-with-transients 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.

Read the full analysis

The full anonymized analysisโ€”including per-environment dispatch tables, query counts, cross-cuts comparing cache effects, and bootstrap floorsโ€”is available here. All submissions remain anonymized in line with the commitment made in the original call for testing.

Summary

The data from this testing window was sufficient to make the call confidently: custom-table-with-transients 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.

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 WordPress.comWordPress.com 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. https://wordpress.com/ for their contributions here.

Props to @griffbrad for drafting this post. Props to @dd32 @desrosj @jmdodd @peterwilsoncc @jorbin @4thhubbard for testing, analysis, and review. If I missed your name, please tell me as itโ€™s a mistake and there have been a lot of moving pieces.

#feature-real-time-collaboration

Whatโ€™s new in Gutenberg 23.1? (07 May)

Whatโ€™s new 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/ 23.1? (07 May)

โ€œWhatโ€™s new in Gutenbergโ€ฆโ€ posts (labeled with the #gutenberg-new tag) are posted following every Gutenberg release on a biweekly basis, showcasing new features included in each release. As a reminder, hereโ€™s an overview of different ways to keep up with Gutenberg and the Editor.

Whatโ€™s New In
Gutenberg 23.1?

Gutenberg 23.1 has been released and is available for download!

This release introduces two new experiments aimed at managing content inside the editor. A Custom Taxonomies management screen lets you create and edit taxonomies from Settings, and a new Media Editor brings better image manipulation into the WordPress media flow. Outside of the editor, the @wordpress/ui package gains new compound primitives, Drawer and Autocomplete, alongside overlay polish. Other changes include an experiment to hide the classic 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. from the inserter, parallel thumbnail uploads, an early developer preview of @wordpress/grid, and a batch of real-time collaboration reliability fixes.

Faster image upload finalization

Sideload requests for an imageโ€™s generated thumbnail sizes used to run sequentially within a single upload. They now run in parallel up to the existing concurrency limit, which speeds up upload completion. (#75888)

The speed improvement is most noticeable on bulk uploads via the Gallery block, large images, and slower connections.

@wordpress/ui primitives

The @wordpress/ui package gains two new primitives and polish across overlay components.

Two new compound primitives ship in 23.1:

  • Drawer, for slide-in side panels and bottom sheets. (#76690)
  • Autocomplete, a low-level form primitive for combobox-style inputs. (#77642)

Other polish across overlay components:

  • The Dialog component gains a new Description subcomponent, plus several tweaks to its spacing and typography to align it better with Drawer. Additionally, its Backdrop only dims the page when the Dialog is modal. (#77194)
  • Dialog, AlertDialog, and Drawer now support sticky headers and footers when their content scrolls vertically. (#77559)
  • All overlays *.Popup subcomponents gain a new portal prop which, combined with new optional *.Portal subcomponents, allows for better customization of the portaling behavior. (#77452)

Other Notable Highlights

  • Custom Taxonomies management (Experiment). An experimental UIUI User interface for managing custom taxonomies inside WordPress adminadmin (and super admin). With the โ€œContent types: manage custom taxonomiesโ€ experiment enabled, a new Taxonomies screen lets you create, edit, activate or deactivate, and delete taxonomies without writing PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher. Enable it via Gutenberg โ†’ Experiments โ†’ โ€œContent types: manage custom taxonomiesโ€, then visit Settings โ†’ Taxonomies. (#77497, #77524, #77657, #77697)
  • Image Editor with Freeform Cropper (Experiment). A new experimental Image Editor modal for image manipulation in the Block Editor. The modal enables freeform cropping and other manipulation tools for Image and Site Logo blocks. To test it out, enable the experiment via Gutenberg โ†’ Experiments โ†’ Media Editor Modal, then, in the editor, click on the Crop icon in the block toolbar. (#77479, #77537, #77540, #77585, #77641)
  • Disable Classic Block from the inserter. The โ€œDisable TinyMCEโ€ experiment was refocused and landed to disable the Classic block from the inserter. The reason for the change is that removing TinyMCE everywhere broke too many existing flows. Existing Classic block instances continue to work normally, since the change only affects the inserter. A new wp_classic_block_supports_inserter filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. was introduced to allow controlling this behavior. (#77747, #77838, #77840, #77845, #77911)
  • @wordpress/grid package (developer preview). A new @wordpress/grid package introduces DashboardGrid, a two-dimensional grid component with drag-to-reorder and resize handles for dashboard-style surfaces. The package is in active development, and the 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. is expected to evolve in upcoming releases. (#77562)
  • Real-time Collaboration reliability improvements. Several fixes improve RTC reliability and load behavior. The โ€œConnection Lostโ€ dialog no longer appears when a page registers more sync rooms than the serverโ€™s per-request cap. A client/server size-check mismatch that could reject large Yjs updates has been corrected. When two offline users reconnect and both push compactions, they no longer end up in a divergent state. Sync observers also attach after the persisted CRDT document is hydrated, which avoids redundant block re-parsing during editor load. (#77631, #77669, #77980, #77966)

Changelog

Features

  • Upload Media: Enable concurrent sideload uploads. (75888)
  • Experimental Image Cropper: Tweak the keyboard interactions with drag handles and canvas. (77639)
  • Admin UI: Change default heading level from h2 to h1. (77617)
  • CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Data: Remove redundant memoization wrapper from โ€˜getQueriedItemsโ€™. (77483)
  • I18Ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.: Polyfill script module translations for WordPress < 7.0. (77214)

Enhancements

  • Storybook: Add global preview styles for @wordpress/ui overlays. (77451)
  • Widgets: Add 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.-types data layer. (77752)

Components

  • Admin UI: Add visual prop to Page headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitorโ€™s opinion about your content and you/ your organizationโ€™s brand. It may also look different on different screen sizes. component. (76469)
  • Admin UI: Ensure consistent header spacing with and without actions. (76683)
  • Admin UI: Use UI Text component in header. (77372)
  • DataForm: Render field description as help text in the array control. (77554)
  • ExternalLink: Align appearance with Link from @wordpress/ui. (77790)
  • Link: Honor openInNewTab consistently. (77422)
  • Menu popover render + surface/motion split. (77460)
  • Refactor Admin UI / Breadcrumbs to use DS components and design tokens. (77012)
  • UI: Add Drawer primitive. (76690)
  • UI: Portal prop and Portal subcomponents for overlay Popups. (77452)
  • UI: Upgrade title validation to cleanup-based re-validation. (77165)
  • UI: Use Text in Notice.ActionLink typography. (77332)
  • FormTokenField: Add help prop to render additional help text below the field. (77552)
  • design-system-mcp: Add new package for design system MCP tooling. (77159)
  • ui/Dialog, ui/AlertDialog, ui/Drawer: Support sticky header and footer. (77559)
  • ui: Forward style and className on *.Popup to inner Base UI Popup. (77693)
  • ui: Uniform title and description styles across overlays. (77692)
  • ui: Unify hairline border across overlay popups. (77691)

Post Editor

  • Notes: Compute note positions centrally in useFloatingBoard. (77433)
  • Notes: Refactor internals into smaller components. (77614)
  • Notes: Refactor to use new โ€˜wordpress/uiโ€™ components. (77589)

Block Library

  • Ensure Post Template fallback styles donโ€™t apply when minimumColumnWidth is defined. (77411)
  • Tabs: Handle duplicating tabs. (76449)
  • Tabs: Rename tabs blocks to follow WCAGWCAG WCAG is an acronym for Web Content Accessibility Guidelines. These guidelines are helping make sure the internet is accessible to all people no matter how they would need to access the internet (screen-reader, keyboard only, etc) https://www.w3.org/TR/WCAG21/. Tabs pattern. (77418)

Block Editor

  • Embed: Restore paragraph with URLURL A specific web address of a website or web page on the Internet, such as a websiteโ€™s URL www.wordpress.org when undoing paste-to-embed transform. (77551)
  • UI: Add Autocomplete primitive. (77642)

New APIs

  • Add @wordpress/grid package. (77562)

Guidelines

  • Extract initial public API methods. (77643)
  • Split singleton REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think โ€œphone appโ€ or โ€œwebsiteโ€) can communicate with the data store (think โ€œdatabaseโ€ or โ€œfile systemโ€) https://developer.wordpress.org/rest-api/ into dedicated /content-guidelines route. (77734)

Bug Fixes

  • Core Abilities: Export initialization promise as ready. (77254)
  • Disable Custom CSSCSS Cascading Style Sheets. command for non-block themes. (77685)
  • Grid: Fix width: 'fill' when tiles span multiple rows. (77769)
  • Tests: Connectors point to the right page. (77272)
  • 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.: Gutenberg Experiments: Ensure the experiment is active before outputting flags. (77728)
  • Connectors: Treat networknetwork (versus site, blog)-active plugins as active. (77661)
  • Command Palette: Fix macOs label for sites unable to determine UA via PHP. (77638)
  • Design Tools: viewport visibility โ€” use โ€˜keyโ€™ instead of โ€˜valueโ€™ for device type. (77410)
  • Layout: Ensure layout classnames are applied to the inner blocks wrapper and not to its siblings. (77408)
  • Global Styles: Fix pseudo selector block style rendering in the editor. (76879)
  • Data Layer: Media โ€” move image output format filtering to upload response. (75793)
  • Media Upload Modal: Fix pagination and search. (77872)

Block Library

  • Embed: Fix variation upgrade undo trap. (77546)
  • Accordion: Add missing dimension controls and limited customization. (77780)
  • Featured ImageFeatured image A featured image is the main image used on your blog archive page and is pulled when the post or page is shared on social media. The image can be used to display in widget areas on your site or in a summary list of posts.: Change toggle label to โ€˜Make image a linkโ€™. (71931)
  • Image: Preserve aspectRatio and scale when switching to wide/full alignment. (76914)
  • Form blocks: Update block categories for form, form-input, form-submission-notification, and form-submit-button. (61916)
  • Image: Fix non-local image ID removal undo trap. (77367)
  • Latest Comments: Fix uneven padding causing mis-alignment. (77379)
  • Tabs: Add classic theme styles to reset button defaults. (77607)
  • Tabs: Lock top-level structure and disable visibility controls. (77370)
  • Video Block: Update z-index for tracks popover to ensure proper stacking context. (77517)

Components

  • CollapsibleCard: Prevent focus ring clipping by content overflow. (77667)
  • Add cursor pointer to the ariakit menu item component. (70412)
  • Link: Remove underline from unstyled icon links. (77420)
  • Storybook: Fix โ€˜Open sourceOpen Source Open Source denotes software for which the original source code is made freely available and may be redistributed and modified. Open Source **must be** delivered via a licensing model, see GPL. fileโ€™ links for storybook-local stories. (76758)
  • Storybook: Fix component descriptions in manifest files. (77112)
  • Text: Apply both heading and paragraph CSS defenses unconditionally. (77461)
  • UI: Fix focus-trap broken by ThemeProviderโ€™s display: contents. (77381)
  • UI: Update @base-ui/react from 1.4.0 to 1.4.1. (77520)

Block Editor

  • Fix blockGap fallback handling for nested var() fallback values. (77750)
  • Block-mover: Fix button tooltip position. (77588)
  • Block-mover: Fix horizontal tooltip position. (77597)
  • Strip per-block custom CSS on save for users without edit_css. (76650)
  • Writing Flow: Fix arrow keys skipping paragraph containing link. (77474)

Post Editor

  • Edit-post: Fix back button tooltip position. (77587)
  • Lock post saving during media uploads. (76973)
  • Template parts: Make โ€˜Detachโ€™ context menu item consistent across patterns and template parts. (77581)

Client Side Media

  • Deduplicate client-side image sizes with matching dimensions. (77036)
  • Declare convert_format as boolean arg on sideload route. (77565)
  • Upload Media: Use .jpg extension for HEIC-to-JPEG client conversion. (77506)

Collaboration

  • RTC: Fix โ€œConnection Lostโ€ dialog when too many entities are loaded. (77631)
  • RTC: Fix connection-lost error on large updates caused by mismatch between update size bounds check and expanded base64 update size. (77669)
  • RTC: Fix divergence when two offline users reconnect. (77980)

AccessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility)

  • RevisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision.: Improve screen reader accessibility for diff markers region and slider. (77660)
  • Fix accessibility issues in admin Font Library. (77482)

Connectors

  • Add role="list" wrapper to connector cards for valid ARIA structure. (77689)
  • Keep focus on action Button during install. (77544)

Components

  • CollapsibleCard: Fix missing keyboard focus ring on the header chevron icon when rendered inside wp-admin. (77468)
  • Tabs: Fix missing keyboard focus ring on the panel in Windows High Contrast mode when rendered inside wp-admin. (77469)

Performance

Post Editor

  • Notes: Extract floating notes state into a dedicated store. (77424)
  • Notes: Reduce passes in useBlockComments memo and rename outputs. (77440)
  • RTC: Attach sync observers after hydrating persisted CRDT doc. (77966)

Experiments

  • Add custom taxonomies. (77497)
  • Add delete action to taxonomyTaxonomy A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies. management. (77524)
  • Dashboard: Register admin page route + sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. menu (shell). (77573)
  • Fix console errors/warnings for taxonomies. (77601)
  • Follow up improvements on taxonomies (#77497). (77567)
  • Improve taxonomies DataViews height. (77603)
  • Improve taxonomy edit action. (77605)
  • Render taxonomy status as a Badge. (77635)
  • Split status action to two actions, make them bulk-capable. (77637)
  • Taxonomies: Implement auto-fill labels. (77786)
  • Taxonomies: New package and add/edit screens. (77657)
  • Taxonomies: Add spacing above Add Taxonomy modal actions. (77523)
  • Taxonomies: Declare @wordpress/base-styles dependency. (77543)
  • Taxonomies: Warn when editing an existing taxonomyโ€™s slug. (77527)
  • User Taxonomies: REST controller. (77697)
  • User Taxonomies: Show Public field in create/edit form. (77802)
  • Disable Classic block: Control inserter support via filter. (77845)
  • Register gutenberg-dashboard-widgets flag. (77569)

Media

  • Image editor: Fix locked-ratio resize driver-axis on non-square images. (77664)
  • Image editor: Formalize cropper contract. (77668)
  • Image editor: Hold Shift while resizing to lock current aspect ratio. (77663)
  • Image editor: Reserve inner gutter so crop handles stay accessible. (77547)
  • Media Editor Modal: Render cropper in canvas for images. (77537)
  • Media Editor Modal: Save via Coreโ€™s /edit modifiers. (77641)
  • Media Editor Modal: Surface save failures as scoped snackbar notices. (77733)
  • Media Editor experiment: Add experimental image editor and cropper. (77479)
  • Media Editor: Add cropper controls to the media editor modal. (77540)
  • Media Editor: Add zoom control and hide fine rotation on narrow viewports. (77585)
  • Media editor modal: Add interactive grid. (77771)
  • Media editor: Avoid double-mount flicker on open. (77732)
  • Media editor: Confirm before discarding unsaved changes. (77730)
  • Update labels for media experiments to better clarify what they do. (77536)
  • Media Upload Modal: Add MIME type filtering to support text/vtt tracks. (77550)
  • Experimental Image Cropper: Ensure focus is on canvas when dragging. (77591)

Block Library

  • Disable TinyMCE: Warn instead of redirecting directly. (77747)
  • Site Logo Block: Enable the media editor modal experiment for the crop button. (77548)
  • Classic Block: Unwrap experiment to hide it from inserter. (77911)
  • Disable Classic block: Always register, hide from inserter conditionally. (77840)
  • Disable TinyMCE: Repurpose experiment as Classic block removal. (77838)

Post Editor

  • Image Editor experiment: Pass theme aspect ratios to media editor. (77665)
  • Media Editor Modal: Add a media editor modal experiment. (77480)

Documentation

  • Base styles: Update changelog to be clearer. (77767)
  • Docs: Add ESLint v10 migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. guide and polish documentation. (77217)
  • Docs: Update parameter type from number to int. (77519)
  • UI/Docs: Clarify package setup for custom WP Admin pages. (77338)

Code Quality

  • Adopt --wpds-cursor-control design token across the codebase. (77373, 77335, 77368, 77369, 77360, 77376, 77357, 77354, 77358)
  • Test (Integration): Migrate test/integration into @wordpress/integration-tests workspace. (77556)
  • Base Styles: Remove stale z-index entries. (77714)
  • ComplementaryArea: Inline z-index values. (77717)
  • ESLint: Consolidate configuration into tools/eslint/ workspace package. (77215)
  • Env: Minor refactoring of cacheDirectoryPath evaluation. (77799)
  • GlobalStylesUI: Remove unused CSS rule. (77456)
  • Grid: Add @types/jest devDependency. (77801)
  • Media editor: Remove unused dependency. (77438)
  • Blocks: Port over type information for @wordpress/blocks from DefinitelyTyped. (77393, 77437)
  • Refactor: Migrate tests/unit to npm workspace @wordpress/unit-tests. (77063)
  • Experiments: Declare @wordpress/base-styles dependency. (77684)
  • Data: Export and consolidate onSubKey helper. (77364)
  • Remove ZebulanStanphill from CODEOWNERS. (77586)
  • ESLint Plugin: Recommend EmptyState from @wordpress/ui. (77765)
  • Experiments: Rebuild the wp-admin Experiments screen on the wp-build routes pattern. (77443)

Components

  • Add no-unsafe-render-order ESLint rule. (77428)
  • ButtonGroup: Inline z-index. (77621)
  • Card: Remove unused CardContext. (77463)
  • CircularOptionPicker: Inline z-index values. (77715)
  • FormToggle: Inline z-index. (77619)
  • ResizableBox: Inline handle z-index. (77620)
  • Theme: Update Terrazzo packages to 2.0. (77432)
  • Tooltip: Fix flaky unit testunit test Code written to test a small piece of code or functionality within a larger application. Everything from themes to WordPress core have a series of unit tests. Also see regression.. (77751)
  • UI: Recommend Link component for use. (77505)
  • UI: Start recommending new Card components. (77423)
  • UI: Use shared style-imports types. (77388)
  • VisuallyHidden: Recommend @wordpress/ui and migrate usages. (77575)
  • ui/Tabs: Fix act() warnings in tests. (77319)
  • ui: Align WithCustomZIndex Storybook examples across overlays. (77648)

Block Library

  • Accordion: Remove invalidinvalid A resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid. isBlock prop from ToggleControl. (77776)
  • Paragraph: Refactor replacement logic in useOnEnter hook. (77383)
  • Stylelint: Add cursor-pointer rule and block-library override. (77501)
  • Tabs: Clean up Edit components. (77426)
  • Tabs: Remove redundant version field from block.json. (77417)

Post Editor

  • ESLint: Add use-import-as rule. (77389)
  • Notes: Refactor and extract offset calculation logic. (77414)
  • TypeScript: Share ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org CSS custom properties typing. (77394)
  • TypeScript: Migrate keyboard-shortcuts to TS. (76287)
  • Admin UI: Move to CSS modules and implement logical properties. (77088)

Block Editor

  • Fix import order in block-editor custom-css.js. (77566)
  • Remove stale reusable block z-index styles. (77774)

Site Editor

  • Edit Site: Move show-icon-labels handling to specific edit-site call sites. (77287)
  • EditSite: Remove unused CSS rule. (77494)

Build Tooling

  • Build: Skip sourcemaps for WASM-inlined script module workers. (75993)
  • ESLint: Introduce bulk suppressions workflow. (77392)
  • Add descriptive name for docker container images. (67827)
  • ESLint: Improve design token linting for CSS declaration strings. (77384)
  • Externalize react-dom/client. (77326)
  • Use node_modules/.bin/stylelint to avoid npm warnings on Node 24. (77512)
  • Jest setup: Remove unneeded rAF and URL polyfills. (77378)
  • Revert tsgo update (#77177) that broke trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision.. (77680)
  • wp-build: Widen optional peer dependency ranges. (77568)

Testing

  • Menu: Fix flaky submenu focus test. (77430)
  • Tests: Remove duplicate mentions spec. (77593)
  • e2e: Shorten visit-site-editor canvas-loader visible wait. (77725)
    Connectors: Stop end-to-end capabilitycapability Aย capabilityย is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on theirย role. For example, users who have the Author role usually have permission to edit their own posts (the โ€œedit_postsโ€ capability), but not permission to edit other usersโ€™ posts (the โ€œedit_others_postsโ€ capability). restriction from leaking across specs. (77857)
  • Fix PHP multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site tests. (77825)
  • RTC: Fix compaction unit test. (77986)

First-time contributors

The following PRs were merged by first-time contributors:

  • @adithya-naik: Image: Preserve aspectRatio and scale when switching to wide/full alignment. (76914)
  • @danluu: RTC: Fix connection-lost error on large updates caused by mismatch between update size bounds check and expanded base64 update size. (77669)
  • @hi0001234d: Connectors: Add role="list" wrapper to connector cards for valid ARIA structure. (77689)
  • @rajanarahul93: Featured Image: Change toggle label to โ€˜Make image a linkโ€™. (71931)
  • @vishnupprajapat: Taxonomies: Add spacing above Add Taxonomy modal actions. (77523)
  • @wwahammy: TypeScript: Migrate keyboard-shortcuts to TS. (76287)

Contributors

The following contributors merged PRs in this release:

@adamsilverstein @Adi-ty @adithya-naik @aduth @alecgeatches @amitraj2203 @andrewserong @CGastrell @ciampo @danluu @DarkMatter-999 @dpmehta @ellatrix @glendaviesnz @gziolo @hbhalodia @hi0001234d @himanshupathak95 @jameskoster @jorgefilipecosta @joshualip-plaudit @jsnajdr @juanmaguitar @kraftbj @Mamaduka @manzoorwanijk @mcsf @mikachan @mirka @Mustafabharmal @ntsekouras @peterwilsoncc @R1shabh-Gupta @rajanarahul93 @ramonjd @retrofox @SainathPoojary @shrivastavanolo @simison @Soean @t-hamano @Takshil-Kunadia @tellthemachines @tyxla @USERSATOSHI @vishnupprajapat @westonruter @wwahammy @yogeshbhutkar @yuliyan @ZebulanStanphill

#block-editor, #core-editor, #gutenberg, #gutenberg-new

Proposal: Auto-generate Block Editor Handbook docs from block.json

Updated: May 18, 2026 with video recording and transcript of the Hallway Hangout (bph)

The Block Editor Handbook is one of the primary resources for developers building with 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/ and WordPress coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Keeping it accurate and up-to-date as the editor evolves is an ongoing challenge.

Recently, a detailed Core Blocks reference section was proposed for the Handbook โ€” providing structured 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. documentation for every 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. shipped in Gutenberg. The approach was to auto-generate these pages directly from each blockโ€™s block.json file, the single source of truth for a blockโ€™s attributes, supports, and metadata.

The initial pull request (#77350) was merged but subsequently reverted (#77590) due to insufficient community discussion before landing. That feedback was valid, and this post is the next step: bringing the proposal to the wider community before moving forward.

The updated proposal is in PR #77612: Docs โ€” Auto-generate per-block API reference pages from block.json.

The problem

Understanding how a core block works today means reading its source code directly. A block is defined by attributes, supports, context, selectors, and parent/child relationships โ€” but none of these are documented in context for any individual block. To learn about a specific block, a developer has to read its block.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. file โ€” which shows the values but does not explain what they mean โ€” and then separately hunt through the general documentation to understand each property. Per-block documentation with contextual links to each concept would close that gap entirely.

The same problem affects LLMs: without documented context for each property, they have to parse source files to infer semantics, spending more tokens and filling context unnecessarily. This is important for AI-assisted creation of templates, template parts, patterns, and other block editor content.

Most of this detail already exists in the codebase. If it can be surfaced automatically, thereโ€™s no good reason to leave it buried.

The proposed solution

The proposal introduces an automated pipeline that generates per-block API reference pages by reading each blockโ€™s block.json at build time. This means:

  • Every block shipped in Gutenberg automatically gets a documentation page reflecting its current attributes, supports, selectors, and other metadata.
  • Keeping docs in sync becomes a byproduct of keeping block.json accurate โ€” which developers already do.
  • The Block Editor Handbook gains a canonical, always-current API reference for all core blocks.

The generated docs would live at paths like: developer.wordpress.org/block-editor/reference-guides/core-blocks/[block-category]/[block-name] and would look like this:

README.md per block in the repository

A key part of the proposal is that documentation is generated into a README.md file inside each blockโ€™s source directory โ€” for example, packages/block-library/src/paragraph/README.md.

This follows the same convention already established for component documentation, where gen-components-docs generates a README.md inside each componentโ€™s directory at packages/components/src/{component}/README.md.

Having documentation live next to the code has a specific benefit: it allows hand-written narrative and auto-generated API reference to coexist in the same file. Generated content is wrapped in token delimiters (<!-- START TOKEN / END TOKEN -->), so any hand-written prose above the token is preserved across regenerations. The Navigation block README is a working example of this.

This mirrors the approach already used by the package API docs generator (update-api-docs.js) to document each package API inside each package README.md.

What this means for contributors

For block developers

  • No separate docs PR is needed when you add or change a block.json attribute โ€” the reference page updates automatically.
  • The README.md lives next to the blockโ€™s source, making the API surface discoverable when browsing the codebase.
  • The expectation for what constitutes โ€œwell-documentedโ€ becomes clearer and more tractable.

For documentation contributors

  • A reliable, auto-generated foundation means energy can be focused on narrative guides and tutorials rather than maintaining API reference tables.
  • Custom hand-written explanations in a blockโ€™s README.md are preserved across regenerations, so narrative docs and API reference can grow independently.
  • Having a public view of block documentation may encourage contributors to get involved by creating issues or PRs if they find errors.

For users of the Handbook

  • Reference pages stay current with each Gutenberg release rather than drifting behind.

Open questions โ€” we want your input

  1. README.md in the repo vs. the docs site: Should per-block README.md files live in the Gutenberg repository, or be generated solely at the docs site level (as PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher references currently are)?
  2. Process fit: Does auto-generating docs from block.json fit naturally into the existing contribution workflow? Where might it break down?
  3. block.json as source of truth: Are there things about a block that canโ€™t or shouldnโ€™t be derived from block.json? How should those gaps be handled?
  4. Anything weโ€™re missing: What challenges or risks hasnโ€™t this proposal addressed?

Get involved

Review the PR: #77612 โ€” Docs: Auto-generate per-block API reference pages from block.json

Share feedback:

  • Comment on this post
  • Comment directly in the pull request discussion

Join the conversation live: Weโ€™ll be hosting a Hallway Hangout with Docs and Core team members approximately two weeks after this post. Details will be shared in the comments โ€” watch this post if youโ€™d like to join. The Meeting link will be shared in the #core-editor channel the day of the Hallway Hangout.

Video transcript (click to expand)

Birgit Pauli-Haack:
All right, so welcome everybody and those who come in today. And for those are watching the recording, this is a hallway hangout for the proposal Juan Ma posted on the make blogblog (versus network, site) on Auto Generate Block Editor handbook documentation from the block JSON. And the proposal is very detailed on things. What weโ€™re going to do today is that Juan Ma is going to talk us through a little bit about the goals and about the reasons how itโ€™s implemented. And then he also has his local development set up so he can demo things, how itโ€™s going to be, how itโ€™s going to be displayed, published on the developer.WordPress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/ block editor handbook and also how itโ€™s going to show up on 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 by the repository owner. https://github.com/ repo. And then. Well, Iโ€™m sure Juan Ma will be open for questions and we can also discuss next steps or how the documentation team can, can come in and make updates, or how contributors globally, contributors to code or contributors to the documentation team can augment some of the documentation thatโ€™s going to be automatically created. But there are some manual places where you can fit in some additional explanations. All right, I think youโ€™re up now. Thank you for coming. Yeah. And taking the time.

JuanMa Garrido:
Yeah, thank you so much, Birgit, for facilitating this meeting and helping unblocking this, this whole change and thank you Andrea, for, for attending. Yeah. So this proposal is to. The goal of, of this proposal is to make the life easier for developers to understand blocks, to understand how they are built, how they are supposed to be used, and to surface a lot of information that was kind of hidden in the code, but displaying that in a more friendly way for developers and for the final users. Because what we have now is this. What we have now is a very brief list of the properties that define each block and a quick. And a link to the source code. So this is what we have right now. So thereโ€™s no context about what supports mean, thereโ€™s no context about what attributes mean, thereโ€™s no context about what, what does it mean allowed blogs and that makes it hard for people. They need to really do their own research. So Iโ€™m thinking from the perspective of a first time user that arrives to this place, they donโ€™t know anything about blocks and they find this and thatโ€™s really hard to grasp, to understand. And I think we can do better in that sense. Also as a reference for developers. This is also not super useful. I mean you can get the list of supports here, but for example, you donโ€™t have an explanation of whatโ€™s the meaning of each report and thatโ€™s something that could be improved. Thereโ€™s no example of how the markup is supposed to work for each blog. So I think there could be a better way to show this information. And I would like to highlight that this is not only important for developers, but also for artificial intelligence. Because in this era I think AI models are the first users of the and I think having better a more detailed information for each block available in the repository, but also the documentation is going to be very helpful for models to then recommend a specific developments using blockchain block markup, for example, Iโ€™m thinking about patterns or templates or any other thing that would mean, I donโ€™t know, less tokens and less hallucinations from the model. So for all those reasons there was a conversation that we had like with Birgi, then with Jonathan and Justin and Ryan within the team and with we discussed about this and Jonathan started a first attempt of doing this and then I continued the work and what I got was this. So this is what we have right now in production and Iโ€™m going to show how this would look like in production if this pull request is merged. So we would get something like this. This is the same page done before, but now we have now a section for each block categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging.. So my approach with this was okay, letโ€™s keep the current page because I like having in one page all the blocks, but letโ€™s expand this with more pages and with more detailed information about each block. So we have here all the blocks, but then the thing is that we have now links to both the category that the block belongs to and the detailed information. So letโ€™s take the first one, Core accordion. If we go to this page we can see that this is below design blocks. But we have also a page for each block category, Media blocks, reusable blocks, text blocks. So we have like these two ways of. See the list of blocks available in Core. But if we go for example to the details block, we can see the detailed page for the details block. And which information do we have here? All this information is in the code. But now we have surfaced this. So we have the internal name for the block, the category and this is a link to the category this block belongs to. So we can see itโ€™s siblings, so to speak. We have the version and here we have information about the versions. So we are starting adding more context about each piece of information. Then we have the block type and we get linked to a page where this thing is explained. Because blocks can be like Purely static, purely dynamic, or they can mix both approaches. So here based on the existence of specific files, it kind of categorized them between static, dynamic or hybrid. I think this is good information to have then internal keywords for the block and then the attributes. So we get this from the blood JSON, but we get more context because we can actually link to the parts of the documentation where each one of these things are explained. For example, the type of an attribute is we have here the value, but we can get a link to what does it mean and what are the possible values an attribute can have for this, the default value. And we get here a link to the part of the documentation, the attributes page where this is explained the rest for source role Regarding supports, I think this is really cool because it not only detail, it not only details the list of supported properties, but also we get a link to the the explanation of each one of these supports, which I think is really cool. And as you can see, all this information provides a better experience for someone approaching to the blog or even for an experienced developer because it really saves a lot of time. If I want to understand quickly what is something, then we have an example of the markup of each block. And I think this is really cool because this information is is taken for the fixtures that are used to test the block. So this information is used internally to verify that the block behaves or that the, the. The block does what itโ€™s supposed to do. And, and there are a lot of, they are called fixtures in testing terms. But this information is a good reference for anyone that wants to use this this block. So we can also surface this surface that automatically. And then finally we get a link to the, to the, to the source of this information. We get a link to the blog JSON for each block. And also here we have a reference of the explanation of the block JSON. So we are again adding more context to that. And then finally we get a link to the, to the whole directory with all the files that define each block. And all this process is generated automatically using a script.

Andrea Roenning:
So

JuanMa Garrido:
I donโ€™t know if there are any questions about this before I enter into the explanation of the technical aspects of the this change.

Birgit Pauli-Haack:
Andrea, everything is clear.

Andrea Roenning:
Yes, I have some specific questions, but they can wait.

JuanMa Garrido:
Okay.

Birgit Pauli-Haack:
Okay,

JuanMa Garrido:
so what I can do is I can explain how this works internally, how these pages are generated, when will they be generated and yeah, some aspects of the implementation. So the pull request is this one?

Birgit Pauli-Haack:
Yeah, I shared it in the chat window just in case.

JuanMa Garrido:
So first of all, this Pull request will add a lot of markdowns because itโ€™s the first time that is generated, it will add a REDMI MD for each one of the blocks. This is a one time thing because after that all those redmis will be updated only when there are changes to that affect these Redmi MDs. Second thing that I think is important is that this pull request provides a way to that two type of information coexist, like manual information and automatically generated information. So for each block. And we can see an example here in the navigation block which is here. And we can go to View file and I can show the row.

Birgit Pauli-Haack:
So thatโ€™s a little small.

JuanMa Garrido:
Yes. Yes. Let me.

Birgit Pauli-Haack:
You need to squint a bit. Yeah. So very good.

JuanMa Garrido:
Yeah. Is it fine now?

Birgit Pauli-Haack:
Yeah.

JuanMa Garrido:
Okay. So the navigation block, it had some previous information. In fact, I think it was the only REDMI MD that was created for a block. Only a few of them, this one and some other one that it has some information that was manually added. So this change will only generate automatic content between these tokens. Everything that is between these tokens will be automatically generated. So as long as we donโ€™t touch these tokens, we can add any manual information outside. And thereโ€™s a message here clarifying that this follows the same approach that is being used for the REDMI mds for the packages. Because the packages I can go, maybe I can quickly go and check the REDMI MD for. If we go to packages, each package it has this part, the API. If we go edit redmi. Yeah, as you can see, thereโ€™s also information that is manually added. But then we have a start token. All this part is automatically generated. So itโ€™s using the same, the same idea, the same approach. We can have manual and automatic content coexisting in the same REDMI md. Another technical detail that I think is relevant is to explain how we can trigger the generation of this content. And this is managed by a new script that has been add it here is called Docs Block Detail. This is part of package JSON and it has been added to the family of DOCS scripts. There are a lot of Docs script. For example, there is Docs API Ref is the script that generates the API content for each package, like as we saw a minute ago. So now thereโ€™s a new script called Docs Block Detail that generates the readme if it doesnโ€™t exist or it updates the readme for the affected changes. Another. Let me see if I can show this. Another interesting thing is that it has been added this Script this. To the lint state. So if I not run. In the same way that we have API ref and the block details will be launched for each. For each. So every time there is a change in a block JSON, it will. It will trigger these scripts in the same way that we are calling the other ones. Okay, what else? And basically I have tried to. Make this implementation as close as other things that are already happening. So the same things we do for other parts of the documentation now we are also doing that for blocks. For example, there is a automatic process for components. There is an automatic process for the REDMI MD of each package. And now we have another one for blocks. For blocks detail this docs blocks is the automatic process that generates the current page we have. This is the current page we have. And this is triggered by this process. Now we have another process that updates this page and also updates or generates the other Redmi MDs for each block and the categories pages. And what else can I say about this? I think I have covered like what was on my mind that I think could be relevant. So yeah, Iโ€™m going to stop talking now and answer to listen to any questions.

Andrea Roenning:
One question I have is, is it going to be clear if changes in the Gutenberg repository versus the core update?

JuanMa Garrido:
Thatโ€™s a very good question. I havenโ€™t included the change in this pull request. So we could do this in two ways. I could expand this pull request and make it bigger and try to other information. The thing is that that information is not available for any API in the Gutenberg repo. So maybe my. My feeling is that I agree that this should be added to this information, but maybe this pull request is not the place to add that. So in fact I was mentioning this to bitgit earlier. I have opened this issue to actually surface that information to this issue I opened was most referred to the API of each package because each function there is no clear information about which Gutenberg version it belongs to or if itโ€™s available in Core or not. And I agree that this is essential information to have. But this is using some internal processes because I have opened the issue, but I have already some work in progress for this. So I think the same internal processes could be applied to the blocks as well. So yeah, maybe and that would be my. My approach is that adding the Gutenberg version where each block was included or if itโ€™s available in WordPress Core or not, maybe that should be added as a. In a pull request after this is merged.

Birgit Pauli-Haack:
That makes sense to me. Yeah, yeah. I Agree too because I think itโ€™s important to have the processes to get all the documentation in the document on the handbook first and then wiggle it down to what are the other details that we need and do we need to have it for a process on the repo and then make it for, for every function, for every block, for every. Yeah. Detail that is in the block editor. And thatโ€™s a, itโ€™s a much bigger conversation because the developers need to be kind of, it needs to be clear which, which version that is. And, and thatโ€™s. I, I think one of the biggest Gutenberg plug repo problems is we have three different, well, even four. No, we have WordPress core, we have Gutenberg and we have the Gutenberg experiments. And then. So itโ€™s a three version process. And yeah, itโ€™s going to be really interesting to see how to implement that, but I donโ€™t want to. I definitely, personally, I donโ€™t think we should delay this process because itโ€™s such fundamental change and so much more helpful than this other detail here. What other questions do you have, Andrea?

Andrea Roenning:
One other question I have is, is it possible to have blocks grouped in more than one category?

JuanMa Garrido:
Is it possible to do that from a block JSON?

Andrea Roenning:
Yeah, I think. Well, I think it is, but I think the reason why it would be nice is it would be good to have a deprecated category because I think we have like a handful of deprecated blocks and it would be nice to kind of see them at a GL. But that could be a future Mr. As well. I donโ€™t know if that makes sense in this scope of work.

JuanMa Garrido:
Well, that information is, I think is included. Let me see.

Birgit Pauli-Haack:
Iโ€™ve seen it.

JuanMa Garrido:
So what was added was a call out at the beginning of each block? No, I donโ€™t think so. What was added was a call out with the experimental blocks. But I donโ€™t think because deprecated blocks. Yeah, they also exist in the repository. But yeah, I havenโ€™t thought of that. That could be something interesting to add in this pull request. Yeah, youโ€™re right.

Andrea Roenning:
Iโ€™ll add a note to the PR just so that itโ€™s documented there or

JuanMa Garrido:
maybe later not sure if a category is the best place because there is an idea of category and I think it could be, could be confusing for people to add a category that is not really a category.

Andrea Roenning:
Yeah, but it could be something else, some other attributes.

JuanMa Garrido:
But for example here, that could be a specific section. Yeah, I donโ€™t know.

Birgit Pauli-Haack:
Yeah, I did a similar kind of dive into After I saw what you did, who am I? I did a similar thing to just have a, a call out on the Gutenberg Knightley on what are the experiments blocks in the experiments. And I saw the deprecated part and I had the code discarded and that was relatively easy to do, to not display. So there is already a, A, a place where that is communicated. So yeah, that can certainly be part of the page. Yeah. Even if so they donโ€™t, I, I, I understand that you say, okay, I want it in a category because I have a list of all of it. Yeah. But it could be probably even a deprecated page separately, but have it in a separate pr. Yeah, I can see that.

JuanMa Garrido:
Yeah. The advantage of having all blocks here is that we could look for specific terms. So if we add deprecated here, you can access to all the deprecated blocks. So that could be a first and maybe thatโ€™s enough. But a second thing that could be done here is to maybe group them in a specific section and maybe adding a notice here highlighting that there are some deprecated blocks. Click here to see all of them and that could link to maybe a section that is at the end of the, of this doc listing all the deprecated blocks. Yeah, something. That is useful, but maybe that doesnโ€™t add more noise to the whole block directory.

Birgit Pauli-Haack:
Yeah, I like it. Yeah.

Andrea Roenning:
And at a minimum, even just adding a bullet there that some blocks are deprecated, maybe that would be a good first step.

JuanMa Garrido:
I think that information could be automatically generated. So maybe we could add directly here like a call out saying please take into account that the following blocks are deprecated, blah, blah, blah and blah, and we can link to the blocks or something. That could be done.

Birgit Pauli-Haack:
Good. Andrea, do you have any more questions?

Andrea Roenning:
No, Iโ€™ll just share. So Iโ€™m a contributor for the Help Hub user. Facing Docs team and keeping up with changes between WordPress core versions is a challenge. A lot of times there are attributes coming in and itโ€™s hard to know which blocks are getting them. So this will be helpful even just to be able to have a place to easily look at it without digging through block JSON. But yeah, down the road, if there was a change log or some way where we can see fit text is stored differently than it was before that, that kind of thing, I, Iโ€™m it, that would be lovely, but I donโ€™t think that needs to be part of this. Mr. A changelog would be great.

Birgit Pauli-Haack:
Yeah. Yeah. Itโ€™s really hard for the user documentation to make Anything automatic. Yeah, because it has all the different screens that you need for that. What is in the block settings? Whatโ€™s itโ€™s in. How does a block look like? I donโ€™t envy you. I did this probably for a year and a half back in 2020 to kind of try to figure out how to do end user documentation. So, yeah, I think with Play, I donโ€™t know, are you experimenting with Playground on that?

Andrea Roenning:
I use Playground to take, you know, videos of the blocks in action. For example, weโ€™ve got Nikon and Breadcrumb blocks coming in. And then I read through the prs and I look through the block. Yeah, so itโ€™s. But yeah, itโ€™s. And the source of truth is hugely helpful. I appreciate that.

Birgit Pauli-Haack:
So thank you. Yeah, yeah, yeah.

Andrea Roenning:
Keeping track of all of the incoming changes for Core is challenging, but I think this would be very helpful and it would also be helpful to get other developers involved. If they see a change on the readme, they can open a pull request and make an update, I think.

Birgit Pauli-Haack:
Yeah, yeah, yeah. That brings me to my question that I have for one. So if I see something thatโ€™s not correct, what would be my step after?

JuanMa Garrido:
Something that is something that is not correct in the content or in the implementation?

Birgit Pauli-Haack:
No, in the. Think about it. Okay, you have it all merged and now itโ€™s on auto processing. But Iโ€™m now a developer and try to figure out what do I do with this block or I want to style it. Now I find it difficult to get to that information and think I need to add something to that styling for that block, like accordion block or a tabs block or something like that. Yeah. So what would I do?

JuanMa Garrido:
Yeah, well, all the tools that are used internally in Gutenberg to generate content automatically for docs, they are all in two places. One of them is Tools API docs, and this is where the specific tool for the blocks will live if we go to the pull request. So talking about fine tuning the output, for example, of the. The blocks that would belong to. Yeah, this is too big for this. That would belong to this script. This is where all the. All the magic happens, so to speak. This is where this is all was created with the help of cloud code. So, yeah, maybe if thereโ€™s. I think this is enough, but maybe we could simplify the way to, I donโ€™t know, create a template that can be modified without affecting the process. But from a developer perspective, if I want to fine tune the output for each page, this is. The file should be updated.

Birgit Pauli-Haack:
Okay. So if I donโ€™t want to update all the pages. I only want to have a certain block documentation. I go to the package block library and then to the readme of that block.

JuanMa Garrido:
Yes. If I want to add manual information to a specific block, what can we do is go to. Because all the. So what this pull request is going to do is going to add a REDMI MD to each one of the blocks that are available in the block library package. The block library package contains all the core blocks. So in terms of code, if we go to Gutenberg packages block library now necessary, we have all the blocks. But right now no block has a REDMI md. So this pull request will add a REDMI MD inside the folder of each block, which makes a lot of sense because itโ€™s kind of a description of whatโ€™s going on here. So what we can do is to add the manual information for that block with a pull request using the process we use for other changes in the repository. And any information that is outside of these tokens will be respected, will not be modified by any process. So, for example, if we want to add custom information for the accordion heading, we can just add here whatever information we want or even after the token and that will be respected in the automatic process. It wonโ€™t be removed.

Birgit Pauli-Haack:
Super. And it would follow normal markdown formation format. And then somebody needs to review it and then it will be merged. And then after the merge, within a day or within an hour, I think the block editor handbook will be updated. Right. Good.

JuanMa Garrido:
I think every 15 minutes or something like that. Right.

Birgit Pauli-Haack:
Thatโ€™s pretty fast for someone whoโ€™s a new contributor and just wants to update the documentation and kind of see, oh, this is not clear. Letโ€™s do some manual, some additional explanation, then that can be done. Thatโ€™s wonderful. Excellent. Yeah. Because right now itโ€™s a really, really more difficult to do that. Yeah, you raised your hand, Andrea.

Andrea Roenning:
Yeah, I was going to propose that, you know, maybe towards the bottom, if we were going to list out accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) issues or, you know, maybe link to open accessibility tickets, that would be a lovely place to do it. So theyโ€™re not like the very first thing you see, but if. Right. Itโ€™s nice that weโ€™ve got kind of the ice cream sandwich where weโ€™ve got manual data and then generated data and then we can still add manual data at the bottom, if that makes sense.

Birgit Pauli-Haack:
Totally. Yeah. Yeah. Especially because accessibility issues was one of the comments on the proposal by Joe Dawson. And I think it definitely needs somebody from the accessibility team to kind of add some information to each blocks readme and then it can be automatically added to the developer handbook.

JuanMa Garrido:
Yeah, Jodo suggested that. And yeah, the way to add this information, there is no way to get that information automatically as of today. But now we will have a place to add that information in the redmi and manually. So itโ€™s available.

Birgit Pauli-Haack:
Itโ€™s very good. Yeah. No, I like that. Hybrid. Yeah. Automate whatโ€™s possible. Yeah. And then manage manually what is different or what needs additional. Additional explanation because itโ€™s outside of the ordinary. Yeah. So I think, Andrea, are you any closer to understanding this process or are you. Do you have any more questions?

Andrea Roenning:
No more questions on my end. This is really exciting. I think it would be very helpful.

Birgit Pauli-Haack:
Yeah, I think so too. Yeah. All right. Joan, Mo, anything you want to add?

JuanMa Garrido:
Well, I would like to kind of share my impression about where we are now and what would be the next steps. So from the moment this new pull request, because the history of this pull request is that it was open, it was reviewed by different developers, like three or four developers. It was merged, but then it was reverted because there were concerns that this was. This wasnโ€™t discussed enough and there wasnโ€™t a good consensus about that. So after that this pull request was opened and there was a more formal process to gather feedback and we published the post and make a WordPress core. Now weโ€™re having this Halloway hangout. The feedback timeline ends next Monday, so thereโ€™s still time to provide feedback. But I would like to summarize the state of the pull request right now. I think that the consensus for the Docs team, I would consider it given. I mean, I would consider that the Docs team has supported this feature as per the comments in the proposal and the comments in the 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. So thatโ€™s like a new thing that we didnโ€™t have before. And also the specific technical aspects because there were a lot of suggestions to improve the code that all those things were addressed in the previous pull request. But in this pull request there are new things. Most of them have been addressed. There are only a few ones that I didnโ€™t address until I knew for sure that we were going to move forward with this task. But one big one was this about that George asked if, because yeah, this pull request is going to add a lot of new ReadMe files in the repository. That means a lot of new lines. So thatโ€™s a really valid concern. But even with that, I think this is still the best way to tackle this theme because that information will live in the repository. Which I think is where it should live. And then the documentation is just like a nicer way to to provide that information. And also I think itโ€™s important that that information is available from both repository and from the documentation so there are no gaps. So if you access to the info from the repo or from the documentation site, the info is already there. And Dion from the metaMeta 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. team also thinks that this is the way to go. So in that sense I think the major concerns are now addressed and there are clear responses to all those things. But as I said, thereโ€™s still time to ask questions to raise more concerns and to provide more feedback. But I think we are in a better place now to move forward with this.

Birgit Pauli-Haack:
Yeah, so you heard it. If youโ€™re listening to this before May 25, you still get a chance to have put in your feedback. Your Yes, I love this. Or well if you do this, there are some concerns. Yeah. Either way, leave it on the make blog post or on the pull request. Thatโ€™s definitely the two places to to leave that. Feed your feedback there and we close this horror hangout now. Thank you both Andrea and Juan Ma for being here and have a discussion on this. And Fuanli, Iโ€™m really excited about it because I couldnโ€™t really make a visual thing so I asked Juan Ma if he would demo some of the things. So Iโ€™m really happy that we did this. I will post the link to the video on the proposal and also in the channel docโ€™s channel as well as the co editor channel once itโ€™s ready. And Iโ€™m also find a tool that does the transcript so we can publish both of that. And I wish you all a wonderful week and hope to see you the next time when we have something like this exciting to propose. Bye everybody.

Andrea Roenning:
Thank you.

JuanMa Garrido:
Thank you.

Birgit Pauli-Haack:
Bye.

JuanMa Garrido:
Thank you. Very good. Thank you Andrea.

Timeline

MilestoneDate
Feedback period opens5th May
Hallway Hangout (Zoom) 18th May โ€“ 14:00 UTC
Feedback period closes25th May
Next steps announcedShortly after close

Feedback collected from the community will help refine the proposal and inform next steps for implementation.

Props to @bph, @huzaifaalmesbah and @awetz583 for reviewing this post

#block-editor-handbook, #block-editor, #blocks, #docs, #handbooks

Presence API Feature Plugin

The Presence API is an experimental feature pluginFeature Plugin A plugin that was created with the intention of eventually being proposed for inclusion in WordPress Core. See Features as Plugins that provides a system-wide awareness layer โ€” who is logged in, what adminadmin (and super admin) screens they are on, and which posts they are editing.

This idea of presence I think is really cool and seeing where people areโ€ฆ you log into your WordPress, I see oh Matias is moderating some comments, Lynn is on the dashboard maybe reading some newsโ€ฆ that idea of like you log in and you can kind of see the neighborhood of like who else is also there.

Matt Mullenweg, WordPress 7.0 planning session

Problems this aims to solve

  • There is currently no way to see who else is logged into the WordPress admin at the same time.
  • Posts being actively edited by another user are only surfaced when a lock collision occurs, by which point work may already overlap.
  • The post list provides no indication of which posts have active editors until a user tries to open one.

Hereโ€™s what that looks like in practice:

Try it yourself in WordPress Playground: 5-user blueprint. The blueprint creates 5 editor accounts with live presence spread across admin screens and posts, so the widgets, admin bar, and post list are populated the moment Playground boots โ€” no second browser or incognito window needed.

See it at scale: 40-user blueprint. Same setup, 40 seeded editors โ€” useful for seeing how the widgets, admin bar, and post list handle density.

What the 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. provides

  • Dashboard widgets: โ€œWhoโ€™s Onlineโ€ and โ€œActive Postsโ€
  • Admin bar online indicator with avatarAvatar An avatar is an image or illustration that specifically refers to a character that represents an online user. Itโ€™s usually a square box that appears next to the userโ€™s name. stack for on-screen presence
  • Post list โ€œEditorsโ€ column
  • Users list โ€œOnlineโ€ filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output.
  • REST endpoints and WP-CLIWP-CLI WP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is http://wp-cli.org/ https://make.wordpress.org/cli/ commands
  • Post-lock bridge (coexists with existing _edit_lock behavior)

All features are gated on the edit_posts capabilitycapability Aย capabilityย is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on theirย role. For example, users who have the Author role usually have permission to edit their own posts (the โ€œedit_postsโ€ capability), but not permission to edit other usersโ€™ posts (the โ€œedit_others_postsโ€ capability).. Full technical details are in the GitHub repository.

Background

During WordPress 7.0 development, discussion in #64696 identified that storing high-frequency ephemeral data in shared tables causes persistent cache invalidation site-wide. This feature plugin was built to test that workload independently using a dedicated ephemeral data table with a 60-second TTL. Data flows through the existing Heartbeat API. The plugin was presented at a coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. dev chat and subsequently transferred to the WordPress 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 by the repository owner. https://github.com/ organization. It was submitted to the WordPress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/ plugin directory on April 6, 2026.

Feedback welcome

This plugin is experimental. Feedback on the following is especially helpful:

  • Are the UIUI User interface surfaces (widgets, admin bar, post list) useful as presented?
  • Are there admin screens or workflows where presence would be valuable?

Discussion and development: #feature-presence-api on WordPress 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/

Bug reports and discussion: GitHub Issues

Thank you to @jorbin and @desrosj for helping to stand up this feature plugin.

Props @peterwilsoncc, @mindctrl, @czarate, @davidbaumwald, @dd32, @maxschmeling, and @westonruter for the architectural discussion in #64696 that informed this work.

#performance, #presence-api

What’s new in Gutenberg 23.0? (22 April)

โ€œWhatโ€™s new 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/โ€ posts (labeled with the #gutenberg-new 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.)) are posted following every Gutenberg release on a biweekly basis, showcasing new features included in each release. As a reminder,ย hereโ€™s an overviewย of different ways to keep up with Gutenberg and the Editor.

Whatโ€™s New In
Gutenberg 23.0?

Gutenberg 23.0 has been released and is available for download!

This release introduces a revisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision. panel for templates, template parts, and patterns (experimental), and extends the Site Editorโ€™s Design โ€บ Identity panel with Site Title and Site Tagline fields, completing the set alongside the previously added Site Logo and Icon. Real-time collaboration gains compatibility with legacy metaMeta 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. boxes and a range of reliability improvements, while the 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. editor receives several quality-of-life refinements.

A total of 174 PRs were merged in Gutenberg 23.0, with 8 first-time contributors.

Table of contents

  1. Revisions panel in templates, template parts, and patterns (experimental)
  2. Site Title and Site Tagline in the Design โ€บ Identity panel
  3. Other Notable Highlights
  4. Note for users of the Guidelines experiment
  5. Changelog
    1. Enhancements
    2. Bug Fixes
    3. Accessibility
    4. Performance
    5. Experiments
    6. Documentation
    7. Code Quality
    8. Tools
  6. First-time contributors
  7. Contributors

Revisions panel in templates, template parts, and patterns (experimental)

Editing a template, template part, or pattern now surfaces the same Revisions panel previously available only for posts and pages. When any of these entities has revisions, a Revisions row appears in the sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. with access to review and restore prior versions, matching the behavior already in place for regular post types.

This is part of the ongoing Editor Inspector: Use DataForm experiment, which is progressively rolling out a unified DataForm-based inspector across all post types. Enable the experiment from Gutenberg โ†’ Experiments to try it in the Site Editor or while editing a template from the Post Editor. (#77008)

Site Title and Site Tagline in the Design โ€บ Identity panel

The Design โ€บ Identity panel โ€” introduced in 22.8 with Site Logo and Site Icon โ€” now also includes Site Title and Site Tagline. All four identity settings sit in a single panel, editable directly from the Site Editor without a trip to Settings โ†’ General. Because the title and tagline fields write to the same root/site entity that the Site Title and Site Tagline blocks read from, edits show up live in the editor canvas as you type. The panel uses consistent field styling across text and media controls, so the four settings read as one unified form. (#76264)

Other Notable Highlights

  • Real-time Collaboration, legacy meta box compatibility. 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. authors can now mark individual meta boxes as RTC-compatible using a new __rtc_compatible_meta_box flag, so the presence of a legacy meta box no longer unconditionally disables collaboration. Site administrators can also apply the flag to third-party meta boxes via the existing filter_block_editor_meta_boxes hook. (#76939)
  • Real-time Collaboration, reliability. Concurrent edits to array-type block attributes โ€” such as table rows โ€” are now preserved when the array is restructured (#77164). A single corrupted sync update no longer crashes the whole poll cycle and disconnects every room (#76968). Gutenbergโ€™s activation hook now honors the CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. WP_ALLOW_COLLABORATION constant, giving hosts a reliable kill switch (#77084).
  • Keyboard shortcuts for moving blocks surface in tooltips. The block toolbarโ€™s move-up / move-down tooltips now display their keyboard shortcuts. (#76992)
  • Spacing side controls re-order when unlinked. When link mode is off, the four side inputs are arranged in a more predictable order. (#66317)
  • Separator block honors the --- shortcutโ€™s default variation. Inserting a Separator via the Markdown-style --- shortcut now applies the blockโ€™s default style variation, matching the behavior of inserting it through the inserter. (#77135)

Note for users of the Guidelines experiment

If you had the Guidelines experiment enabled in a previous release, 23.0 renames its internal identifiers from content-guidelines / content_guideline to guidelines / guideline. The rename covers the custom post typeCustom Post Type WordPress can hold and display many different types of content. A single item of such a content is generally called a post, although post is also a specific post type. Custom Post Types gives your site the ability to have templated posts, to simplify the concept. slug, REST base, meta keys, experiment flag, and Redux store. Because the experiment flag itself is renamed, it will appear disabled after updating โ€” youโ€™ll need to re-enable it from Gutenberg โ†’ Experiments and re-enter any previously saved guidelines. (#77147, #77223)

Changelog

Enhancements

Components

  • wordpress/ui: Add global CSSCSS Cascading Style Sheets. defense module. (76783)
  • Adminadmin (and super admin) UIUI User interface: Increase page headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitorโ€™s opinion about your content and you/ your organizationโ€™s brand. It may also look different on different screen sizes. vertical padding. (77152)
  • Admin UI: Update Page background color to surface-neutral. (76869)
  • Autocomplete: Remove getAutoCompleterUI factory pattern. (77048)
  • DataForm: Add min/max date range support for date and datetime fields. (77201)
  • DataForm: Show tooltip in edit button in panel layout. (77024)
  • DataForm: Support disabled controls. (77090)
  • FormToggle: Update disabled styles. (77208)
  • Media Upload Modal: Persist view configuration. (77288)
  • Text: Remove UA margins. (76970)
  • UI Text: Mark as recommended. (77044)
  • UI/Dialog: Add explicit margin-inline-end rule to Title. (77334)
  • UI: Update @base-ui/react from 1.3.0 to 1.4.0. (77308)
  • UI: Use Text component for Badge typography. (77295)
  • Use --wpds-cursor-control design token for interactive controls. (76786), (77259)
  • @wordpress/ui: Add Popover. (76438)
  • ui/AlertDialog: Better async confirm APIs, fully use base uiโ€™s AlertDialog. (76937)
  • ui/Dialog: Update Header layout, refactor Title to use Text. (77161)
  • ui: Expose container portal prop on all overlay Popup components. (77163)

Block Library

  • Add context for next/previous enlarge image. (76967)
  • Image block: Validate attachment ID exists before treating image as local. (77178)
  • Search Block: Ensure color settings apply to input field when button is disabled. (77219)
  • Tab Menu Item: Simplify active tab menu item style. (77195)
  • Tabs: Remove sequential numbering from new tab labels. (77321)
  • Use entity link title for link control preview. (77155)

Guidelines

  • Guidelines CPT: Rename from โ€œcontent guidelinesโ€ to โ€œguidelinesโ€ (slug, classes, routes). (77147), (77223)
  • Guidelines: Make the CPT type-aware. (77491)
  • Improve guideline revision UXUX User experience. (76560)
  • Registers wp_guideline_type taxonomyTaxonomy A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies.. (77156)
  • Update actions-section and import/export workflow. (76621)

Post Editor

  • DataViews: Simplify defaultLayouts prop. (77232)
  • RTC: Add filterable flag for meta box RTC compatibility. (76939)
  • RTC: Change SyncConnectionModal to isSyncConnectionErrorHandled filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. and drop IS_GUTENBERG_PLUGIN check. (76853)

Block Editor

  • Display shortcuts for moving blocks via tooltips. (76992)
  • Re-order spacing side controls when unlinked. (66317)

Connectors

  • Update the AI plugin settings page slug we link to after activation. (77336)

DataViews

  • Classify admin-ui and dataviews to components. (76959)

Global Styles

  • Renamed focus visible label. (77292)

REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think โ€œphone appโ€ or โ€œwebsiteโ€) can communicate with the data store (think โ€œdatabaseโ€ or โ€œfile systemโ€) https://developer.wordpress.org/rest-api/

  • Add date field in templates and template parts. (77134)

Media

  • Media Modal Experiment: Set matching picker grid layout properties for when a user switches layouts. (77118)

Collaboration

  • Backportbackport A port is when code from one branch (or trunk) is merged into another branch or trunk. Some changes in WordPress point releases are the result of backporting code from trunk to the release branch.: Improve validation and permission checks for WP_HTTP_Polling_Sync_Server. (76987)
  • RTC: Add optional shouldSync function to entity sync configuration. (76947)
  • RTC: Respect WP_ALLOW_COLLABORATION in Gutenberg for activation hook. (77084)

Site Editor

  • Add Site Tagline and Site Title to Design > Identity panel. (76264)

Bug Fixes

Components

  • Calendar: Fix disabled styles. (77138)
  • Card: Set default foreground color on root. (77013)
  • Checkbox: Fix disabled styles. (77132)
  • DataForm: Remove text-transform from panel field labels. (77196)
  • DataViews: Fix compact density clipping and remove top/bottom padding. (77054)
  • Fix autocomplete overlapping trigger matching. (77018)
  • FormTokenField: Fix disabled styles. (77137)
  • RTC: Fix inline inserter reset on update sync. (76980)
  • RadioControl: Add support for disabling radio group. (77127)
  • Remove sandbox allow-same-origin for core/htmlHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. blocks. (77212)
  • TextArea: Add disabled styles. (77129)
  • UI: Normalize render prop and ref forwarding patterns. (77160)

Block Library

  • Cover block: Fix embed video background Error 153 in editor. (76904)
  • Fix overflow of highlighted white-space in Code Block. (77085)
  • Image block: Hide drag handles while an upload is in progress. (77121)
  • Paragraph: Prevent onEnter splitting of parent block when insertion of that block type is not allowed. (77291)
  • Post Author Biography: Preserve occurrence of white spaces. (71133)
  • RTC: Core/cover block minor compatibility fixes. (76916)
  • Search block: Match behavior of global styling for border and color with local styling (inspector controls) to remove inconsistency. (77060)
  • Search block: Derive โ€˜isSearchFieldHiddenโ€™ value. (77082)
  • Separator Block: Apply default block variation when inserting via --- shortcut. (77135)
  • Upload external media: Ensure notice only fires once. (77218)

Block Editor

  • Fix SyntaxError in Autocompleter UI when pasting matching content. (76961)
  • LinkPicker: Decode HTML entities in link preview title. (77170)
  • Prevent Enter key from inserting paragraphs in contentOnly sections. (76989)
  • RTC: Fix โ€œEdit as HTMLโ€ content reset during collaboration. (77043)
  • Writing Flow: Fix format toolbar not appearing when selecting text from block edge. (77136)
  • contentOnly template lock: Fix block insertion and removal rules. (77119)
  • Fix numeric value clearing in preset input controls. (77139)

Guidelines

  • Guidelines CPT: Skip registration when post type already exists. (77486)

Data Layer

  • Core Data: Fix โ€˜useEntityPropโ€™ for raw attributes. (77120)
  • Core Data: Fix incorrect pagination for non-paginated entities. (76406)
  • RTC: Fix core/table cell merging. (76913)
  • RTC: Fix orphaned meta causing dirty editor state. (77529)
  • RTC: Improve array attribute stability when structural changes occur. (77164)
  • getMergedItemsIds: Receive full page bigger than perPage. (77262)

Connectors

  • Account for mu-plugins when resolving plugin.file status. (76994)
  • Donโ€™t clobber third-party custom render in registerDefaultConnectors. (77116)
  • Hide Akismet unless already installed. (76962)
  • Replace speak() with notice store for state changes. (77174)
  • Update help text from โ€˜resetโ€™ to โ€˜manageโ€™. (76963)

Post Editor

  • Fields: Fix postContentInfoField when there are edits. (76901)
  • Fix: Restore editor canvas padding in classic themes. (76864)
  • RTC: Fix button flickering on retry dialog. (77234)
  • RTC: Predefined retry schedules for disconnect dialog, make more lenient. (76966)
  • Revision: Fix โ€˜Show changesโ€™ button reset state. (77122)

Collaboration

  • Fix failing โ€˜WP_HTTP_Polling_Sync_Serverโ€™ unit testunit test Code written to test a small piece of code or functionality within a larger application. Everything from themes to WordPress core have a series of unit tests. Also see regression.. (77025)
  • RTC: Fix disconnect dialog due to uneditable entity. (77242)
  • RTC: Isolate sync update failures to prevent full disconnect. (76968)

Global Styles

  • Fix duotone filter not applying on style variation switch. (77229)
  • Global Styles Revisions: Fix footer overflow. (77103)

DataViews

  • Fix Gutenberg_REST_View_Config_Controller_7_1 PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher warnings. (77290)

Patterns

  • Fix custom categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. in site editor not displaying pattern actions. (77251)

Media

  • MediaEdit: Handle โ€˜*โ€™ wildcard in validateMimeType. (77168)

Client Side Media

  • Use image.copyMemory() for batch thumbnail generation. (76979)

AccessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility)

Components

  • ValidatedRangeControl: Fix aria-label rendered as [object Object]. (77042)

Performance

Post Editor

  • Autocompleters: Move and improve links search. (76995)

Client Side Media

  • Add performance metrics for client-side media processing. (76792)

Experiments

Post Editor

  • Add revisions panel to templates, template parts and patterns. (77008)

Documentation

  • Add missing documentation in collaboration.php. (77173)
  • Autocomplete: Clarify โ€˜isDebouncedโ€™ setting limitation. (77062)
  • Docs: Add README for DatePicker and TimePicker Components. (70365)
  • Editor: Fix โ€˜selectedNoteโ€™ action JSDoc. (77080)
  • Eslint: Suggest alternative in no-setting-ds-tokens rule. (77154)
  • Fix: A sentence has no ending punctuation in README.md file. (77027)
  • HStack, VStack: Mark as not recommended for use. (77041)
  • Improve CSS setup instructions in package readmes. (76975)
  • Storybook: Enable theming toolbar for wp-components. (77038)
  • Storybook: Fix โ€œDefaultโ€ cursor option in theming toolbar. (77037)
  • UI/Tooltip: Add usage guidelines documentation. (77158)
  • UI: Use Link component in details story example. (76997)
  • iAPI Docs: Fix typos, code errors, and inaccuracies in the documentation. (76636)
  • ui/docs: Add additional global css setup instructions. (77228)

Code Quality

  • TypeScript: Migrate a11yAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) package to TS. (70680)

Components

  • Add .scss files to CSS module linting. (77140)
  • Block Directory: Use --wpds-cursor-control design token. (77330)
  • Autocomplete: Refactor useAutocomplete to use useReducer. (77020)
  • BoxControl: Remove unused state for icon side. (77143)
  • Build Tools: Update TypeScript to 6.0.2. (77010)
  • Button: Remove obsolete Safari + VoiceOver workaround. (77107)
  • Button: Remove unused Storybook stylesheet. (77031)
  • Dataviews: Remove unneeded ref callbacks. (77179)
  • Extract the autocomplete matcher into a separate function. (76957)
  • FormTokenField: Remove unnecessary styles. (77263)
  • Textarea: Remove unnecessary styles. (77221)
  • Theme: Rename typography tokens to use โ€œtypographyโ€ prefix. (76912)
  • Update ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org function names for better ESLint detection. (77148)
  • i18ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.: Make sprintf return FormattedText for type-safe createInterpolateElement. (76974)
  • ui/Card: Remove redundant margin reset from Card.Title. (77187)
  • ui/VisuallyHidden: Standardize composition pattern. (77190)

Block Editor

  • Block Editor store: Refactor controlledInnerBlocks to Set. (77094)
  • Global Styles: Move pseudo-state slicing logic into useStyle hook. (77104)
  • BlockMover: Remove unused disabled button props. (76993)
  • Extract getElementCSSRules from useBlockProps. (77327)
  • updateBlockListSettings: Convert state to Map, do all updates in one action. (46392)

Post Editor

  • BlockStyleVariationOverridesWithConfig: Change name and fix lint errors. (77130)
  • ESLint plugin: Disable jsx-a11y/heading-has-content. (77073)
  • Edit Post: Fix warning in โ€˜useMetaBoxInitializationโ€™ hook. (77311)
  • RTC: Store metaboxes RTC-compatible flag on location entries. (77361)
  • Revisions: Simplify fetching. (77086)

Block Library

  • Tabs: Simplify anchor handling. (77189)
  • TypeScript: Migrate packages/list-reusable-blocks package to TypeScript. (70518)
  • TypeScript: Migrate viewport package. (71118)

Data Layer

  • Remove remaining esModuleInterop usage. (77095)
  • Blocks: Convert blocks package to TypeScript. (76312)

Guidelines

  • Remove jsxRuntime pragma. (77255)

Icons

  • Override WP_Icons_Registry singleton with Gutenberg icons registry. (76455)

Annotations

  • TypeScript: Migrate annotations package to TS. (70602)

Tools

Testing

  • Autocomplete: Fix flaky end-to-end tests. (77322)
  • E2E Tests: Ensure artifacts generate correctly and remove unnecessary artifacts. (77093)
  • Fix page.waitForFunction call arguments in e2e tests. (77300)
  • Guidelines: Add end-to-end tests based on the Settings page testing instructions. (77192)
  • Remove โ€˜Homeโ€™ and โ€˜Endโ€™ key usage from Navigation tests. (77102)
  • Restore original template registration tests alongside activation variants. (77068)
  • Tests: Auto-fix some new โ€˜eslint-plugin-playwrightโ€™ warnings. (77314)
  • Tests: Fix workspace test scripts (wp-env not found, argument forwarding). (77055), (77083)

Build Tooling

  • Add iteration issue template. (77113)
  • Build: Fix glob ignore patterns in dot-prefixed directories. (75114)
  • Convert directories in test/ to workspaces. (74684)
  • Env: Fix loopback requests when running on non-default ports. (77057)
  • Fix lint-staged 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. documentation path. (77203)
  • Resolve package-lock.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. inconsistency for @babel/eslint-parser. (77256)
  • Storybook: Fix end-to-end subpath exports and add CI build smoke test. (77034)
  • Refactor: Migrate bin/api-docs to tools/api-docs as workspace @wordpress/api-docs-generator. (77019)
  • Upgrade ESLint to v10. (76654)

Data Layer

  • Fix pre-existing lint errors across the codebase. (77002)
  • Remove unused catch block variables across the codebase. (76969)

First-time contributors

The following PRs were merged by first-time contributors:

  • @DarkMatter-999: Fix numeric value clearing in preset input controls. (77139)
  • @dkotter: Update the AI plugin settings page slug we link to after activation. (77336)
  • @dpmehta: Search block: Match behavior of global styling for border and color with local styling (inspector controls) to remove inconsistency. (77060)
  • @mehrazmorshed: Fix: A sentence has no ending punctuation in README.md file. (77027)
  • @prachigarg19: Fix duotone filter not applying on style variation switch. (77229)
  • @samvaidya: Image block: Validate attachment ID exists before treating image as local. (77178)
  • @sandipr942: Added missing documentation in collaboration.php. (77173)
  • @superdav42: Connectors: Donโ€™t clobber third-party custom render in registerDefaultConnectors. (77116)

Contributors

The following contributors merged PRs in this release:

@adamsilverstein @Adi-ty @aduth @alecgeatches @andrewserong @annezazu @aswasif007 @BugReportOnWeb @CGastrell @chriszarate @ciampo @coderGtm @DAreRodz @DarkMatter-999 @dinhtungdu @dkotter @dpmehta @ellatrix @gziolo @hbhalodia @iamchughmayank @Infinite-Null @ingeniumed @jameskoster @jeryj @jorgefilipecosta @jsnajdr @kushagra-goyal-14 @madhusudhand @MaggieCabrera @Mamaduka @manzoorwanijk @mehrazmorshed @mirka @nerrad @ntsekouras @oandregal @prachigarg19 @R1shabh-Gupta @ramonjd @samvaidya @sandipr942 @scruffian @shail-mehta @Shekhar0109 @shrivastavanolo @superdav42 @Swanand01 @t-hamano @talldan @tyxla @USERSATOSHI @yashjawale @yogeshbhutkar

Roster of design tools per block (WordPress 7.0 edition)

Below you find a table that lists all coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. blocks available in the inserter marks in the grid the feature they support in the 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. editor. Itโ€™s a basic lookup table that helps developers to find the information quickly.

While this post is released as part of 6.8, the content summarizes changes between 6.1 and 7.0. This is an updated of the 6.8 edition and provides a cumulative list of design supports added with the last ten WordPress releases. The icon โ˜‘๏ธ indicates new in 6.9 or 7.0.

The features covered are:

  • Align
  • Typography
  • Color
  • Dimension
  • Border
  • Layout
  • Gradient
  • Duotone
  • Shadow
  • Background image

Changes to Blocks

  • The Verse block was renamed to Poetry block in WordPress 7.0
  • New Blocks added
    • Accordion with Accordion Heading, Accordion Item, Accordion Panel
    • Breadcrumbs
    • Icon
    • Math
    • Post Time to Read
    • Term Query with Term Template, Term Count, Term Name

Table changes

In previous editions of this roster, the PO/BB column tracked a small, hardcoded set of core blocks where Pattern Overrides and Block Bindings were manually enabled โ€” Button, Image, Paragraph, and Heading. That model no longer reflects how the feature works. WordPress 6.9 moved Block Bindings to a server-communicated list of supported attributes via the block_bindings_supported_attributes filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output., and WordPress 7.0 extended that same mechanism to Pattern Overrides, so any block attribute that opts into Block Bindings now also supports Pattern Overrides โ€” including custom blocks. Because support is opt-in per block, per attribute, and per site, a single check mark in a lookup table can no longer represent it accurately. The column has been removed in favor of a note pointing readers to the Pattern Overrides in WP 7.0 and Block Bindings improvements in 6.9 dev notesdev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase..

Props to @awetz583, @westonruter, and @blackstar1991 for review.

#7-0, #dev-notes, #dev-notes-7-0, #editor

WordPress 7.0 Release Party Updated Schedule

Good news, everyone! WordPress 7.0 has a new release date: May 20th, 2026!

Thank you all for your flexibility in these recent weeks while WordPress contributors around the world worked tirelessly on necessary architectural improvements for the 7.0 release. The team aims to ensure that this software version is the most stable and most performant it can be, while still delivering the much anticipated cornerstone features mapped out for WordPress 7.0.

Below is the new release schedule, with expected dates and times for each release party, and the release squad contributors involved in each party for the 7.0 milestone. It also includes the pre-release versions that have already been released, and a (pending) call for testing from web hosts meant to help ensure compatibility across hosting systems.

Note: While the most recent pre-release version was RC2, the RC3 release will be treated like aย 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.ย version in practice. That means that your continued testing and feedback, particularly on the part of web hosts, will be incredibly valuable in keeping the development process informed during the next phase of this release cycle. Thank you all for your continued testing!

Release Schedule

As always, last-minute adjustments to this schedule are possible, and there could be additional timeline iterations based on the impact of host feedback to ensure that feedback is properly addressed. The release squad will do its best to communicate any changes promptly by posting in the #core Slack channel, publishing a post on the change, and updating this post as the canonical reference.

Date (UTC)MilestoneEmcee / Release LeadRelease Lead The community member ultimately responsible for the Release.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.SecurityMission Control (Coordination)
February 19, 2026 at 15:00 UTCBeta 1@amykamala@ellatrix@audrasjb@sergeybiryukov
February 26, 2026 at 15:00 UTCBeta 2@amykamala@ellatrix@audrasjb@sergeybiryukov
March 5, 2026 at 14:00 UTC Beta 3@amykamala@audrasjb
Committing from 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. Nice Contributor DayContributor Day Contributor Days are standalone days, frequently held before or after WordCamps but they can also happen at any time. They are events where people get together to work on various areas of https://make.wordpress.org/ There are many teams that people can participate in, each with a different focus. https://make.wordpress.org/support/handbook/getting-started/getting-started-at-a-contributor-day/!
@audrasjb@sergeybiryukov
March 10, 2026 at 23:30 UTC
Unplanned beta following the 6.9.2-6.9.3 security releases
Beta 4@desrosj@sergeybiryukov@sergeybiryukov@sergeybiryukov
March 12, 2026 at 15:00 UTCBeta 5@chaion07@ellatrix@audrasjb@sergeybiryukov
March 24, 2026 at 15:00 UTCRCrelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). 1@amykamala@ellatrix@audrasjb@sergeybiryukov
March 26, 2026 at 15:00 UTCRC 2@4thhubbard@ellatrix@audrasjb@sergeybiryukov
April 24, 2026Call for host testing@desrosjn/an/an/a
May 8, 2026 at 15:00 UTCRC 3 (in name, but test as a โ€œnew Beta 1โ€)@amykamala@ellatrix@audrasjb@sergeybiryukov
May 14, 2026 at 15:00 UTCRC 4 (in name, but acting as a โ€œnew RC1โ€)@4thhubbard @chaion07@ellatrix@audrasjb@sergeybiryukov
Tuesday, May 19, 2026 at 15:00 UTC

Dry Run / 24-Hour Code FreezeTBDTBDTBDTBD
Wednesday, May 20, 2026

Time TBA
General ReleaseTBDTBDTBDTBD

How to Join the Party

  • All parties happen in the #core channel on Slack.
  • Everyone is welcome! First-timers, veteran contributors, and all those curious about the process are invited.

Here are detailed instructions on how to contribute to a release party.

Thank you to every contributor and community member that helps make 7.0 a success. See you at the parties!

Props to @desrosj, @4thhubbard, @annezazu, @griffbrad,@peterwilsoncc, and @jeffpaul for helping devise the new schedule, and @desrosj, @jeffpaul, and @sumitsingh for reviewing this post.

#7-0, #release

Dev Chat summary: April 15, 2026

Startย of the meeting 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/, facilitated by @amykamala ๐Ÿ”— Agenda post.

Announcements ๐Ÿ“ข

WordPress 7.0 Updates

  • The Path Forward for WordPress 7.0. The 7.0 release is still on pause for the time being. A new schedule is being worked out and will be announced by the 22nd. There will be another Release Candidaterelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). in name, but in practice the next release will be treated as a 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., specifically to test architectural improvements to Real Time Collaboration. Thank you in advance to everyone who helps test!

General

Discussion ๐Ÿ’ฌ

@annezazu has published Defining expectations for Iteration issues announcing some adjustments to iteration issue handling in the 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/ repo.

From @amykamala: โ€œFinding the most current PRs and discussions can be a bit of a wild goose chase because while PRs mention tickets in their content, the fields/relationships on the right that would link PRs to a ticketticket Created for both bug reports and feature development on the bug tracker., project, status, etc are not actively being used. For 7.0 theres a kan ban board but nothing in it because tickets and PRs are not being tagged. So the only way to find this info is to scroll endlessly on tickets and click on all the links in the notifications. Some of you may remember a while back I asked devs in here to please start tagging their PRs in the fields on the right.โ€

  • @jeffpaul noted that the #core-program channel may be a good place to iterate on this topic.

Matt is requesting community reps and organizers increase emphasis on Elevating Individuals in the contributor space to to celebrate volunteers and folks who contribute in their own spare time.

From @miroku: โ€œI can only report problems; can that be considered a contribution? Iโ€™m always struggling to figure out how to volunteer effectivelyโ€. @jorbin answered that testing and finding bugs is absolutely a contribution!

@westonruter wanted to draw attention to this issue with @wordpress/core-abilities which makes it difficult to use outside of a React context. A PR is available to fix the issue.

#7-0, #core, #core-editor, #dev-chat

Elevating Individuals

Posting here since it spans +make.wordpress.org/design/ , +make.wordpress.org/community/ +make.wordpress.org/marketing/ +make.wordpress.org/meta/ .

My request: Letโ€™s go back to how we used to elevate individual identity and contribution. Learn how to celebrate sponsorship in ways that encourage and cheer equally or more volunteers and people contributing in their spare time, and remember thatโ€™s how almost all of us started and how beautiful and fun that was.

To expand a bit on what I tried to say in the Q&A, I was referring to this tweet:

HFkC1nSagAAoUBl

Krupa, sorry to use you as an example, but the giant SELF EMPLOYED on your badge shocked me, and led me down a path of thinking of all the ways my push to get companies doing what Automattic and Yoast has created some issues in its success, and the unintended consequences itโ€™s maybe led us to.

Iโ€™m not saying someone deliberately created this bad badge design on purpose or maliciously, but I do want to know what led to a result here that everyone involved thought Name and Company was just fine, and no one advocated for personal info you could have on a badge, and that we have before in previous designs. I would suggest WEBSITE since weโ€™re software trying to help people make websites, and want to encourage and promote that, then WordPress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/ username, for same reason, maybe hometown because thatโ€™s usually one of the first things people ask and itโ€™s interesting. Iโ€™d put all those things over the company, because the company for people who want to show it off is usually obvious from their shirt or buttons before you can read the badge.

@desrosj and @peterwilsoncc, Very sorry today for only being able to express disagreement in such a brief and unnuanced way. Iโ€™d love to get a Zoom when Iโ€™m feeling better so we can discuss and understand each otherโ€™s positions better.

Be a good conversationalist

I know I get annoyed when the first question someone asks when you meet is โ€œwhat do you do for work?โ€ Here are fun openers that are better, and how can that inspire how we experiment with badges.

Individual Complaints

I was first made aware of this issue by hearing complaints from coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. WP devs who said they feel like we doing so much more to recognize the contribution of companies. Iโ€™ve heard several versions of โ€œitโ€™s a bigger deal for me to contribute without being paid for it!โ€

Where else is this showing up?

  • In every Five for the Future testimonial.
  • Very much on the 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 theme directories.
  • In the business model of WordCamps.
  • In a lot of our language and goals.
  • In my presentations starting probably 6-7 years ago.

Weโ€™re measuring and celebrating inputs and contributions, not impact or results

I keep repeating this as the biggest thing we need to change in the WordPress culture and way of doing things. In hindsight, how silly is it to emphasize hours pledged in Five for the Future and not actual activity? And then check regularly if that activity is actually aligned with our goals, or perhaps working against them? (It has happened!)

When is more contribution a bad thing? How has our emphasis on participation, process, or inclusive consensus slowed us down, even as we add more people? Are we surprised, given The Mythical Man-Month figured that out in 1975! What have we lost, and who have we lost, as a result of the structure and processes weโ€™ve created?

How am I so smart yet so dumb sometimes?! ๐Ÿ™‚

Hereโ€™s a better version. The most powerful question from Jerry Collona: โ€œHow have I been complicit in creating the conditions I say I donโ€™t want?โ€ It works so well in all parts of life.