What’s new in Gutenberg 21.7? (24 September)

“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 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 21.7?

Gutenberg 21.7 has been released and is available for download!

Expanded Command Palette

Site Editor navigation commands have now been made available on all screens.

Experiment: Terms Query 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.

A new block has been added, called Terms Query, similar to the Query block, but for terms rather than posts. It is designed to contain a new Terms Template block, which holds inner blocks with term data for displaying each term.

Go to Gutenberg > Experiments, and toggle the “Blocks: add experimental blocks” option to test it.

Experiment: contentOnly for Unsynced Patterns and Template Parts

An experiment has been added to give unsynced patterns and template parts contentOnly treatment, to prevent accidental edits of non-content blocks. To test, enable it on the Gutenberg > Experiments adminadmin (and super admin) page.

Experiment: Block Commenting

The block commenting experiment has continued to receive fixes and improvements, such as enabling them for published posts.

Changelog

Enhancements

Command Palette

  • Move custom CSSCSS Cascading Style Sheets. command to core-commands from edit-site package. (71565)
  • Register menu navigation based on CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Menu 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.. (71476)

DataViews

  • Add color field type and control to DataViews. (71522)
  • Add data picker functionality. (70971)
  • Add password field. (71545)
  • DataForm radio control: Support validation and description. (71664)
  • DataForm select control: Support validation. (71665)
  • DataForm toggleGroup control: Support validation. (71666)
  • DataForm: Add a textarea control available for use with the text field type. (71495)
  • DataForm: Add summary field support for composed fields. (71614)
  • DataForm: Switch boolean field types from toggle to checkbox UIUI User interface. (71505)
  • Dataform: Add new URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org field type and field control. (71518)
  • Dataform: Add new telephone field type and field control. (71498)
  • Dataforms: Add icons to email and telephone controls. (71514)
  • Dataforms: Add object configuration support for Edit property with prefix/suffix options. (71582)
  • Implement groupBy for list layout. (71548)
  • Update datetime control to use calendar UI. (71509)
  • DataForm: Row Layout. (71124)

Block Library

  • Navigation Link: Change ‘Add page’ to ‘Create page’ button text. (71487)
  • Navigation Link: Show ‘Create page’ button in Write Mode while hiding ‘Add block’. (71489)
  • Navigation Link: Surface page creation functionality clearly in the LinkUI. (71188)
  • Normalize the Navigation block appender behavior between canvas and list view contexts. (71163)
  • Table of Contents: Update toolbar controls. (71587)
  • Terms Query: Combine Order and Order By control into single dropdown + remove order by slug. (71656)

Write mode

  • Add Navigation Add Page Button. (71192)
  • Hide Post Date toolbar when child of Query in contentOnly mode. (71707)
  • Try adding a contentRole block support to content container blocks. (71539)

Block bindings

  • Add 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.. (71663)
  • Add fallback for new features introduced in Core. (71389)
  • Image block: Save <figcaption> if caption attr is bound. (71483)

Block Editor

  • Localize labels in getVisualTypeName() for link control search items. (71503)
  • Update conditions for displaying the empty block inserter. (70897)

Global Styles

  • Site Editor: Always show Additional CSS button. (71537)

Components

  • Add support for ValidatedFormTokenField. (71350)

Command Palette

  • Make navigation commands available on all screens. (71335)

Interactivity API

  • Add fetchpriority=low support to script modules. (70173)

Block Variations

  • Have getActiveBlockVariation fall back to default variation. (63858)

Core Data

  • Core Data: Remove conditions for selector resolutions. (71575)

New APIs

  • Core Commands: Introduce new useCommands hook. (71603)

Bug Fixes

  • Core Data: Don’t return partial data when selecting a complete item. (71474)
  • Core Data: Fix early return check for the record field-level resolutions. (71541)
  • Core Data: Fix field conditions in ‘getRevision’ selector. (71629)
  • Fix PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher 8.5 array offset deprecation warning. (71654)

DataViews

  • DataForms regular layout: Remove label style overrides as they cause inconsistent results. (71574)
  • DataForms regular layout: Use BaseControl visual label for readonly fields when in top labelPosition. (71597)
  • DataViews grid layout: Rounded corners for media. (71543)
  • Field API: Add setValue. (71604)

Write mode

  • Add contentRole to Query block and make sure Change design always works as expected. (71686)
  • Hide Spacer resizable box in write mode. (71671)
  • Make sure “add page” button label only appears once. (71710)

Block Editor

  • Fix popover scroll hook’s simultaneous scrolling. (71468)
  • Fix stale insertion point reference. (71559)
  • useClipboardHandler: Prevent file paste for users without media upload permissions. (71607)

