WordPress Contributor Toolkit 1.2: One app for your first Core or Gutenberg contribution

TL;DR: WordPress Contributor Toolkit v1.2.0 has been released providing full CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. and 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/ contribution workflows for first-time contributors.

The WordPress Contributor Toolkit was created to remove the points of friction first-time contributors face before they write a line of code, especially during Contributor Days, but is becoming a great tool also for experienced contributors.

The app started by providing a seamless setup of a full WordPress contribution development environment, the first wall most newcomers hit. Version 1.0 brought a full Core contribution workflow into the app: from reading a TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. ticketticket Created for both bug reports and feature development on the bug tracker. and testing the work attached to it, to sending your own fix back as a pull request or a Trac 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., without ever leaving the app.

Now, version 1.2 adds also a full Gutenberg contribution workflow.

A first Gutenberg contribution, from start to finish

A Gutenberg contribution follows the same path as a Core ticket in the app: create a site, link the work item, try the work that already exists, write your fix, and send it.

1. Create a Gutenberg site

Click Create a site, choose a folder, and pick what the site contributes to: WordPress Core, the default, or Gutenberg. That choice decides what the site clones, how it builds and how it runs, and it cannot be changed afterwards. Everything else is the same app: 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., the terminal, the review screen, the ways to submit.

A Gutenberg site clones 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’s repository, installs its dependencies with the bundled npm 11, and builds the packages, all as one continuous setup. When it finishes, click Start dev server. The app runs a stock WordPress in Playground with your checkout mounted as the Gutenberg plugin, already activated. Posts, settings and uploads survive stopping the server and restarting the app.

Setup ends with a full build, so the server starts in seconds. To have what you save recompiled, click Start build watch, which runs Gutenberg’s own npm run dev. It rebuilds everything once, then recompiles each save.

2. Link the site to a 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

Where a Core site has its Trac ticket card, a Gutenberg site has a GitHub issue card. Enter the issue number or paste its URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org to link the issue to the site.

The issue gets its own branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch". inside the site, so everything ticket branches do on a Core site works here too: switch between issues in seconds, park work you are not ready to finish, move an issue onto the current 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. with one click.

3. Check the work that already exists

A linked issue shows the pull requests that fix it showing the pull request’s state.

Each PR associated to an issue has an Apply… button. The app previews the files it will touch, then checks the pull request out on its own branch, with the author’s commits. Revert this PR brings your own work back.

4. Review and send the contribution

Click Review & submit changes to inspect the complete diff. On a Gutenberg site the destination is Open a pull request. You sign in to GitHub through the device flow, and the app forks WordPress/gutenberg to your account, pushes a branch and opens the pull request through 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.. The authorization lives in memory only, and is gone when you quit the app.

The form asks for a title and notes for reviewers. Gutenberg reviewers want testing steps, so that is where they go: what to open, what to click, what should happen. The app adds the Fixes #N line for you, so the pull request appears on the issue as soon as it opens. There is nothing to post anywhere else.

Every site is a real GitGit Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git is easy to learn and has a tiny footprint with lightning fast performance. Most modern plugin and theme development is being done with this version control system. https://git-scm.com/ repository

Since v1.1, a pull request you try arrives as its own branch with its author’s commits, its conflicts are the same ones GitHub reports, and your ticket can move onto today’s trunk. That comes from one change: the app now ships Git itself (the client GitHub Desktop uses) instead of the JavaScriptJavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com reimplementation 1.0 relied on.

It runs with none of your machine’s settings, and you never see it. A Git you already have, or the lack of one, changes nothing about how a site behaves.

Every operation is now a Git command run on your behalf. Creating a site is a clone, linking a ticket is a branch, applying a patch is git apply, trying a pull request is a fetch and a checkout, updating trunk is a fetch and a merge. What the app does in that folder is exactly what you would see if you had typed the commands yourself. That also means a patch fits or fails the way it will for the reviewer, and when it fails the app names the regions that failed and leaves the checkout unchanged.

What this gives you:

  • The whole history, from the terminal or your editor. Open the site folder and git log, git blame and git bisect work as they do on any clone. A new site brings the full history of wordpress-develop or Gutenberg, fetching old file contents only when something asks for them, so it is not much larger than the shallow clone 1.0 made.
  • A pull request you apply shows up as its author’s commits. After Apply…, git log lists the pull request’s commits, with their authors, on a pr/N branch. You can read them, diff them, and see exactly what you are testing.
  • Your work is on branches you can name. Each Core ticket lives on ticket/N, each Gutenberg issue on issue/N, each pull request you try on pr/N. Parking a ticket in the app is a checkout, and git branch shows everything the app is holding for you.
  • The site outlives the app. Delete the app, or open the folder on another machine, and the repository continues with whatever Git is there. Nothing you did depends on the Toolkit staying installed.

