What’s new in Gutenberg 22.5? (04 February)

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

Gutenberg 22.5 has been released and is available for download!

It brings practical refinements for your editing workflow. You can now add custom CSSCSS Cascading Style Sheets. to individual blocks, and the Image 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. shows aspect ratio controls for wide and full alignments. List View gets more useful with full block titles and actual content displayed for list items. The release also stabilizes viewport-based block visibility and pattern editing, plus adds focal point controls for fixed Cover backgrounds and text column support for Paragraphs.

Table of contents

Custom CSS Support for Individual Blocks

Gutenberg 22.5 brings custom CSS support for individual block instances, letting you write styles that target specific blocks without affecting others of the same type. A has-custom-css class is automatically added in both the editor and frontend for dynamic blocks, making your custom styles easier to manage. If you’ve been working around this limitation with extra wrapper blocks or global CSS, your workflow just got simpler. (#73959, #74969)

Screenshot showing block-level custom css box

Image Block: Aspect Ratio Control for Wide and Full Alignment

The Image block now shows aspect ratio controls when you choose wide or full alignment. Previously, aspect ratio options only appeared for default-aligned images, a limitation when designing hero sections or full-width layouts. Now you can lock in your preferred proportions regardless of alignment, giving you more consistent control over how images display across different screen sizes (#74519)

Illustration of controling image aspect ratio for wide and full widths

List View Improvements

Two enhancements make List View considerably more useful in this release. You’ll now see full block titles instead of truncated labels, and List Items display their actual content rather than generic “List Item” text. When you’re navigating complex documents with nested lists, these small changes make a real difference—you can finally tell your list items apart at a glance (#74798, #74794)

Other Notable Highlights

  • Cover Block: Focal point picker for fixed backgrounds: You can now set a focal point even when using fixed/parallax backgrounds (#74600).
  • Paragraph Block: Text column support: Paragraphs can now flow into multiple columns directly via block supports (#74656).
  • Navigation: Submenus always open option: A new toggle lets you keep submenus permanently expanded rather than requiring hover/click (#74653).
  • In-editor 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. (initial implementation: Early groundwork for viewing revisions directly in the editor, though without “diffing” yet (#74771).

Changelog

Enhancements

Block Library

  • Add custom CSS support for individual block instances. (73959)
  • Add the has-custom-css class name to the editor and dynamic blocks. (74969)
  • Allow for themes to define the overlay attribute without using a theme slug. (74119)
  • Breadcrumbs Block:
    • Show custom block name. (73690)
    • Add example block previews. (74808)
  • Comment Date: Add textAlign Support. (74599)
  • Comment Edit Link: Migrate to text-align block support. (74720)
  • Comment Reply Link: Migrate to text-align block support. (74760)
  • Comments Title: Migrate to text-align block support. (74945)
  • Cover Block: Enable focal point picker for fixed background. (74600)
  • Enhance Term List block: Pre-select current term on term archive pages. (74603)
  • Handle deleted navigation overlays. (74766)
  • Image block: Show aspect ratio control for wide and full alignment. (74519)
  • List Item: Show content instead of block name in List View. (74794)
  • Navigation Overlay:
    • Add 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. preview. (74780)
    • Insert default pattern on creation. (74650)
    • Update overlay control labels. (74690)
    • Default new blocks to “always” show overlays. (74890)
  • Navigation overlay patterns:
    • Centered navigation with info. (74862)
    • Centered navigation. (74861)
    • Overlay with accent background. (74849)
    • Overlay with black background. (74847)
  • Navigation:
    • Add a new option that toggles submenus always open. (74653)
    • Don’t use a nav 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.) for navigation blocks inside overlays. (74764)
  • Paragraph: Add text column support. (74656)
  • Verse Block: Add new textAlign support. (74724)
  • Feat/coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. tabs restructure. (74412)
  • Stabilise viewport based block visibility. (74839)

Block Editor

  • Block visibility:
    • Refactor metadata to use nested structure. (74602)
    • Create selectors for block visibility in current viewport (device setting or responsive). (74517)
    • Render blocks when hidden at all viewports (and other changes). (74679)
  • Inserter Component: Improving Stories. (74922)
  • List View support: Show full block titles. (74798)
  • MediaReplaceFlow: Move Reset option to bottom of menu. (74882)
  • Try storing global styles in static var in layout render. (74828)
  • Pattern editing: Stabilize and remove the experiment flag. (74843)

DataViews

  • Add card form layout validation. (74547)
  • Include totals items count in DataView footer. (73491)
  • MediaEdit: Support custom validation. (74704)
  • Show validation errors when a panel closes. (74995)
  • Add content element guidelines for fields in DataForm. (74817)

Components

  • DataForm: Add combobox control. (74891)
  • UIUI User interface: Add Select primitive. (74661)
  • Add Tooltip component to @wordpress/ui. (74625)
  • Consolidate border tokens. (74617)
  • Design System: Add guidelines for destructive actions UXUX User experience. (74778)

Post Editor

  • In-editor revisions (initial changes, without diffing). (74771)

Icons

  • Add missing chevron-up-small icon. (74607)

Collaboration

  • Real-time collaboration: Add default HTTPHTTP 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. polling sync provider. (74564)
  • Real-time collaboration: Sync collections. (74665)
  • Real-time collaboration: Use relative positions in undo stack. (74878)

Bug Fixes

  • Core backportbackport A port is when code from one branch (or trunk) is merged into another branch or trunk. Some changes in WordPress point releases are the result of backporting code from trunk to the release branch. for gutenberg_filter_global_styles_post: Protect from KSES mangling. (74731)
  • DataForm: Sync ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/.-level validation to native inputs on date fields. (74994)
  • DataViews: Use regular casing for bulk selection count. (74573)
  • Fix typo in comment for value change check. (74730)
  • Fix wp-theme dependencies in the build. (74743)
  • Remove the apiFetch named export. (74761)
  • ShortcodeShortcode A shortcode is a placeholder used within a WordPress post, page, or widget to insert a form or function generated by a plugin in a specific location on your site.: Fix non-string attribute values being silently dropped. (74949)

Block Library

  • Breadcrumbs: Fix placeholder separator preview. (74842)
  • Cover Block: Show current embed URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org in dialog. (74885)
  • Embed: Fix Flickr double-padding with responsive wrapper. (73902)
  • Fix : Image caption blur in Gallery block. (74063)
  • Fix: Add border-box sizing for verse block. (74722)
  • Inspector tabs: Reset tab selection if the selected tab is no longer present. (74682)
  • Make custom navigation overlay full width. (74559)
  • Media & Text: Revert “Fixed Media & Text Block – Image not rendered properly on frontend when inside stack (#68610)”. (74715)
  • Pattern Editing: Update template part to use tabs. (74793)
  • Post 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. Block: Fix excerpt trimming logic to handle whitespace correctly. (74925)
  • Post Excerpt Block: Fix length limits for both Editor and Front and fix ellipsis consistency. (74140)
  • Show submenu colors but remove the word overlay. (74818)
  • fix: Video block: video URLs pasted without “https://” show broken media. (74964)

Block Editor

  • Allow grid layout to use theme blockGap values for columns calculation. (74725)
  • Block Editor Provider: Fix editor error for contributor role when client-side media experiment is active. (74680)
  • Direct drag: Fix glitching around scrolling. (74608)
  • Ensure grid column never exceeds parent’s width. (74795)
  • Fix missing onClose prop for InserterMenu. (74920)
  • Fix: Fit Text not working on calculated line heights. (74860)
  • Fix: Safari “Edit as HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers.” for Fit Text deletes content. (74864)
  • Fix: Stretchy text issue when nested on flex containers. (73652)
  • List View: Ensure element exists in document before focusing. (74613)
  • Pattern Editing: Prevent double-click editing for template parts and synced patterns. (74755)
  • Calculate viewport based on iframeiframe iFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and/or CSS which is loaded at the time when iframe tag is parsed by the user’s browser. size in resizable editor. (75156)

Collaboration

  • Real-time collaboration: Do not wrap persisted doc applied update in transaction. (74753)
  • Real-time collaboration: Pass non-cleaned (but merged) edits to SyncManager#update. (74912)
  • Sync: Refactor ProviderCreator signature to an object. (74871)

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 Router: Fix initial router regions with attachTo being duplicated after navigate(). (74857)
  • iAPI Router: Prevent router regions with data-wp-key from being recreated on navigation. (74750)
  • iAPI: Fix and refactor runtime initialization logic. (71123)

DataViews

  • Fix actions visibility on smaller viewpoints and for lone action with isPrimary as true. (74836)
  • Fix insert left and right handling in table layout for RTL languages. (74681)

Components

  • Add @types/react to dependencies. (74692)
  • Fix: Escape less-than character in HTML attributes to prevent block recovery errors. (74732)

Patterns

  • Restore pattern categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. actions for user patterns. (74927)

Typography

  • Fix: Can’t disable textColumns UI. (74767)

Block Style Variations

  • Fix blockGap styles not working in block style variations. (74529)

Global Styles

  • Core backport for Global Styles: Allow arbitrary CSS, protect from KSES mangling. (74371)
  • Remove comment about non-existing property. (75003)

Performance

  • Enable build-blocks-manifest by default. (74846)
  • Update performance results endpoint to codevitals.run. (74802)
  • Use fetch API for performance results logging. (74803)

Experiments

  • Route: Add notFound to public API and add route validation. (74867)

Media

  • Media Modal Experiment: Add a simple notices-based uploading state. (74965)

Collaboration

  • Real-time Collaboration: Add user and selection information to awareness. (74728)

Post Editor

  • Media Editor: Add a simple media editor package and integrate into the editor package. (74601)

Block Library

  • Don’t show overlay settings for navigation blocks that are inside oth…. (74408)

Documentation

  • Added Missing Global Documentation class-wp-rest-block-editor-settings-controller file. (74973)
  • Added Missing Global Documentation extensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software.-site-editor file. (74868)
  • Badge: Use stories for “Choosing intent” doc. (74675)
  • DataViews: Update storybook to add more context. (74819)
  • Docs: Add missing @return tags to experimental functions. (74960)
  • Docs: Standardize use of @link tag for URL references in lib directory. (74984)
  • Pattern Overrides: Remove obsolete documentation. (74749)
  • Replace @see with @link for URL references in Inline Documentation. (74961)
  • Storybook: Automate sidebar sort order. (74672)
  • Update wp-build documentation to describe ‘wpPlugin.name’. (74741)
  • Updated Typo in 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/. File. (74718)
  • iAPI Docs: Add configuration to state/context guide. (71355)
  • iAPI: Don’t use deprecated data-wp-on-async in documentation. (72591)
  • iAPI: Update deprecation warning for unique ID format. (74580)
  • Move grid manual mode sync into 7.1 folder. (74792)
  • Update: Preserve additional 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. properties on client side abilities. (73918)

Code Quality

  • core-data: Fix missing dependencies. (74934)
  • core-data: Fix yjs import and missing dependency. (74950)
  • dataviews: Fix missing dependency – @storybook/addon-docs. (74935)

Block Library

  • Comments Title: Copy deprecate from 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. to deprecated.js to avoid legacy attribute usage. (74924)
  • Move selectLabelText to shared utility. (74805)
  • Move useIsDraggingWithin to a shared hook. (74804)

DataViews

  • Adjust table primary media field styles. (74813)
  • Move filtering logic in field types. (74733)

Components

  • Add displayName to the anonymous components. (74716)
  • SlotFill: Unify registry and fill implementation. (68056)

Block Editor

  • Block Visibility: Fix failing unit testunit test Code written to test a small piece of code or functionality within a larger application. Everything from themes to WordPress core have a series of unit tests. Also see regression.. (74840)

Post Editor

  • Blocks: Always trigger borwser console warnings for blocks with apiVersion below 2. (74057)

Tools

Testing

  • Block Visibility: Fix flaky end-to-end test. (74931)
  • Fix end-to-end tests: Update function names to include wp_ prefix. (74688)
  • Fix flaky ‘Revisions’ end-to-end test. (75002)
  • Real-time collaboration: Fix undo tests. (74955)
  • e2e: Fix flaky tests for settings sidebar. (74929)
  • end-to-end tests: Bump all test blocks to API v3. (74941)
  • end-to-end tests: Remove switchToLegacyCanvas from multi select and 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) suite. (74845)
  • end-to-end tests: Remove switchToLegacyCanvas from inserter drag and drop tests. (74892)
  • eslint-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: Add “never” option for dependency-group rule. (74990)
  • selectBlock: Fall back to next block if no previous block is present. (74938)

Build Tooling

  • Build script: Increase memory limit for storybook build process. (74933)
  • Build: Deduplicate and minify embedded styles. (74651)
  • Icons: Add a manifest containing icons metadata. (74943)
  • Remove react-refresh bundling. (74721)
  • Storybook: Fix missing props from component stories. (74807)
  • wp-env: Add experimental WordPress Playground runtime support. (74609)
  • Create Block: Simplify blocks-manifest registration. (74647)
  • Remove legacy babel plugins. (74916)

First-time contributors

The following PRs were merged by first-time contributors:

  • @gmjuhasz: Components: Add @types/react to dependencies. (74692)
  • @ItsYash1421: Post Excerpt Block: Fix length limits for both Editor and Front and fix ellipsis consistency. (74140)
  • @Mustafabharmal: Fix: Escape less-than character in HTML attributes to prevent block recovery errors. (74732)
  • @noruzzamans: Added Missing Global Documentation class-wp-rest-block-editor-settings-controller file. (74973)
  • @Shekhar0109: Fix: Add border-box sizing for verse block. (74722)
  • @shekharnwagh: Sync: Refactor ProviderCreator signature to an object. (74871)
  • @Swanand01: fix: Video block: video URLs pasted without “https://” show broken media. (74964)
  • @Swoyamjeetcodes: Image block: Show aspect ratio control for wide and full alignment. (74519)

Contributors

The following contributors merged PRs in this release:@aduth @alecgeatches @andrewserong @annezazu @chriszarate @DAreRodz @dinhtungdu @ellatrix @fabiankaegy @gmjuhasz @hbhalodia @huzaifaalmesbah @ingeniumed @ItsYash1421 @jameskoster @jasmussen @jeryj @jonathanbossenger @jorgefilipecosta @joshualip-plaudit @JosVelasco @jsnajdr @luisherranz @MaggieCabrera @Mamaduka @manzoorwanijk @mcsf @mikachan @mirka @mtias @Mustafabharmal @noruzzamans @ntsekouras @oandregal @ockham @pkevan @prasadkarmalkar @ramonjd @retrofox @rilwis @scruffian @senadir @sethrubenstein @shail-mehta @Shekhar0109 @shekharnwagh @shimotmk @simison @SirLouen @sirreal @Swanand01 @Swoyamjeetcodes @t-hamano @talldan @tellthemachines @Vrishabhsk @youknowriad


Props for visuals to @joen and @sirlouen for the review of the post.

Dev Chat Agenda – February 4, 2026

The next WordPress Developers Chat will take place on Wednesday, February 4, 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 📢

Nominations for CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Team Reps 2026

The nomination process for Core Team Representatives for 2026 is over. The current Team Reps are putting together the nominations, then a poll will be opened for voting. It will stay open for two weeks.

WordPress 6.9.1 Release Schedule

WordPress 6.9.1 was released on February 3, 2026. It is a maintenance release.

See the WP 6.9.1 RC1 announcement for more information about the release.

WordPress 7.0 Release Squad and Bug Scrub Schedule

The WordPress 7.0 Release Squad has been announced.

The 7.0 bug scrub schedule was published.

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.

From @adamsilverstein:

I’d like to mention I have posted a detailed progress update for the Client Side Media feature on the tracking issue. The summary is: last week we landed the wordpress/worker-threads package, which unlocks running VIPS directly in a worker thread. This means the feature can now be tested. Also: the final 7 pre-betaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. PRs are nearly ready for review.

The main thing I need support on is code reviews and testing!

The meetings are currently at a difficult time for me to attend, i’m happy to answer questions a bit later if i am not able to join.


From @flixos90: Proposal for merging WP AI Client into WordPress 7.0

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.

#6-9, #6-9-1, #7-0, #agenda, #core, #dev-chat

Proposal for merging WP AI Client into WordPress 7.0

This proposes merging the WP AI Client into WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. for WordPress 7.0.

WP AI Client is developer infrastructure: a provider-agnostic 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. for WordPress code to call generative AI models via a consistent interface, with WordPress integrations for HTTPHTTP 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. transport, event handling, caching, credentials, and a browser-friendly REST/JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. layer.

Providing this foundation, in collaboration with the Abilities API that is already part of Core, will make WordPress ready for AI, both as a consumer and as a tool.

This merge does not ship any AI providers or automatically enable AI calls. Without explicit configuration and explicit calling code, WordPress will not send prompts or data to any external service. Site owners will be able to install plugins to enable usage of specific AI providers, built on top of this foundation.

Purpose & Goals

Goals

  • Provide a stable, provider-agnostic AI client foundation in Core, with seamless integration with the Abilities API
  • Reduce duplicated SDKs/settings pages by centralizing common infrastructure (transport, auth storage, prompt invocation, access controls).
  • Enable plugins to detect availability and gracefully disable AI features when no model is configured.

Non-goals

  • No bundled credentials or providers.
  • No end-user “AI assistant” UIUI User interface in core.
  • No product-level experiences standardized in this merge (those remain 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/ecosystem territory for now, e.g. AI Experiments plugin).

Proposed Scope

  1. PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher API + Prompt Builder – A WordPress-friendly API to construct prompts and invoke model capabilitiescapability capability is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on their role. For example, users who have the Author role usually have permission to edit their own posts (the “edit_posts” capability), but not permission to edit other users’ posts (the “edit_others_posts” capability).. The underlying PHP AI Client will be bundled as an external library, while the WordPress specific wrapper code will become a direct part of Core.
  2. Provider/model abstraction – A consistent interface so hosts/site owners can choose providers via plugins, and plugins that use AI can remain vendor-neutral.
  3. Discoverability – Plugins can dynamically enable AI features, based on detecting whether any configured model on the site is able to respond to the relevant prompt(s).
  4. WordPress HTTP integration – Transport aligned with WP HTTP conventions and WP_Error behavior.
  5. Credentials management in wp-adminadmin (and super admin) – Admin UI/storage for provider credentials, used across plugins.
  6. REST endpoints + 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/. API – A REST-backed JS API for browser contexts (wp-admin/editor use cases).
  7. Simple control mechanism for prompt execution – A 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. allows allowing or disallowing certain prompts or prompt configurations, or even AI use in general.

Security, Privacy, Performance

  • Security: REST/JS execution must remain capabilitycapability capability is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on their role. For example, users who have the Author role usually have permission to edit their own posts (the “edit_posts” capability), but not permission to edit other users’ posts (the “edit_others_posts” capability).-gated; secrets must not leak via REST/script data/logging.
  • Privacy: no outbound AI calls by default; calls only happen via explicit configuration + explicit invocation.
  • Performance: minimal footprint when unused; admin-only work should avoid affecting typical frontend requests.

Call for Feedback and Testing

Feedback is welcome via comments on this proposal or on the Trac ticket which has been opened for this change.

In particular, feedback is needed for:

  1. Is the REST/JS surface area and capability model appropriate for long-term support?
  2. Any missing core requirements for transport, errors, or credential storage?

As of now, there is no pull request yet. Please follow the Trac ticket to be notified when a pull request has been opened. Here are the steps you will need to follow for testing:

  1. Apply the core PR (install a test build or utilize the WordPress Playground instance from the PR) and confirm the admin credentials UI is access-limited.
  2. Configure a provider (or install/register a provider integration as needed).
  3. Run a minimal prompt test:
    • server-side (small MU plugin/snippet)
    • browser-side (JS API), verifying capability checks
  4. Verify behavior with no provider configured:
    • no unexpected networknetwork (versus site, blog) calls
    • no UI regressions
    • plugins can detect and gracefully disable AI features

Props to @isotropic @jason_the_adams @jeffpaul for collaborating on this post.

#core-ai

WordPress 6.9.1 RC1 is now available

WordPress 6.9.1 Release Candidaterelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). 1 (RC1) is available for testing! Some ways you can help test this 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.:

  • Use the WordPress Beta Tester 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
    • As this is a minor RCrelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). release, select the Point 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. channel and the Nightlies stream. This is the latest build including the RC and potentially any subsequent commits in 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..
  • Use 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/ to test: wp core update https://wordpress.org/wordpress-6.9.1-RC1.zip
  • Directly download the Beta/RC version.

What’s in this release candidate?

6.9.1 RC1 is a release candidate for a maintenance release with a focus on bugs introduced in WordPress 6.9. In total, this RC features fixes for 23 issues throughout Core and 25 for the Block Editor.

WordPress 6.9.1 is led by @jorbin and @wildworks.

The following coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. tickets are included:

  • #63979 – WordPress Core setup does not configure XDebug properly
  • #64229 – Enqueueing scripts, styles, and script modules should warn when dependencies are missing
  • #64329BlockBlock 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. Processor tests fail without intl extension
  • #64333I18Ni18n 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.: border.radiusSizes key is missing in theme-i18n.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.
  • #64336 – One removed SimplePie file was not added to `$_old_files` in WP 6.9
  • #64337 – Broken styling on “Add Plugins” screen
  • #64340HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. 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. may double-escape class names when adding repeatedly
  • #64347 – Fatal error when `wxr_cdata()` is called with non-string value
  • #64348 – The `$embeds` element is missing from the `wp_mail_succeeded` 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.
  • #64350 – checkbox not working as expected in the adminadmin (and super admin) panel
  • #64366 – Docs: Replace since x.y.z with actual version number
  • #64368 – `Could not instantiate mail function` errors sending mail in 6.9
  • #64380 – Widgets 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. and position can’t be changed with 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) mode enabled
  • #64412 – Sporadic unit testunit test Code written to test a small piece of code or functionality within a larger application. Everything from themes to WordPress core have a series of unit tests. Also see regression. failure in Tests_REST_WpRestUrlDetailsController::test_get_items
  • #64429 – Script Modules: Dependencies inherit fetchpriority from not-enqueued, registered modules
  • #64462 – Update Sodium Compat to 1.24.0
  • #64474 – Comments: Notes are accessible when query has comment_type=all
  • #64485 – WP_Block_Processor should indicate that inner HTML matches no block type.
  • #64531 – assertEqualHTML may ignore leading whitespace text
  • #64537 – Block Processor: Extracting full block missing nested content.
  • #64535 – Update packages for 6.9.1
  • #64354 – Outlined buttons now have grey background
  • #64136PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher Deprecated: Fetching multiple feeds with single SimplePie instance is deprecated since SimplePie 1.9.0

The following 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/ PRs are included:

  • #71123 – iAPI: Fix and refactor runtime initialization logic
  • #72376 – Fix Popover closing unexpectedly when a Menu inside it is closed.
  • #73046 – Notes position alignment in HTML
  • #73580 – Gutenberg plugin: Override core classic theme styles
  • #73592 – Block Editor: Restore ToolSelector component for backward compatibility
  • #73608 – Accordion Heading: Add default style for classic themes
  • #73612 – Block JSON schema: add visibility key to supports definition
  • #73835 – Color Panel: Ensure minimum height for popover content
  • #73865 – Classic Block: Restore HTML editing option
  • #73867 – Block API: Fallback to all attributes when checking for unmodified block
  • #73955 – Global Styles: fix infinite 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. in Font Style UIUI User interface
  • #74130 – Terms Query Block: Fix Max terms for non-hierarchical taxonomies
  • #74177 – Fix: Prevent accordion-heading submitting/sending forms (button type=”button” )
  • #74282 – Fix: menu_order validation to allow zero and negative values
  • #74580 – iAPI: Update deprecation warning for unique ID format
  • #74715 – Media & Text: Revert “Fixed Media & Text Block – Image not rendered properly on frontend when inside stack”
  • #74057 – Blocks: Always trigger borwser console warnings for blocks with apiVersion below 2
  • #74340 – Fix parent popover not closing on click outside
  • #74750 – iAPI Router: Prevent router regions with data-wp-key from being recreated on navigation
  • #74857 – iAPI Router: Fix initial router regions with attachTo being duplicated after navigate()
  • #74860 – Fix: Fit Text not working on calculated line heights.
  • #74864 – Fix: Safari “Edit as HTML” for Fit Text deletes content
  • #74927 – Patterns: restore pattern categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. actions for user patterns
  • #73652 – Fix: Stretchy text issue when nested on flex containers.
  • #74799 – [WP 6.9.1] Remove formatting controls restriction private API

What’s next?

Reminder: the dev-reviewed workflow (double committer sign-off) is required when making changes to the 6.9 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"..

The final release is expected on Tuesday, February 3, 2026. This date is subject to change if any issues with RC1 are discovered. Coordination will happen in the WordPress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/ 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/. #6-9-release-leads channel, and releases are always packaged and tested in #core.

A special thanks to everyone who reported issues, helped test, and helped create patches. The success of 6.9.1 depends on proper testing, so please lend a helping hand.

Props @wildworks, @joedolson, @westonruter for pre-publication review.

Summary, Dev Chat, January 28, 2026

Start of the meeting in SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/., facilitated by @audrasjb 🔗 Agenda post.

Announcements 📢

Nominations for CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Team Reps 2026

The nomination process for Core Team Representatives for 2026 is still open. Please submit your nomination here.

Recap: WordPress 6.9 “Gene” Retrospective

A retrospective of WP 6.9 was published by its release squad, with detailed feedback on the 6.9 cycle.

WordPress 6.9.1 Release Schedule

The WordPress 6.9.1 maintenance release is planned on February 3, 2026, with a first BetaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. release on January 29, 2026.

@jorbin noted that help is still needed on the following tickets/PR:

WordPress 7.0 Release Squad and Bug Scrub Schedule

The WordPress 7.0 Release Squad has been announced.

The 7.0 bug scrub schedule was published. @audrasjb hosted the first scrub right before the devchat.

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/ 22.4

Gutenberg 22.4 was released, with a detailed announcement.

Open floor 💬

As a new contributor @indigochill asked whether ticketticket Created for both bug reports and feature development on the bug tracker. #60726 was a good way to start contributing to WordPress Core. @johnbillion, @jorbin and @audrasjb confirmed that it is a nice first ticket to learn how to contribute to Core as it is self-contained and clearly documented, but encouraged them to thoroughly read all the comments in the ticket to make sure to understand the full background of the ticket and its history.

#6-9-1, #7-0, #core, #dev-chat

Dev Chat Agenda – January 28, 2026

The next WordPress Developers Chat will take place on Wednesday, January 28, 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 📢

Nominations for CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Team Reps 2026

The nomination process for Core Team Representatives for 2026 is still open. Please submit your nomination here.

Recap: WordPress 6.9 “Gene” Retrospective

A retrospective of WP 6.9 was published by its release squad, with detailed feedback on the 6.9 cycle.

WordPress 6.9.1 Release Schedule

The WordPress 6.9.1 maintenance release is planned on February 3, 2026. See the release schedule announcement for more information.

WordPress 7.0 Release Squad and Bug Scrub Schedule

The WordPress 7.0 Release Squad has been announced.

The 7.0 bug scrub schedule was published.

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/ 22.4

Gutenberg 22.4 was released, with a detailed announcement.

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.

#6-9, #6-9-1, #7-0, #agenda, #core, #dev-chat

Bug Scrub Schedule for WordPress 7.0

It’s time to get WordPress 7.0 ready for release, and help is needed to ensure it’s smooth 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.-free. Whether you’re an experienced contributor or joining in for the first time, everyone is welcome! 🎉

Schedule Overview

Regular bug scrubs are being held twice a week with @audrasjb and @juanmaguitar leading them. As the release date approaches and activity ramps up, the number of scrubs may be increased. These efforts will help ensure everything is on track for a smooth launch. Participation is welcome at any of these sessions, so feel free to join. Bring questions, ideas, and let’s scrub some bugs together!

Continue reading

#7-0, #bug-scrub, #core, #core-test, #props