Components

  • Fix popover not calling onClose on unmount. (71252)
  • Modal headings and labels missing editor text color. (71311)
  • Validated form controls: Fix Sass var handling for red color. (71391)

Global Styles

  • BorderRadius Presets: Fix Generating wrong variable names in pattern code. (71631)
  • Search: Border radius presets work correctly. (71481)

Block Library

Block bindings

  • Fix back-compat layer. (71691)

Block Transforms

  • Block Editor: Fix BlockSwitcher to prevent transforms on reusable blocks. (71661)

Patterns

  • Content Only Pattern experiment: Restore purple block icon color for synced patterns. (71655)

Post Editor

  • Fix: Hide “View Post” link for non-viewable post types. (71356)

Block API

  • Allow block attributes strings to terminate in \ character. (71291)

Block Bindings

  • Block Bindings: Fix pattern override bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority., editing was allowed on non enabled overrides blocks. ([71813])(#71813))

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)

  • Block Comments: Make “n more replies” text clickable for accessibility. (71387)
  • feat: Clarify label & add help text with link. (70451)

DataViews

  • Custom empty elements are no longer wrapped in <p> tags to improve accessibility. (71561)

Performance

  • Core Data: Always try to resolve entity permissions. (71532)

Post Editor

  • Editor: Try displaying intermediate results for hierarchical terms. (71402)

Experiments

Patterns

  • Make unsynced patterns content only by default. (71512)
  • contentOnly Patterns experiment: Add Edit Contents button to block inspector and show ‘Detach’ block action. (71653)

Block Library

  • Add Terms Query block. (70720)
  • Pattern content only experiment: Make template parts section blocks. (71627)

Block Commenting

  • Make buttons in dialogs translatable and clear. (71639)
  • Use rendered comment content. (71638)
  • Improve error handling for core data actions. (71695)
  • Use TextareaAutosize for comment field. (71424)
  • Add comment indicators in the block toolbar. (71271)
  • Add the ability to reopen resolved comments. (71250)
  • Enable inline comments on published post. (71295)
  • Block Comments: Prevent commenting on empty blocks. (71497)
  • Fix block comment to display correct time. (71652)
  • Fix: Disable block commenting when postId is not number. (71643)
  • Fix: Hide resolved comments in unpinned mode. (71409)
  • Fix: Unable to pin comment 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. after unpinning. (71386)
  • 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.: Show “1 more reply” instead of “1 more replies” in block comments. (71685)

Documentation

  • ControlWithError: Add documentation about cloned children. (71392)
  • DataForm: Remove default storybook example. (71609)
  • Docs: Fix broken links in Gutenberg release checklist. (71611)
  • Docs: Split “Gutenberg Release Process” page into two. (71130)

Code Quality

  • Block Commenting: Prevent unnecessary API requests when post ID is not integer. (71713)
  • CODEOWNERS: Remove some block code owners. (71657)
  • Export UseEntityRecordsWithPermissionsType. (71003)
  • Migrate element package to TS. (70886)
  • [core-data]: Fix TS types for user object. (68045)
  • i18n: Remove unnecessary JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. file. (71549)

Block Library

  • Clean up LinkUI duplication for Add block and Create page flows. (71499)
  • Gallery Block: Add end-to-end test for image randomization. (71538)
  • Refactor Link UI controls with better props. (71515)
  • Refactor: Content only template locking block editing modes to reducer. (67606)

Block bindings

  • Date block: Move block_bindings_supported_attributes filter to compat layer. (71662)

DataViews

  • Remove leftover code for Pages. (71534)

Tools

  • Update CODEOWNERS to remove ndiego. (71591)

Testing

  • Automated testing: Add taxonomy pagination tests. (71584)
  • Fix comments in block editing mode tests. (71690)
  • contentOnly patterns experiment: Add reducer tests. (71688)

First-time contributors

The following PRs were merged by first-time contributors:

Contributors

The following contributors merged PRs in this release:

@adamsilverstein @Adi-ty @andrewserong @coderGtm @coreyworrell @dhruvikpatel18 @elazzabi @ellatrix @getdave @gigitux @heavyweight @jeryj@jorgefilipecosta @karthick-murugan @kmanijak @kushagra-goyal-14 @Mamaduka @manzoorwanijk @mikachan @mirka @ndiego @ntsekouras@oandregal @ockham @p-jackson @priethor @R1shabh-Gupta @shimotmk @shrivastavanolo @sirreal @stokesman @straku @swissspidy @t-hamano@talldan @tellthemachines @USERSATOSHI @westonruter @xavier-lc @yashjawale

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