Working from the terminal is fine too. Reading the site with git log or git diff never gets in the app’s way, and if you start a merge or a rebase yourself the app waits: it refuses to write until you finish or abandon it, and names the commands that do either.

Sites created before 1.1 cannot be written to by this version. You can still read them and save their work as a patch, but to keep contributing you create a new site. The app says so on the site’s card, and offers to create one.

Links from your browser

Since 1.1 the app answers wpct://ticket/N links, so a link can hand a Trac ticket to the app instead of making you type the number. The app asks before it links the ticket to the site you have open, because linking switches branches, and a ticket link that arrives while a Gutenberg site is open waits for a Core site. On Windows, open the app once before trying a link.

This enables much smoother contribution workflows. For example, with WP Trac Triager, a Chrome extension for triaging Core Trac tickets, every ticket on Trac gets a link that opens it in Contributor Toolkit, with its pull requests ready to test.

Help shape the next version

Try it on a real ticket or issue and tell us how it went:

  • Something broke? Open an issue with what you did and what happened.
  • Something felt off? Use the feedback form, or the feedback button in the app.
  • Want to talk it through? Ask in #core, or #core-editor for the Gutenberg flow, or comment below.

Gutenberg support is new, so the most useful reports come from taking an issue all the way to a pull request.

Resources

Props to @greenshady and @welcher for review and feedback.

+make.wordpress.org/playground/ +make.wordpress.org/test/ +make.wordpress.org/community/

#contributor-day, #playground, #wordcamp

WordPress Trac MCP server

Ask your AI assistant about any 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/ TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress..

Announcing the the WordPress Trac Model Context Protocol (MCP) server. Connect it to Claude, ChatGPT, or any other MCP client to read tickets, changesets, and timeline history straight from Trac.

Public and free to use: no account or 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. key needed. Works with every WordPress.org Trac.

Example usage:

  • “What’s left to do on #59446, and which pull requests are still open?”
  • “Show me open HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. API tickets, most recently changed first.”
  • “What did saxmatt commit in January 2005?”
  • “Summarize r62723 and its diff.”

Key tools: searchTickets, getTicket, getChangeset, getTimeline, and getTracInfo. A ticketticket Created for both bug reports and feature development on the bug tracker. comes back with discussion, attachments, related changesets, and linked 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/ pull requests with their checks and reviews.

CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Trac is the default, and the server works with every other Trac: 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., Themes, Plugins, bbPressbbPress Free, open source software built on top of WordPress for easily creating forums on sites. https://bbpress.org, BuddyPress, GlotPress, and GSoC. Connect to /mcp/meta and the tools read Meta Trac.

Connect with a one-liner like this in Claude Code:

claude mcp add --transport http wordpress-trac https://wordpress-trac-mcp-server-prod.a8c-aiops.workers.dev/mcp

Other clients take the same URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org, or use mcp-remote as a local bridge. ChatGPT uses the search-and-fetch endpoint at /mcp/chatgpt. The README has every endpoint and client setup.

The code lives in GitHub at WordPress/trac-mcp.

Props to @jonsurrell, whose issues and pull requests shaped this tool. Thanks also to James LePage, who wrote the first version, and to David Newman for help setting up the hosting. And to @obenland, who added support for all the Tracs.

#trac

Dev Chat summary: September 23, 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 🔗 See the agenda post.

Announcements 📢

7.2

7.1.x

  • WordPress 7.1.1 was released and contained 17 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 on CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., 19 bug fixes for 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 also contained 11 security fixes
  • Shortly after, WordPress 7.1.2 was released and fixed one important security issuesecurity issue A security issue is a type of bug that can affect the security of WordPress installations. Specifically, it is a report of a bug that you have found in the WordPress core code, and that you have determined can be used to gain some level of access to a site running WordPress that you should not have.

General

Discussion 💬

From @leemon