Summary, Dev Chat, September 10, 2025

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 📢

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/ 21.6 was released!

Gutenberg 21.6 is now available. The release post provides a full overview of the changes and enhancements. Thanks to @cbravobernal for preparing the notes.

Forthcoming releases 🚀

WordPress 6.9

WordPress 6.9 is scheduled for Tuesday, December 2, 2025.

The roadmap for 6.9 has been published.
Please take a look to see what’s actively being worked on for release later in the year.

WordPress 6.9 Dev-Notes

A first 6.9 dev notedev 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. was published: Prettier Emails: Supporting Inline Embedded Images
See all dev notes published for 6.9.

Discussion 💬

Allow wp-config.php without wp-settings.php

Ticketticket Created for both bug reports and feature development on the bug tracker. #5276 was discussed regarding loading wp-config.php without automatically including wp-settings.php. Opt-in approaches were considered, but concerns about back-compatibility and existing site configurations mean the ticket remains closed and is not targeted for 6.9.

Redirect on MySQLMySQL MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com rate-limiting

Ticket #63678 proposes redirecting users to install.php when database connections are blocked due to MySQL rate-limiting. Participants agreed the patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing. is consistent with current error handling, with a suggestion to reuse MySQL’s native error message. It is moving forward for 6.9 consideration.

Standardizing UTF-8 handling

Ticket #63863 introduces a compat-utf8.php file to polyfill missing UTF-8 functions before compat.php is loaded. This aims to provide more consistent string handling across environments. Ongoing feedback is encouraged directly on the ticket.

Docs Team in release squads

A recent post from the Docs Team led to discussion about its role in release squads. Concerns were raised about the removal of the Docs Lead position and possible effects on onboarding and coordination. The importance of documentation was acknowledged, while there were differing views on the need for a formal lead role. It was agreed that there will not be a dedicated Docs Lead role in 6.9 for now. Instead, the focus will be on improving release instructions and checklists to ensure smoother processes.

Props to @audrasjb for review.

#6-9, #core, #dev-chat, #docs, #gutenberg, #summary

What’s new in Gutenberg 21.6? (10 September)

“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 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 21.6?

Gutenberg 21.6 has been released and is available for download!

It brings several enhancements, including improvements to the new Accordion 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. and the Dataviews grid. This release also incorporates various bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fixes and code refactoring, continuing the migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. to TypeScript. Additionally, it lays the groundwork for a future upgrade to ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org 19.

  1. New add accordion button
  2. Improved Dataviews grid interface.
  3. Select, dropdown and text inputs now support global styles.
  4. Changelog

New “add” accordion button

A new “add” button has been incorporated into the accordion block, simplifying the process of creating new content items by allowing direct additions to the accordion toolbar.

Improved Dataviews grid interface.

The dataviews grid now offers a cleaner interface. Titles can be hidden, and actions are accessible on hover, allowing for a simplified grid without sacrificing the ability to add actions to individual items.

Select, dropdown and text inputs now support global styles

This release brings global styles support to selects, dropdowns, and text inputs, giving themes consistent control over these common form elements. By defining styles in theme.json, authors can customize colors, borders, and typography without extra CSSCSS Cascading Style Sheets.. This update makes forms feel more cohesive with the rest of a site’s design.

Changelog

Enhancements

  • Add support for precision type placeholders to translator comments eslint. (71145)
  • CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Commands: Add Dashboard option to return to dashboard. (71261)
  • Core Data: Add ‘supportsPagination’ to all appropriate entities. (71302)
  • Core Data: Forward resolvers for pagination selectors. (71304)
  • Core Data: Include pagination 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. while receiving intermediate results. (71401)
  • Create Block: Add lifecycle script execution support. (71072)
  • Display names for Context providers. (71208)

DataViews

  • DataForm: Add description support for the combined fields and show the description in the Card layout. (71380)
  • DataForm: Streamline validation behavior. (71345)
  • Revert “DataForm: Streamline validation behavior”. (71359)
  • Support hiding the title in Grid layout, with actions available on hover. (71369)
  • Support the “Minimal UIUI User interface” story by using DataViews.Footer. (71276)

Block Library

  • Accordion Panel: Remove unnecessary wrapper div and simplify save. (71454)
  • Accordion: Add an “Add” button. (71388)
  • Query LoopLoop The Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. https://codex.wordpress.org/The_Loop Block: Fix broken placeholder. (70840)

Offline

  • api-fetch: Check navigator.onLine to improve failure notices. (71438)

Meta Boxes

  • Edit Post: Check for meta box container before adding constraints. (71423)

Commands

  • feat: Added keyword support & added basic keywords for post/page. (70624)

New APIs

Global Styles

  • Add support for select or dropdown elements. (70379)
  • Global styles: add element support for text related inputs. (70378)

Bug Fixes

  • Add permission checks to Command Palette commands. (71267)
  • Components: Fix Tab font size when used outside WP. (71346)
  • Core Data: Fix error in ‘getEntityRecordsTotalPages’ selector. (71303)
  • Scripts: Do not access window global. (71348)
  • wp-scripts: Remove clean-webpack-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. dependency. (71080)

Block Library

  • Accordion 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.: Fix RTL toggle button layout. (71480)
  • Fix issue of css affecting the nested accordion icon. (71445)
  • Fix timezone in Date block. (71430)
  • Fix: Randomization in Gallery Block doesn’t work when Lightbox is enabled. (71408)
  • Group Block variation:Remove variation text color. (71429)
  • Properly apply styles and classes to the experimental form block. (55755)
  • Template Part: Display icons correctly when in placeholder state. (71327)
  • fix: Prevent accordion toggle button overflow at full width. (71446)
  • fix: Prevent scrollbars on accordion header and toggle. (71484)

Write mode

  • Allow adding “content” role blocks to containers that also have a “content” role in write mode. (71232)
  • Audio and Video: Hide caption controls in contentOnly mode. (71368)
  • Hide ‘Add block’ control in Link UI when Navigation Link block is in contentOnly mode. (71213)
  • Image: Don’t allow convert to cover controls in contentOnly mode. (71329)

Post Editor

  • Edit Post: Fix misplaced icon on back button. (71406)
  • Editor: Fix theme stylesheet injection in ‘useAvailablePatterns’. (71332)

DataViews

  • Fix grid padding values on mobile viewports. (71455)

Block Editor

  • Inserter: Fix InserterListbox rendering for React 19. (71410)

Style Book

  • Accordion Content, Header, Panel: Remove example field. (71407)

Zoom Out

  • Fix Zoom out should be disabled when Show Template is toggled off. (71361)

Components

  • ControlWithError: Show validating state when transitioning from error state. (71260)

Interactivity 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.

  • iAPI: Make state getters to be updated asynchronously with store(). (70974)

Performance

  • Add wp-env SPX profiler option. (70693)

Post Editor

  • Editor: Improve the ‘Design’ 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. panel performance. (71333)

Documentation

  • Core Data: Improve ‘registry.batch’ documentation. (71325)
  • DataForm: Better story for validation. (71298)
  • DataViews: Fix defaultLayouts documentation error. (71334)
  • Field Types: Update storybook. (71440)
  • HooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same.: Document ‘hookName’ and ‘namespace’ parameters. (71288)
  • Storybook: Set DateCalendar and DateRangeCalendar components as private. (71453)

Code Quality

  • 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): Remove redundant styles. (65409)
  • Command Palette: Enqueue assets globally. (71264)
  • Convert api-fetch package to TypeScript. (67669)
  • Convert date package to TypeScript. (67665)
  • Core Data: Remove unused reducers. (71305)
  • Fix: Add JSON_HEX_TAG flag to wp_json_encode in script tags. (71280)
  • Interface: Remove leftover comment. (71331)
  • Types: Update to be compatible with React 19. (71374)
  • api-fetch: Clean up error handling. (71458)
  • api-fetch: Cleanup and improve unit tests. (71439)
  • core-data: Use Object.fromEntries instead of reduce when generating entities reducer. (36296)
  • Deps: Bump framer-motion to v11.15.0. (71442)
  • Move Site Editor command from wordpress/editor package to wordpress/core-commands. (71262)

Block Editor

  • Fold uniqueByBlock into options object. (71279)
  • Remove duplicate ‘InsertionPointOpenRef’ context definition. (71465)

Block Library

  • Image block: Remove unused code. (71292)
  • refactor: Remove unnecessary fields from accordion 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. files. (71441)

Post Editor

  • Update types of getCurrentPostId. (71347)

Global Styles

  • Remove unecessary useEffect from ScreenStyleVariations. (71344)

Tools

Testing

  • Avoid using *-latest for runner images. (71201)
  • Fix failing command center end-to-end tests. (71293)
  • 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/ Actions: Try to fix storybook smoke tests. (71284)
  • Upgrade Playwright to v1.55. (71285)

Build Tooling

  • Fix PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher unit testing jobs to not include version. (71396)
  • Release Workflow: Add github.ref validation. (71404)