@leemon is waiting for feedback on these 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/ open issues. Some already have PRs associated with them:

  • Additional CSSCSS Cascading Style Sheets. styles are not generated for Navigation Link blocks on the frontend: #82171
  • Add Border and Spacing support to Navigation, Navigation Link and Navigation Submenu: #66392, #66483 and #68455
  • adding templateParts to child themeChild theme A Child Theme is a customized theme based upon a Parent Theme. It’s considered best practice to create a child theme if you want to modify the CSS of your theme. https://developer.wordpress.org/themes/advanced-topics/child-themes/ disables random titles of other template parts: #39166
  • slimImageObject drops 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. fields added to attachments: #64415

From @afercia

Andrea would like to get some feedback on Trac ticket #65729, specifically on the 3 different potential approaches summarized in comment 6.

@audrasjb shared his preference for adding a parameter to wp_strip_all_tags(), which is Andrea’s least favorite option as function should ideally be responsible to do only one thing. Jb agreed.

@dmsnell added that probably trying to handle this in wp_strip_all_tags() could backfire. He also argued against calling html_entity_decode() first and then wp_strip_all_tags() since this would be a pretty severe anti-pattern as it creates mis-parses which lead to data corruption or worse. This all relates back to escaping late and making sure we don’t confuse HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. markup and plaintext. To make matters worse, the type of a post title in WordPress is HTML markup, which is different from the type of an HTML page’s title, which is plaintext. so in some cases things like attachment titles should be rendered as HTML and at other times the plaintext context should be extracted from it.

More discussion happened in this Slack thread. Further discussion welcome in the related ticketticket Created for both bug reports and feature development on the bug tracker.: #65729

Also, for the Build/Test tools component, Andrea is waiting for feedback on this ticket: #65621

#7-1-x, #7-2, #core, #dev-chat

Iterating from live events to livestreamed releases

After a few rounds of doing releases at live events, first at State of the WordState of the Word This is the annual report given by Matt Mullenweg, founder of WordPress at WordCamp US. It looks at what we’ve done, what we’re doing, and the future of WordPress. https://wordpress.tv/tag/state-of-the-word/. 2025 and most recently with WordPress 7.1 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, it’s time to iterate and move towards a live-streamed zoom option. Doing in-person live releases has been a good experiment to bring WordPress’s big moments onto the big stage. Tying releases to events has also come with a range of constraints and downsides in terms of complex logistics, managing people power at events, and limits in how many members of a release squad can attend the event itself. Release squad feedback has echoed this—running a process that wasn’t designed to happen on stage adds real stress.

In talking to @matt about this, he shared an idea to try a livestreamed Zoom that the entire team can participate in, without the constraints of a fixed event date. The event would be done in a webinar format where release squad members and folks deeply involved in the release can share, while others can watch and ask questions. This should help ensure more of the release squad can participate, timezone permitting, without the financial burden of needing to attend an event. It also means the logistics will be far more based on what the release itself needs rather than being dictated by the live event itself.

This iteration is what will be done for the next few releases, starting with WordPress 7.2, set to be released in early December 2026. More details will be shared, including how to join, closer to the release date. 

Thank you to everyone who helped make these in person releases happen and for giving feedback to help us iterate. If you have ideas about how to make the online version the best it can be, please share below.

Props @jorbin @jeffpaul @audrasjb for pre-publish review.

#release-process

New public repo: core release tools

The coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. team is working hard on better release automation, including CLICLI Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress. scripts, AI skills, and updated documentation.

Why is this work important? A minor WordPress release—including every security 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.—can touch 20+ branches, and much of the work is manual and error-prone.

Example tasks include: 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.) the older WordPress version branches, draft a HelpHub page per version, check the SVNSVN Subversion, the popular version control system (VCS) by the Apache project, used by WordPress to manage changes to its codebase. merges for accuracy, and build the props list.

Our mission is to remove friction and help releases become faster, smoother, and more predictable.

👉 Six new tools are now live in WordPress/core-release-utils:

  1. helphub: draft and check HelpHub version pages.
  2. svn-tags: write the svn cp tag commands from each branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch".’s $wp_version.
  3. verify-tags-reached-mirror (props @adrianmoldovanwp): confirm release tags reach 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/ mirror.
  4. svnmergecheck: confirm svn merge --record-only record every revision before a commit.
  5. ghpatch (props @peterwilsoncc and @johnbillion): apply a PR diff to an SVN checkout with svn patch.
  6. wp-profile-link-generator (props @jorbin and @johnbillion): build the contributor list for the release post and the credits 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. edit.

Each tool has a README and tests. The tools print the commands—you run them.