First-time contributors

The following PRs were merged by first-time contributors:

Contributors

The following contributors merged PRs in this release:

@Adity @andrewserong @aristath @DAreRodz @desrosj @dinhtungdu @getdave @himanshupathak95 @im3dabasia @jsnajdr @juanfra @kmanijak @lalitkumawat1m @levinbaria @MaggieCabrera @Mamaduka @manzoorwanijk @Mayank-Tripathi32 @mcsf @mikachan @mirka @nerrad @oandregal @R1shabh-Gupta @ramonjd @shimotmk @sirreal @swissspidy @t-hamano @talldan @tellthemachines @tyxla @USERSATOSHI @vipul0425 @westonruter @youknowriad

Props @mamaduka and @jorbin for peer review. Props @joen for visual assets.

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

Summary, Dev Chat, September 3, 2025

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 @francina. 🔗 Agenda post.

Announcements 📢

WordPress 6.9 Roadmap

The roadmap for 6.9 has been published.
Please take a look to see what’s actively being worked on for release later in the year.

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/ 21.5 was released!

Gutenberg 21.5 is now available. The release post provides a full overview of the changes and enhancements. Thanks to @wildworks for leading this release and preparing the notes.

Forthcoming releases 🚀

WordPress 6.9

WordPress 6.9 is scheduled for Tuesday, December 2, 2025.

Discussion 💬

Revamp of Networknetwork (versus site, blog)/Sites screen with DataViews

@realloc introduced ticketticket Created for both bug reports and feature development on the bug tracker. #63885, which proposes modernizing the Network/Sites screen using DataViews and DataForm. For this to work, the 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/ endpoint for sites is also needed. Initial proof-of-concepts are available, with the goal of advancing 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. and UIUI User interface together. Feedback on both design and implementation is highly encouraged.

Step-by-step integration of PHPStan into CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. workflow

There was broad agreement on integrating PHPStan into the Core workflow. Key points are ensuring compatibility with WPCSWordPress Community Support A public benefit corporation and a subsidiary of the WordPress Foundation, established in 2016., avoiding false positives related to globals or legacy code, and introducing it gradually. The plan is for incremental rule expansion, accompanied by contributor discussions.

Concerns over missing Docs Team Lead in releases

@estelaris raised concerns about the lack of a Docs Team Lead role. During the 6.8 release, 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. and HelpHub pages were coordinated too late. The discussion highlighted that Dev Notes should primarily be written by the developers implementing the changes, with the Docs team providing fallback support. Proposals included broader HelpHub access for committers and improved release checklists to ensure better planning.

Props to @francina for review.

#6-9, #core, #dev-chat, #gutenberg, #summary

What’s new in Gutenberg 21.5? (27 August)

“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 21.5?

Gutenberg 21.5 has been released and is available for download!

This release contains many enhancements in addition to the new blocks. Below is a curated summary of the most notable changes in this release.

Introducing Accordion 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.

Experimental Accordion block

This release introduces the new experimental Accordion block. Accordion content is composed of the trigger and panel, allowing users to style them separately, while maintaining the 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) and semantics requirements of the accordion.

Command Palette in adminadmin (and super admin) dashboard

Command Palette in admin dashboard

We aim to bring the Command Palette into all parts of the WordPress experience. As a first step, the Command Palette is now available in the Admin Dashboard.

More commands and extensibility are planned for the future; see the overview issue for more details.

Support border radius presets

Like spacing, color, aspect ratios etc. Border radius are something that should be applied consistently throughout a design. Defining “border radius presets” in theme.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. allows picking border radius value from these presets instead of manually entering radius values.

Continue reading

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

Summary, Dev Chat, August 27, 2025

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 @benjamin_zekavica. 🔗 Agenda post.

Announcements 📢

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. US 2025 takes place this week

From August 26–29, 2025, the WordPress community will gather in Portland, Oregon.
Further details can be found on the official website.

WordPress 6.9 Roadmap

The roadmap for 6.9 has been published.
Please take a look to see what’s actively being worked on for release later in the year.

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/ 21.5 has been released

Gutenberg 21.5 is now available.
The release includes several improvements and bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fixes, with a detailed release post to follow soon.

Forthcoming releases 🚀

WordPress 6.9

WordPress 6.9 is scheduled for Tuesday, December 2, 2025.

Discussion 💬

Proposed Database Index for Performance