Try these on your next minor releaseMinor Release A set of releases or versions having the same minor version number may be collectively referred to as .x , for example version 5.2.x to refer to versions 5.2, 5.2.1, 5.2.3, and all other versions in the 5.2 (five dot two) branch of that software. Minor Releases often make improvements to existing features and functionality. and tell us how they went: feedback and PRs welcome.

Thanks to @jorbin for creating the new GitHub repo.

Gutenberg’s JavaScript unit and integration tests now use Vitest

TL;DR

  • 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/’s JavaScriptJavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com unit and integration tests now use Vitest, bringing better support for modern JavaScript modules and real-browser component testing.
  • Tests explicitly import Vitest APIs. Filenames select Node, jsdom, or Browser Mode according to what each test needs.
  • @wordpress/scripts 36.0.0 makes Vitest the default for test-unit-js. Projects install and configure their own test runner.
  • Existing projects can keep their Jest tests through test-unit-jest, after a one-time setup update. This command receives maintenance support and has no scheduled removal.
  • @wordpress/jest-preset-default and @wordpress/jest-console are deprecated. Published versions remain available for existing projects. No replacement WordPress Vitest preset or console packages are planned.

Following the initial announcement in #core-editor, Gutenberg has completed its migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. from Jest to Vitest for JavaScript unit and integration tests.

The migration changes both Gutenberg’s test setup and the published WordPress test tooling. Most tests keep a familiar structure, with more explicit control over their environment.

Why Vitest?

Modern JavaScript module support and real-browser testing are two major benefits.

As more dependencies adopted ECMAScript modules, or ESM, Gutenberg’s CommonJS-based Jest setup needed additional compatibility configuration. For example, we maintained an explicit list of dependencies that Babel needed to transform for Jest. Updating a dependency could therefore require changes to the test configuration too.

Vitest’s native ESM support reduces the need for these workarounds. Tests run in Node by default, with DOM or browser environments selected explicitly when needed. This makes the test environment easier to understand and avoids supplying simulated browser behavior to tests that don’t need it.

Browser Mode runs focused unit and integration tests in a real browser. Component tests can check computed styles, element sizes, scrolling, focus, and keyboard interactions without recreating those behaviors through jsdom mocks. jsdom remains available for DOM tests that don’t depend on browser rendering.

Maintainability also matters. Jest’s maintainers have acknowledged a period of slower progress and fewer releases, though recent versions have brought performance and compatibility improvements. Gutenberg’s move to Vitest addresses longer-term needs: reducing custom compatibility configuration and sharing the Vite tooling already used by Storybook. Its Jest-compatible APIs also made an incremental migration possible.

The migration adds real-browser coverage while keeping test execution parallel. Browser Mode tests run alongside the Node and jsdom suites and, in our migration benchmarks, finished before the longest-running Node/jsdom group. Browser testing therefore did not determine the overall test completion time in that measured configuration. We also optimized test workers and shared setup to reduce runtime during the migration.

What changes for Gutenberg contributors?

Tests explicitly import APIs such as describe, test, expect, and vi from vitest. Some mocking APIs, assertions, and command-line options differ from Jest, so existing examples may need more than a change of imports.

Test filenames select the environment:

  • *.test.* without an environment suffix runs in Node.
  • *.jsdom.test.* runs in jsdom for DOM structure, events, and state that don’t depend on browser rendering.
  • *.browser.test.* runs in Browser Mode for real CSSCSS Cascading Style Sheets., layout, and browser-dependent interaction.

Browser Mode also requires a browser installation and uses different ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org rendering and interaction APIs from jsdom tests. The Testing Overview in the Block Editor Handbook covers setup, choosing an environment, and writing and running tests.

The main contributor commands remain npm test and npm run test:unit.

What changes for consumers of WordPress test tooling?

Starting with @wordpress/scripts 36.0.0, wp-scripts test-unit-js uses the project’s installed Vitest. This release includes breaking changes to test configuration, dependencies, APIs, and command-line options.

For a new test setup, start with the test-unit-js documentation. It explains installation and configuration and links to examples for Node, jsdom, and Browser Mode. Projects own their configuration and choose the environments and supporting dependencies they need.

Existing projects have two options:

  • Move to Vitest. Follow the migration guidance linked from the package documentation to update dependencies, configuration, tests, and commands.
  • Keep Jest. Switch Jest commands from wp-scripts test-unit-js to wp-scripts test-unit-jest, install the required Jest dependencies directly, and configure the project explicitly. Existing tests and snapshots can stay on Jest.

Keeping Jest requires more than renaming the command if your project relied on the defaults previously bundled with @wordpress/scripts. The package no longer supplies Jest, its environment, or the WordPress Jest configuration and transformer. The documented upgrade steps cover how to retain that setup using the published packages.

The public test-unit configuration in @wordpress/eslint-plugin 27.0.0 and the default wp-scripts lint-js unit-test rules also switch to Vitest. Projects keeping Jest need explicit Jest lint rules; the upgrade guidance covers these too.

test-unit-jest remains a maintenance-only command with no scheduled removal. New testing features target Vitest.

What happens to the WordPress Jest packages?

@wordpress/jest-preset-default and @wordpress/jest-console are deprecated and will no longer receive updates. Their published versions remain available for existing Jest projects.

Most of the functionality that motivated separate WordPress packages can now use Vitest’s built-in features and configuration. There are therefore no corresponding @wordpress/vitest-preset-default or @wordpress/vitest-console packages.

Some behavior still needs explicit setup. For example, Vitest’s spies can check expected console calls, but automatically failing tests on unexpected console output requires additional setup. The configuration examples explain which behavior projects need to configure themselves.

Questions and feedback

Comment here, ask in #core-editor, or comment directly on the migration tracking issue (#80855), which records the implementation and decisions behind this change.

Props to @manzoorwanijk, @aduth, @0mirka00, @jonsurrell, @tyxla, and @mamaduka for driving and reviewing this work, and to @aduth, @manzoorwanijk, @simison and @tyxla for reviewing this post.

#gutenberg, #jest, #testing, #vitest

Dev Chat Agenda – September 23, 2026

The next WordPress Developers Chat will take place on Wednesday, September 23, 2026, at 15:00 UTC in the core channel on Make WordPress Slack.

The live meeting will focus on the discussion for upcoming releases, and have an open floor section.

The various curated agenda sections below refer to additional items. If you have ticketticket Created for both bug reports and feature development on the bug tracker. requests for help, please continue to post details in the comments section at the end of this agenda or bring them up during the dev chat.

Announcements 📢

7.2

General

  • WordPress 7.1.1 was released and contained 17 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 on CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., 19 bug fixes for 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, and 11 security fixes
  • WordPress 7.1.2 was released and fixed one important security issuesecurity issue A security issue is a type of bug that can affect the security of WordPress installations. Specifically, it is a report of a bug that you have found in the WordPress core code, and that you have determined can be used to gain some level of access to a site running WordPress that you should not have.

Discussions 💬

The discussion section of the agenda is for discussing important topics affecting the upcoming release or larger initiatives that impact the Core Team. To nominate a topic for discussion, please leave a comment on this agenda with a summary of the topic, any relevant links that will help people get context for the discussion, and what kind of feedback you are looking for from others participating in the discussion.

Open floor  🎙️

Any topic can be raised for discussion in the comments, as well as requests for assistance on tickets. Tickets in the milestone for the next major or maintenance release will be prioritized.

Please include details of tickets / PRs and the links in the comments, and indicate whether you intend to be available during the meeting for discussion or will be async.

#7-1, #7-2, #agenda, #core, #dev-chat

Performance Chat Summary: 22 September 2026

The full chat log is available beginning here on Slack.

WordPress Performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets

Performance Lab 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 other performance plugins)

  • @westonruter noted that there is a backlog of Performance Lab work sitting there for the team to hack on, but he has not had time over the past couple of weeks.

Our next chat will be held on Tuesday, October 6, 2026 at 16:00 UTC in the #core-performance channel in Slack.

#core-performance, #hosting, #performance, #performance-chat, #summary

Roadmap to 7.2

WordPress 7.2 is set to be released in early December 2026. Notes leads the way with the ability to add suggestions and emoji reactions, offering more direct and interactive collaboration. Dedicated security efforts revolve around a “sudo mode” that gates sensitive actions behind re-authentication, a Secrets 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. that offers a first-class way to store credentials safely, and a round of hardening for Application Passwords. Styling becomes more robust and predictable, with the ability to style form elements in Global Styles, expanded responsive styling and custom state support, and individual blocks that properly reflect global settings. Additions to 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. library expand what’s possible with a new Description List block and the long-awaited Table of Contents block. The everyday experience improves with fixes for writing annoyances, clearer error messages with a copy button, and refinements to the media inserter and modal. The adminadmin (and super admin) bar and menu get a fresh set of icons, swapping dashicons for SVGs that render more reliably and behave predictably for assistive tech. An extensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. Site Editor lets 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 register their own screens and settings for the first time. Responsive styling gains support for third-party blocks with custom controls, and DataViews and DataForms let third parties control which fields appear and which layouts are available for any entity. A new default theme called Ipsum ships with the release, offering an intentionally minimal blank canvas built for making your own.