@josephscott proposed adding a new database index to improve performance on sites with a large number of posts or custom post types. This could speed up queries for the All Posts adminadmin (and super admin) page (see #50161). The proposal received general agreement, and further review and volunteers are needed to help carry it through to commit.

Ticketticket Created for both bug reports and feature development on the bug tracker. #63836HTTPHTTP HTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. Status Codes for wp_die

@callumbw95 has been working on #63836 and noted that all PR tests have passed. Further review and testing are needed before merge, and the ticket has been added to the summary so a CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. 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. can assist.

#6-9, #core, #dev-chat, #gutenberg, #summary

Summary, Dev Chat, August 20, 2025

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 @jeffpaul. 🔗 Agenda post.

Announcements 📢

The WordPress 6.9 Release Squad is assembled!

The release squad for WordPress 6.9 has been officially assembled and is ready to begin work on the upcoming version. The team will focus on enhancing performance, security, and user experience. Further details are available in the article.

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. US 2025 is coming up next week

From August 26–29, 2025, the WordPress community will gather in Portland, Oregon, for this year’s WordCamp US. If you haven’t already, be sure to register for the Contributor Day. CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Team members will be on site, and it would be great to see you there as well. @jorbin wrote a guide to prepare for the day.

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/ 21.4?

The latest version of Gutenberg, 21.4, was released on August 13. For a detailed overview of what has changed, check out the article What’s new in Gutenberg 21.4? – many thanks to @priethor for putting together this excellent summary.

WordPress 6.9 Roadmap

The roadmap for 6.9 has been published. Please take a look to see what’s actively being worked on for release later in the year.

Forthcoming releases 🚀

WordPress 6.9

WordPress 6.9 is scheduled for Tuesday, December 2, 2025.

Discussion 💬

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. Pattern Registration – Silent Failures

@tusharbharti reported an issue with the register_block_pattern() function, which currently returns true even when disallowed blocks are included. This causes the pattern to not appear in the inserter and no warning is shown. A patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing. (PR#9345) has been submitted to address the problem, and a second opinion is requested to ensure the issue is properly resolved. See #63765

MySQLMySQL MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com Rate Limiting – Redirect Issue

@anonymooo highlighted a bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. where WordPress incorrectly redirects to wp-admin/install.php when a user is rate-limited in MySQL. A patch (PR#9223) is open and requires review. Feedback on the desired behavior, such as using wp_die(), is requested to guide the next steps. See #63678

UTF-8 Handling Improvements

@dmsnell suggested updating the wp_check_invalid_utf8() function to improve UTF-8 validation, building on previous work with seems_utf8(). This update aims to strengthen UTF-8 handling in WordPress. The community is encouraged to provide feedback before the changes are finalized. See #63837

Data Passing in Scripts

@jonsurrell, in collaboration with @westonruter, proposed adapting the data passing mechanism from Script Modules for use with classic scripts. This change would offer better performance, eliminate reliance on a global namespace, and provide an alternative to wp_add_inline_script() and wp_localize_script(). Feedback on this approach is welcome. See #58873

Emoji Detection Inline Script – Render Blocking

@westonruter discussed a potential improvement for the emoji detection script. By switching from an inline script to a script module, render-blocking could be reduced, resulting in better performance, particularly on mobile devices. Early testing has shown over a 5% improvement in Largest Contentful Paint (LCP). See #63842

Props to @francina for review.

#6-9, #core, #dev-chat, #gutenberg, #summary

Summary, Dev Chat, August 13, 2025

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 @francina. 🔗 Agenda post.

Announcements 📢

WordPress 6.9 Roadmap

The roadmap for 6.9 has been published. Please take a look to see
what’s actively being worked on for release later in the year.

WordPress 6.9 Planning Proposal and Call for Volunteers

The planning phase for 6.9 wrapped up on July 25.
More information will be announced about the release team in the coming weeks.

Forthcoming releases 🚀

WordPress 6.9

WordPress 6.9 is scheduled for Tuesday, December 2, 2025.

Discussion 💬

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/ at 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. US

@jorbin shared plans for the CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. table, including a live bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. scrub, a live demo from a 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. showing the final review process, and activities aimed at helping contributors become more active. @karmatosed suggested using the day to also update the handbook with any improvements discovered.

Mail Component – New Maintainer Proposal + Discussion about the role and expectations

@SirLouen put forward his interest in becoming the maintainer for the Mail component, highlighting several months of consistent triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors., reviews, and fixes. With many components currently without maintainers, the proposal received strong support. @desrosj suggested assigning the role now, reviewing progress after three months, and refining the maintainer role description in the handbook. He noted that the recent, more relaxed approach to assigning maintainer roles has had mixed results. He is preparing an updated, clearer role description for the handbook, based on established 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. practices.

Updating seems_utf8()

@dmsnell proposed updating seems_utf8() to comply with RFC 3629 (#38044). This function is used for validating titles, filenames, and exports. The group discussed deprecating the current implementation and replacing it with proper validation. @agulbra and @jorbin offered to review the changes further.

Props to @francina for review.

#6-9, #core, #dev-chat, #gutenberg, #summary

What’s new in Gutenberg 21.4? (13 August)

“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 21.4?

Gutenberg 21.4 has been released and is available for download!

This release focuses on improvements to DataViews and other components. Below is a curated summary of the most notable changes in this release.

DataViews table layout grouping and multi-selecting

Following up on the last Gutenberg release, which introduced grouping by a field in DataViews grid layouts, Gutenberg now brings the grouping option to tables as well.

Moreover, the table gets another feature from a different layout: it is now possible to multi-select with Control / + click, similar to how the grid layout operates.

More on DataViews enhancements

The table layout is not the only thing getting some tweaks in this release; there are a handful of new goodies for dataviews, including:

  • The grid layout now uses responsive images, improving performance in the most image-heavy layouts.
  • Filters can now be locked, allowing you to see their effects without modifying them. This allows for pre-configured views, such as the ones you can find in the Site Editor’s pages screen, filtering by different statuses.
  • Speaking about filters, filtering by date just got smoother thanks to its calendar implementation.
  • The empty state shown when there are no results can now be customized.

Style shuffling in write mode

Write mode is gaining traction, and this release introduces a simple yet user-friendly feature: when in write mode, sections get a style shuffling button, allowing you to experiment with random styles and find the perfect vibe for your site!

As a reminder, write and design modes are an experiment that is meant to simplify content vs design editing 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; you can enable it in the Gutenberg experiments page and submit your feedback on the experience.

Continue reading

#gutenberg

Summary, Dev Chat, August 6, 2025

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 6.9 Roadmap

The roadmap for 6.9 has been published. Please take a look to see what’s actively being worked on for release later in the year.

WordPress 6.9 Planning Proposal and Call for Volunteers

The planning phase for 6.9 wrapped up on July 25. More information will be announced about the release team in the coming weeks.

Maintenance releases for WP 4.7 to 6.7

A maintenance update was released for branches 4.7 to 6.7.

Forthcoming releases 🚀

WordPress 6.9

WordPress 6.9 is scheduled for Tuesday, December 2, 2025. The planning phase wrapped up on July 25. More information will be announced about the release team in the coming weeks.

Discussion 💬

“New blocks in coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.” guidelines (and their lack of)

Pointed out by @mamaduka: “Do niche blocks belong in the core?”. See the related issue on Gutenberg GitHub repository.

Full discussion on Slack

Read the discussion highlights

@audrasjb suggested that shipping Canonical Plugins are probably a better option for most of the blocks listed in 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/ issue. @desrosj shared the same opinion: “For a while, the use of 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. plugins was encouraged. It would be great to have canonical plugins for blocks that are somehow differentiated in the UIUI User interface to the user as coming from w.org and can be trusted.”

On another side, @richtabor pointed out that Core should propose a more complete set of blocks to meet more user needs: “Blocks (of all kinds) are foundational to the site-building experience—they’re not just extra features, but the literal building blocks of themes and patterns. When a block is missing, it breaks the visual integrity of a theme or pattern, or simply make certain designs impossible. That’s a much more fundamental gap.” […] “I just see hundreds of people asking daily for things that aren’t there, quickly getting lost in the complexity of WordPress (install this. activate that. canonical that).”

@jorbin answered that needing to install things is an expectation from the WordPress project philosophy:

Different people have different needs, and having the sheer number of quality WordPress plugins and themes allows users to customize their installations to their taste. That should allow all users to find the remaining 20% and make all WordPress features those they appreciate and use.
https://wordpress.org/about/philosophy/

@joedolson: “With at least one – the Playlist block – I feel it should be included on the grounds that it’s currently classic functionality missing from the block editor. But overall, I think ubiquity is one of the most major relevant issues.”

@audrasjb and @karmatosed added that having dedicated working groups for each Canonical Block project may be a nice contribution experience for people wanting to contribute to smaller projects than 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/ or Core.

@johnparris: “Instead of bundling more blocks in core, could we improve the user experience for when a block is missing and make it easy to find/install right instead of showing an error? There’s more nuance of course but just thinking in general.”

@joedolson: “an element of where the boundary sits is “is this functionality or design” – fundamental design elements feel appropriate to core, for me. E.g., tabs/accordions/menus/breacrumbs, etc.”

@audrasjb: “We can also just question ourselves why it is not a feature already present in Core. For example, if we don’t have any function to manage breadcrumb trails in Core, then the block is probably 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. territory as well?”

@richtabor: “It’s not about what we want to include in core — I’d say thats the backwards approach. It should be able what people expect when building a site or page. If it’s expected, we should cover it.”

@dmsnell: “I lean on being a bit generous with thinking about additional Core blocks as long as they are generic in nature and existing web idioms. MathML is a good example where it’s definitely a minority need, but one which has been present in the web since the beginning. Blocks like the details block were delayed by two years over discussions about what it should be when again it was in the web platform and a standard idiom.” […] “I find that case-by-case basis for discussion is appropriate, while personally I like leaning on justifying why something shouldn’t be in Core rather than justifying why it should. The canonical plugins seems like a nice compromise to me.”

@audrasjb: “Once a block is introduced, it’s really hard to remove or deprecate, so maintenance / backward compatibility is an important point.” @joedolson completed: “that’s why we need to be very sure that any block we ship is using an optimal pattern.”

@richtabor: “If it’s a slider, you wouldn’t start by inserting a gallery to make a slider. You should be able to convert a gallery into a slider (via block transforms), but that’s not what most users would expect or do. Definitely a delicate balance.”

@jorbin advocated for Canonical plugins: “One of the benefits of getting these into a canonical state (ignoring the question of if they should ship with core for a second) is that core can be responsible for both backcompat and forwardcompat. When 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. Version needs to be updated, this also will provide good examples for the community and make it easier to get more sites using the most modern version.”

The discussion ended on some consensus on adding more blocks – in Core or in Canonical plugins – but what is needed is guidelines for how to make the decision on which blocks. A proposal on Make Core may also be a good way to gather more feedback eventually.

Request for comments on a new HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. API system for processing blocks

@dmsnell proposed to discuss this PR proposal.

Full discussion on Slack

Read the discussion highlights

This PR provides a Block_Scanner class which allows to walk through the structure of a text with blocks and do interesting things along the way. For example, add CSSCSS Cascading Style Sheets. class names to the “wrapping element” of a block or its inner blocks.

@dmsnell wanted to request feedback on the interface: “There are a couple of new ideas he has taken from expressed pains with parse_blocks(), one being is_non_whitespace_freeform() which sounds like a mouthful, but makes it easy to detect the difference between HTML soup and the newlines that Gutenberg stores between blocks.”

@audrasjb: “I understand the need to have a more robust method than parse_blocks() but I feel concerned about having two things to handle very similar tasks.”

@dmsnell: “I hear you. this started long ago with an attempt to make parse_blocks() lazy but then I ran into problems specifically with nested attribute access in PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher. for a reason I still don’t understand, with ArrayAccess things would be broken if you did something like $block['attrs']['settings']['supportsTheme'] = true and it hadn’t yet parsed the 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..” […] “that’s good feedback though, and I think I can do more to help clarify in the docs which is which, including adding a reference in the docs for parse_blocks().”

@jorbin: “Is this parser fully backwards compatible with parse_blocks?”

@dmsnell: “it doesn’t produce the block tree by default, but I did add in the ability to create a sub-block-tree compatible with parse_blocks(). specifically, if you want, for example, to find a gallery block and mess with it, you can scan to the gallery block, then tell the parser to produce the block tree which includes and falls inside the gallery. That lets you mix workflows because a lot of code wants to operate on inner blocks and what not, but a lot of code also only incidentally does that because we don’t have a way to express edits that are simpler.”

@justlevine: “Does this do anything to decouple parsing from rendering, or is it still intended to be hard tied into the rendering output lifecycle?”

@dmsnell: “there was a change I merged some weeks ago to optimize do_blocks() that basically frees up memory after rendering a block. Block_Scanner can technically go further and only parse one top-level block at a time, freeing up more memory. I haven’t benchmarked it, and I doubt it will be faster, but that was the underlying insight which led to the much easier patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing. that was merged. This is not intended to replace do_blocks() or render_block(), and parsing has always been decoupled from rendering. It’s viable that do_blocks() could eventually use this, but not necessary and not even the most-valuable place it can be used. Its value mostly appears when wanting to operate on parts of a document or when working with the HTML of a block. for example, I believe this is going to be the mechanism we use when parsing a block’s sourced-attributes on the server for things like block bindings or short-blocks/bits/shortcodes2.0.” […] e.g. “Replace all image block url attributes” as a render-time 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..

#6-9, #canonical-plugins, #core, #dev-chat, #gutenberg, #summary