As always, what’s shared here is being actively pursued, but doesn’t necessarily mean each will make it into the final release of WordPress 7.2.

For a more detailed look at the work related to the block editor, please refer to the 7.2 board and review the currently open Iteration issues.

Table of Contents

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)

While accessibility efforts run through nearly every area of this release as a matter of course, a few pieces of dedicated, high-effort work stand out for 7.2:

AI

The 7.1 cycle gave clear guidance that AI features must first demonstrate clear adoption and practical value before being considered for CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. As a result, the work below is being pursued in the AI plugin without a guarantee of landing in 7.2. If you’re keen to see these features graduate into Core, the best way to help is to use and test the AI plugin and share feedback.

Alongside this work, there are efforts underway to land enhancements to Connectors to add support for activation/deactivation from the screen itself, improve performance, and accept keys when the provider is temporarily down. 

Admin

DataViews, DataForms iteration

Extensibility is the main priority with work underway to evolve the initial view config API work with view/form config registered on the server, plus registering fields and actions on the server. Real screens in the experience drive the direction of extensibility, from switching style 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. to data views to supporting the extensible site editor. As part of this, please help test DataForm editor inspector as the post inspector (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., excerptExcerpt An excerpt is the description of the blog post or page that will by default show on the blog archive page, in search results (SERPs), and on social media. With an SEO plugin, the excerpt may also be in that plugin’s metabox., status, date, author, template, etc.) are in the process of being replaced by a DataForm. 

Outside of extensibility, two key UXUX User experience improvements are underway to properly reflect hierarchy and improve the discoverability of bulk actions.

Follow DataViews, DataViewsPicker, DataForm, Fields in WordPress 7.2 for more details.

Error state overhaul 

Error message with a show details and copy error message options.

In line with defensive design best practices, this work aims to make error messages clearer and more diagnosable, and to add a copy button so an error is easier to search for or share.

Review the clearer error messages PR and the copy button PR for more details.

Evolve Navigation editing in Site Editor 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. 

Make the Extensible Site Editor Sidebar a more complete surface for common menu editing tasks, continuing the editing-experience improvements started in 7.1.

Follow Improve Navigation Editing in the Extensible Site Editor Sidebar for 7.2 for more details.

Extensible Site Editor

Work continues on a new, extensible foundation for the Site Editor, built on the wordpress/boot routing package and already nearing feature parity with today’s editor. Beyond a rebuild, it opens the Site Editor up to third parties for the first time, with a server-side view-config endpoint that lets plugin authors register their own screens and settings instead of shipping custom, one-off APIs. Other in-flight projects, including navigation editing, are already building on this foundation rather than duplicating it.

Follow Extensible Site Editor: 7.2 Iteration Issue for more details

Omnibar iteration

WordPress admin with SVG icons visible in the admin bar and menu.

After landing the omnibar in 7.1 to provide more consistency across various editing interfaces, more iterations are planned for 7.2, including replacing dashicons with SVG Icons, improving the command palette, continued accessibility review, and continued design iterations. 

Follow Omnibar: WP 7.2 Iteration Issue for more details

“On This Day” 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.

After being punted from WordPress 7.1, another attempt is underway to land a new “On This Day” widget that resurfaces past content, a popular feature across many different platforms. 

Follow Feature request: On This Day dashboard widget for more details.

Blocks & APIs

Description list block

A new block adds native semantic description list support to the block library through three static blocks: core/description-list serializes to <dl>, core/description-term serializes to <dt>, and core/description-detail serializes to <dd>. This follows the same parent and innerblocks approach as other composite blocks like Tabs and List, and makes it much easier to build glossaries, metadata, specifications, and other term/description relationships.

Follow Block for description list for more details.

Keyword search for Icon Block

Complete the work of adding keyword search to the Icon Block. Currently, only the label is searched. Keyword search, for example, allows for the “menu” icon to be found by typing in “hamburger”, “navigation”, or “list”.

Follow the keyword-based search in the icons registry PR for more details.

Interactivity API iteration

The Interactivity API provides a standard way for developers to add interactions to the front end of their blocks and two main initiatives are underway to add to the power of the Interactivity API.

“The data-wp-htmlHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. directive will add a missing primitive: today there is no supported way to render markup from the store inside an interactive region and have the result reflected reactively. This initial version will ship a directive that renders only values explicitly trusted by application code through asDangerousHTML(), leaving sanitized plain strings for a later version. 

The router work gives extenders a supported, reactive way to observe client-side navigations and know what initiated them, replacing the deprecated state.navigation.hasStarted/hasFinished pair.”

Follow Interactivity API for WordPress 7.2 for more details.

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 upgrade

Work continues to make 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/ fully support React 19, with types, ecosystem dependencies, and rendering fixes largely landed. This is unlikely to fully land for WordPress 7.2 but is being noted here for broader awareness for when it does in a future release. 

Follow Upgrading to React 19 for more details.

Table of Contents block

Take the long-experimental Table of Contents block stable by moving it to server-side dynamic rendering, so the editor and front end share one source of truth for headings.

Follow stabilize the Table of Contents Block for more details.

Collaboration

Collaborative editing is intentionally not on the roadmap for 7.2, even as work continues alongside this release cycle. As in 7.1, it’s clear more time is needed for a number of architectural decisions, and rather than list it here only to pull it later, it’s being left off entirely. You can follow the work in this iteration issue, and everyone is encouraged to join the collaborative editing outreach effort helping stabilize the feature.

Notes iteration: suggestions, emojis, and more

A note with emoji reactions highlighted.

Notes (aka block commenting) have a range of slated improvements that aim to make Notes more discoverable, more powerful, and easier to use. Suggestion mode, where one can leave suggested edits to be accepted or rejected as notes, is the centerpiece of this cycle as it marks a huge step forward in collaborating more directly with others. Other planned enhancements include emoji reaction support and a dedicated shortcut in the block toolbar for efficiently adding notes. 

Follow Notes iteration for WordPress 7.2 for more details.

Default Ipsum theme

Multiple different color options of the Ipsum theme.

Ipsum is the proposal for the next default theme, planned to be bundled in WordPress 7.2. It is an intentionally minimal blogblog (versus network, site) theme that centers on a blank canvas to make your own, with built-in room for creativity.

Read Introducing Ipsum, the new default theme for more details.

Design & Editor

Block Editor paper cuts

A broad quality-of-life sweep fixing dozens of small but persistent writing-flow, selection, paste, drag-and-drop, and mobile annoyances in the block editor. This is part of a continual focus to make writing great in WordPress.

Follow Block Editor Paper Cuts for more details.

Customize form elements in Global Styles

Forms and their elements, like buttons or text input fields, are a common use case for websites. The work for 7.2 aims to give users the ability to style common form elements consistently in Global Styles, without writing custom CSSCSS Cascading Style Sheets. or editing 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. by hand. Currently, the button, textInput, and select elements are already supported in theme.json so this release is focused on adding an interface for the supported items, adding the missing label element, and improving support for interactive input states.

Follow Form elements in Global Styles – iteration for WP 7.2 for more details.

Expanded and consolidated block supports

Work continues on new block supports and design tools (backgrounds, dimensions, position), including continuing the consolidation of ad hoc block controls in favor of more consistent supports. All of this work makes the foundation of block supports more robust and predictable to use. 

Follow Block Supports and design tools follow-up for more details. 

Responsive style states for blocks iteration 

After responsive styling was introduced in 7.1, this cycle focuses on expanding which controls support states, adding a public API for third party blocks with custom controls to work with responsive styling, and refining the experience when switching into and out of the responsive styling mode.

Follow Responsive style states for blocks — 7.2 tasks for more details.

Set custom states for blocks

Custom states work allows users to style the “active” item in interactive blocks, like the current page in a navigation menuNavigation Menu A theme feature introduced with Version 3.0. WordPress includes an easy to use mechanism for giving various control options to get users to click from one place to another on a site., directly from the editor. The focus of this release is on adding a -current custom state for Navigation Link and the Tabs block, as well as adding color, border, and spacing support to the Navigation Link block. Adding these additional supports means extra control and options for styling.

Follow Custom states for blocks – iteration for WP 7.2 for more details.

View inherited styles

Currently, any block that has options set in Global Styles don’t reflect those values in their settings. Work is underway to change that so, if a paragraph block is set to red globally, when a user opens the block settings for a paragraph block the red color is clearly shown. Reflecting these global values helps clarify for users when they’ve overridden a global option and where/when to change options depending on what they want to do. Various design decisions need to be made beyond this including whether to show an indication that a global option has been overridden and how best to offer a clear way to reset a change to what’s set globally.

Follow Display inherited Global Styles and local overrides (7.2) for more details.

Media

Client Side Media iteration

As a reminder, client-side media provides a progressive enhancement to the current server-based approach to media processing and delivers more consistent media processing across WordPress installs, regardless of where a site is hosted. For this cycle, the focus is on maturing browser-based media processing by hardening the upload pipeline, expanding format support, and completing performance work.

Follow Client Side Media iteration for WordPress 7.2 and beyond for more details.

Dynamic galleries and media inserter

This work focuses on a few pieces: a redesign of the media inserter with a focus on a more scalable experience for browsing and adding images for sites with large media libraries, expanding sources for the dynamic gallery block variation, and bringing sorting options to the static gallery block.

Follow WordPress 7.2: Dynamic galleries and media inserter for more details.

Media Editor Modal iteration

After landing in WordPress 7.1, for this iteration, the focus is on a better experience for attached media and tracking the relationship between originals and cropped derivatives. For the latter,  this work aims to establish a more formal lineage tracking between cropped image attachments and their originals, addressing a current gap where each crop spins up an untracked, standalone attachment that risks cluttering the media library over time. 

Follow WordPress 7.2 Iteration: Media Editor Modal for more details.

Performance 

For this cycle, the focus is on elimination of script/style concatenation in favor of prefetching and enhanced responsive images. If you’d like to help test the latter, please use the Enhanced Responsive Images plugin from the Performance team and give feedback.

Revisions

The focus of this cycle is on polishing the visual revisions experience that shipped in 7.0 so comparing and restoring changes feels effortless. 

Follow Visual Revisions: post-7.0 polish for more details.

Security

Application passwords improvements:

This work covers security hardening and UX refinements for Application Passwords, from better local/HTTPSHTTPS HTTPS is an acronym for Hyper Text Transfer Protocol Secure. HTTPS is the secure version of HTTP, the protocol over which data is sent between your browser and the website that you are connected to. The 'S' at the end of HTTPS stands for 'Secure'. It means all communications between your browser and the website are encrypted. This is especially helpful for protecting sensitive data like banking information. environment detection to user notifications and safer default role handling. Below are a prioritized list of tasks:

Improved HTML processing

Work continues to harden how WordPress parses and processes HTML, building on the HTML API to make handling of markup safer and more reliable throughout Core.

Secrets API

WordPress has no first-class way to store a credential and a recent proposal outlines a Secrets API to solve this problem, along with 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/ support, with a proper UIUI User interface planned for a future release. 

Read Proposal: A Secrets API for WordPress 7.2 for more details.

Sudo mode: reauthentication for specific tasks

Initial work is starting on the possible introduction of a “sudo mode” feature, which can gate highly privileged administrative actions behind a re-authentication prompt even when you’re already logged in. Further details, a proposal, and a call for collaboration will be published shortly and this post will be updated with the corresponding links.

Open to contributors

The above efforts have dedicated folks working on them for the release and folks are welcome to join efforts. The following items don’t have dedicated folks working on them, are high impact to work on, and are up for grabs. It’s not a comprehensive list and it’s meant to be a starting point as I’ve gotten feedback that it’s hard to always know where to begin. Please comment on the issues themselves and below if you plan to take one on:

  • Join the PHPUnit test cleanup for 7.2.
  • Add native date/time controls to the Publish box — PR #13050.
  • Rework the Custom Fields editing flow — PR #12348.
  • Add a toggle to control metaboxMetabox A post metabox is a draggable box shown on the post editing screen. Its purpose is to allow the user to select or enter information in addition to the main post content. This information should be related to the post in some way. reordering — PR #12627.
  • Fix the visuals/CSS on dashboard metabox controls — PR #12339.
  • Close the remaining UX gaps in the gallery lightbox experience from earlier lightbox/carousel work — Issue #51132.
  • Improve homepage setup (showing latest posts vs. a static page) to reduce a major source of user pain — Issue #63783.
  • Introduce levels of block validation so the editor can recover content instead of showing a “this block is broken” dead-end — Issue #21703.
  • Formalize how block attributes are organized and surfaced in the editor sidebar — Issue #73845.
  • Add the ability for users to create their own named block style variations in Global Styles — Issue #49602.
  • Show the Style Book for Typography, Colors and Blocks, including block states  — Issue #83065.

#7-2, #roadmap