What’s new in Gutenberg 24.2? (14 October)

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

Gutenberg 24.2 has been released and is available for download!

This release comes with a new place for notes: they now float in a margin next to the content, so collaborating no longer means closing the Settings 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.. Adding a categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging., a 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.), or a post to 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. now takes a single search, and the Gallery 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. can sort its images and tint all of them with one duotone.

The design tools consistency work started in 24.1 continues with about 80 more PRs, and the release also includes more than 60 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 plus some accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) and performance improvements. For developers, 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 is now enabled by default, and feedback on it is welcome and needed.

Notes move into a canvas margin beside the content

Until now, floating notes and the Settings sidebar couldn’t be open at the same time, and the notes column took space away from the content. In Gutenberg 24.2, notes live in a margin the editor reserves next to the canvas, so they stay visible while you change blocks or post settings (#83786).

When the canvas gets narrower, each thread shrinks to its author’s avatarAvatar An avatar is an image or illustration that specifically refers to a character that represents an online user. It’s usually a square box that appears next to the user’s name., and clicking the avatar expands the thread again. A new Notes submenu in the Options menu expands, minimizes, or hides the notes, and the editor remembers your choice (#83768).

Other changes make working with notes safer: deleting a note now shows an Undo action (#83988), a note or reply you haven’t sent is kept when you select another block (#84110), and the notes scroll together with the canvas (#83852).

Adding anything other than a page to a navigation menu used to mean knowing the right block first, like Category Link or Tag Link, and then searching inside it. Now the link search of the Navigation block looks through every type of content at once and shows the type beside each result, so pages, posts, categories, and tags are one search away (#83408). Switching an existing link to another type, for example from a category to a page, also no longer means deleting it and adding it again.

The same search lists the blocks a navigation menu accepts, so typing “Home” finds the Home Link block (#83652). Results are now ranked by type too, with posts and pages before categories, tags, and media, and nothing is discarded when several types are searched together. That ranking applies to every link search in the editor, so on large sites, tags and attachments no longer push the post you’re looking for out of the results (#83407).

The Order by control of the Gallery block now works for galleries of hand-picked images too. Choosing Newest to oldest, Oldest to newest, A → Z, or Z → A sorts the images once, and you can still drag them into any other order afterwards. Random moved into the same control and shuffles the images on the front end each time the page loads (#83438).

Galleries also gain duotone support. One 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. now tints every image in a gallery, either from the block settings or, for every gallery on the site, from Global Styles. A duotone set on a single image keeps priority over the one set on the gallery (#83978).

Design tools reach even more blocks

The design tools consistency work continues with about 80 more PRs. Some highlights:

  • Minimum width and height controls, previously available on five blocks, now reach 40, including Buttons, Columns, Heading, Media & Text, and Post Title.
  • Shadows reach ten more blocks, including Paragraph, List, Buttons, Social Icons, and Gallery.
  • Duotone reaches Gallery, Media & Text, and Video, so a video can now match the tint of the images around it (#83979, #83981).
  • Background images and gradients reach Button, List, List Item, and Media & Text.
  • Line indent reaches Heading, Post Author Biography, and Poetry, which also gains text columns and fit text.

Every block and support is listed in the changelog.

React 19 is now on by default and some 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. enhancements

Gutenberg 24.2 turns the React 19 experiment on by default (#83784). Sites now load React 19 for the react and react-dom scripts, unless a theme or 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. known to have compatibility issues is active, so folks using one of those keep React 18. That list started from the issues observed on WordPress.comWordPress.com An online implementation of WordPress code that lets you immediately access a new WordPress environment to publish your content. WordPress.com is a private company owned by Automattic that hosts the largest multisite in the world. This is arguably the best place to start blogging if you have never touched WordPress before. https://wordpress.com/ and was extended for this release (#84607).

If you maintain a plugin or theme that uses React, please test it with Gutenberg 24.2 and report any issue you find. If something breaks on a site, turn React 19 off under Gutenberg > Experiments. To set the inert attribute in a way that works with both React 18 and React 19, use the new @wordpress/react-inert-value package (#83987).

The Interactivity API also gets two additions. The new data-wp-html directive renders HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. from the store, the same way data-wp-text renders text, and it only accepts values marked as trusted with asDangerousHTML() (#83092):

import { asDangerousHTML, store } from '@wordpress/interactivity';

store( 'myPlugin', {
	state: {
		get description() {
			return asDangerousHTML(
				'<p>A <strong>formatted</strong> description.</p>'
			);
		},
	},
} );
<div data-wp-interactive="myPlugin">
	<article data-wp-html="state.description">
		<p>Loading description.</p>
	</article>
</div>

The router now exposes state.navigating and state.initiator, so a block knows when a client-side navigation is in progress and which block started it (#83280).

Other notable highlights

  • Restore original image: after cropping an image, the Image editor offers Restore original image in its More options menu, so going back to the uncropped image no longer needs a trip to the Media Library (#81805).
  • Button links: the link popover of the Button block opens only when you click Link or press the keyboard shortcut, instead of every time you select a linked button (#30166).
  • Columns: the column count slider is gone. Add a column with the plus button next to the Columns button in the block toolbar, and remove one like any other block (#83262).
  • Options menu: the View group now has Appearance, Notes, and Panels submenus. Sidebars added by plugins moved into Panels, and their pinned toolbar buttons stay where they were (#82976).
  • Post author: the author field is always searchable, and it searches users on the server, so the right person shows up on sites with many users (#83323).
  • Navigation Link states: Global Styles can style the hover, focus, focus-visible, and active states of navigation links, starting with typography (#83451).
  • Icon search: the icon library also matches keywords, so “hamburger” finds the Menu icon and “gear” finds Settings (#82367).
  • Reduced motion: the Video and Cover blocks don’t autoplay in the editor when reduced motion is preferred, and Cover background embeds don’t autoplay on the front end either (#83337, #83452).
  • Inserter performance: opening the inserter blocks the main thread for less time, and selecting another block while it’s open no longer re-renders every item in it (#83437, #83284).
  • New post slugs: a new post could be published with the auto-draft slug after clicking into the Slug field. That no longer happens (#83518).

Changelog

Features

Components

  • UIUI User interface: Add Meter. (83855)
  • UI: Add Progress with custom color support. (83781)
  • UI: Add SearchableSelectControl. (80979)

Interactivity API

  • Add a data-wp-html directive. (83092)
  • Interactivity API Router: Add reactive navigation lifecycle and initiator API. (83280)

Enhancements

  • Dashboard Widgets: Let a mounted 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. declare actions at runtime. (83877)
  • React 19: Add new incompatible plugins. (84607)

Block Library

  • Accordion Heading: Add line height support. (83958)
  • Archives: Add minimum height support. (83573)
  • Avatar: Add shadow support. (83929)
  • Avatar: Explain that avatars use the GravatarGravatar Is an acronym for Globally Recognized Avatar. It is the avatar system managed by WordPress.com, and used within the WordPress software. https://gravatar.com service. (83567)
  • Button: Add background image, size, and gradient support. (83950)
  • Button: Only open the link popover on explicit user action. (30166)
  • Buttons: Add minimum width and height support. (83894)
  • Buttons: Add shadow support. (83916)
  • Code: Add minimum width and height support. (83574)
  • Columns: Add minimum width and height support. (83895)
  • Columns: Remove the column count slider. (83262)
  • Comments Pagination: Add border support. (83746)
  • Comments Pagination: Add padding, margin, and block gap support. (83744)
  • Details: Add minimum width support. (83576)
  • Embed: Add minimum width and height support. (83903)
  • Embed: Add padding support. (83963)
  • File: Add minimum width and height support. (83896)
  • File: Add shadow support. (83918)
  • Footnotes: Add minimum width and height support. (83579)
  • Gallery Lightbox: Prevent image click from closing the dialog when navigation is enabled. (78898)
  • Gallery: Add duotone support. (83978)
  • Gallery: Add minimum width and height support. (83897)
  • Gallery: Add Order By controls for static gallery, consolidate controls in settings sidebar. (83438)
  • Gallery: Add shadow support. (83919)
  • Heading: Add minimum width and height support. (83580)
  • Heading: Add text indent support. (83615)
  • Home Link: Add minimum width and height support. (83582)
  • Home Link: Add padding and margin support. (83607)
  • Icon: Add block bindings support to the icon attribute. (80730)
  • Latest Comments: Add border support. (84148)
  • Latest Comments: Add minimum width and height support. (83904)
  • Latest Posts: Add minimum width and height support. (83905)
  • List Item: Add background image, size, and gradient support. (83936)
  • List Item: Add shadow support. (83925)
  • List Item: Enable editableRoot for multi-selection on mobile. (82816)
  • List: Add background image, size, and gradient support. (83935)
  • List: Add shadow support. (83923)
  • Login/out: Add minimum width and height support. (83583)
  • Math: Add minimum width and height support. (83585)
  • Media & Text: Add background image, size, and gradient support. (83927)
  • Media & Text: Add duotone support. (83981)
  • Media & Text: Add minimum width and height support. (83906)
  • Media & Text: Add shadow support. (83976)
  • Media & Text: Lower the specificity of the content padding. (83563)
  • Navigation: List allowed blocks in the link UI search results. (83652)
  • Navigation: Search every entity type from the link UI. (83408)
  • No Results: Add minimum width and height support. (83584)
  • Page List: Add minimum width and height support. (83908)
  • Pagination: Add border support. (83745)
  • Pagination: Add padding, margin, and block gap support. (83743)
  • Paragraph: Add shadow support. (83926)
  • Poetry: Add fit text support. (83980)
  • Post Author Biography: Add text indent support. (83614)
  • Post Comments Form: Add font family support. (83967)
  • Post Comments Form: Add minimum width and height support. (83910)
  • Post Content: Add minimum width support. (83575)
  • 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.: Add minimum width and height support. (83578)
  • Post 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.: Add border style support. (83956)
  • Post Terms: Add minimum width and height support. (83586)
  • Post Time to Read: Add minimum width and height support. (83598)
  • Post Title: Add minimum width and height support. (83600)
  • Preformatted: Add minimum width and height support. (83587)
  • Pullquote: Add minimum width support. (83588)
  • Query Total: Add minimum width and height support. (83590)
  • Quote: Add button colour support. (83983)
  • Quote: Add minimum width support. (83592)
  • Read More: Add border style support. (83735)
  • Read More: Add minimum width and height support. (83912)
  • RSS: Add minimum width and height support. (83913)
  • Search: Add padding support. (83984)
  • Site Tagline: Add minimum width and height support. (83589)
  • Site Title: Add minimum width and height support. (83593)
  • Social Icons: Add shadow support. (83920)
  • Tab List: Add shadow support. (83922)
  • Tab Panels: Add minimum height support. (83594)
  • Tabs: Add minimum width support. (83595)
  • Term Count: Add margin support. (83608)
  • Term Count: Add minimum width and height support. (83596)
  • Term Description: Add minimum width and height support. (83597)
  • Term Name: Add margin support. (83606)
  • Term Name: Add minimum width and height support. (83599)
  • Term Template: Add minimum width and height support. (83914)
  • Verse: Add minimum width support. (83609)
  • Verse: Add text columns and indent support. (83962)
  • Video: Add duotone support. (83979)

Components

  • Card: Migrate from Emotion to SCSS modules. (82577)
  • CheckboxControl: Keep the legacy control visually consistent across viewports. (83612)
  • ColorPalette: Show design system focus ring on custom color button. (83841)
  • ContentEditableControl: Keep a disabled field focusable. (84083)
  • CustomGradientPicker: Extend control point targets to the bar height. (84124)
  • CustomGradientPicker: Migrate control wrappers to an SCSS module. (82576)
  • Deprecate Badge. (82379)
  • FontSizePicker: Migrate Emotion styles to SCSS Modules. (84126)
  • FormToggle: Match Switch colors across states. (83773)
  • Icons: Experiment with proportional stroke scaling. (84081)
  • InputControl: Darken the field border on hover. (83306)
  • ItemGroup: Use design system focus ring. (83764)
  • Menu: Align group labels and separators with indented item labels. (83993)
  • Menu: Align submenu labels and highlight open parents. (84031)
  • Menu: Guard against nesting Group and RadioGroup. (83792)
  • Menu: Tighten spacing, use 16px prefix icons, and cap width at 320px. (84028)
  • Progress: Migrate remaining ProgressBar usages and recommend UI Progress. (84021)
  • ProgressBar: Use WPDS color tokens. (83779)
  • RadioControl: Align colors with UI Radio. (83270)
  • Text: Migrate Emotion styles to an SCSS Module. (82573)
  • Theme: Generate complete border token modes for Figma testing. (84035)
  • UI: Add item labels and descriptions to remaining popups. (83493)
  • UI: Add separators to item popup components. (83776)
  • UI: Align component names with their semantics. (83789)
  • UI: Keep InputLayout chrome at md on small viewports. (82764)
  • UI: Recommend the Checkbox, Radio, and Switch component families and the Notice component. (82685, 83771, 83872, 84097)
  • UI: Remove automatic Notice announcements. (82737)
  • UI: Update Spinner appearance and add a color prop. (83775)
  • VisuallyHidden: Move hiding styles outside CSSCSS Cascading Style Sheets. cascade layers. (84114)

Block Editor

  • Block Supports: Add background-clip block support infrastructure. (77141)
  • Block Supports: Ensure position type is a string. (83500)
  • Block Switcher: Show design system focus ring on pattern previews. (83933)
  • Fit text: Size each block instance in a 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 independently. (83985)
  • Fix translator comments for block count announcements. (83555)
  • Honour background skip serialization in the editor. (83943)
  • Inserter: Use design system focus ring for previews. (83126)
  • Migrate state-control badges to UI Badge. (82608)
  • States: Scope per-instance rules to the block’s root element. (83986)

Icons

  • Add keywords to icon manifest. (83884)
  • Make the “B” icon bolder. (83321)
  • Polish the typography and “block-default” icons. (84073)
  • Support keyword-based search in the icons registry. (82367)
  • Update and add justify icons. (83519)
  • Update heading level icons for optical balance. (83268)

Post Editor

  • Base Styles: Default the adminadmin (and super admin) theme color to Blueberry. (83749)
  • Document Outline: Show the design system focus ring instead of legacy box-shadow. (83755)
  • Editor: Gather the View group of the Options menu into submenus. (82976)
  • Editor: Remove icon for ‘Export’ more menu item. (83901)
  • Editor: Use SearchableSelect for the post author field. (83323)
  • Editor: Use UI Menu for template options. (82964)

Media

  • Media Editor: Add a session boundary above the cropper. (83550)
  • Media Editor: Restore original image in modal. (81805)
  • Media Editor: Show an error when saving attachment details fails. (83560)
  • Media Editor: Use UI Menu for crop aspect ratio. (82968)
  • Track the original attachment ID for edited images. (81803)

Site Editor

  • Canvas loader: Use Progress from wordpress/ui. (83860)
  • Font Library: Use UI Menu for collection actions. (82965)
  • Global Styles: Add pseudo-state controls for Navigation Link. (83451)
  • Global Styles: Update the Styles > Blocks description. (83515)
  • Style book: Add link to example text. (83448)

DataViews

  • Fields API: Add the server-side registry and REST route. (84078)
  • List hideable fields alphabetically in the view configuration. (83947)
  • MediaEdit: Use design system focus ring. (83854)
  • Truncate filter chips instead of wrapping them. (83879)

Collaboration

  • Notes: Add show and hide options for floating notes. (83768)
  • Notes: Add Undo to deleted note snackbar. (83988)
  • Notes: Move floating notes into a canvas margin. (83786)

Bug Fixes

  • Connectors: Keep a stored API key read-only when it can’t be verified. (83889)
  • Date: Drop a trailing backslash instead of formatting it as “undefined”. (81528)
  • Experiments: Don’t invalidate saved option with a legacy key. (84619)
  • useServerSideRender: Parse messages from caught errors. (83365)

Components

  • BorderControl: Remove % from the border width units. (83492)
  • Checkbox: Prevent rounded themes from making checkboxes circular. (83526)
  • CollapsibleCard: Scope the headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. focus ring to its own trigger. (81314)
  • Fix polymorphism typings leaking as prop. (82704)
  • FocalPointPicker: End a drag released over the editor canvas. (83348)
  • Menu: Disable triggers instead of roots in consumers. (83791)
  • PaletteEdit: Stop changing the slug when renaming a preset. (83750)
  • Popover: Close non-modal popovers 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. interaction. (83509)
  • Popover: Drop the will-change hint once the popover stops moving. (77359)
  • RadioControl: Keep a 16px visual with a larger hit target. (83840)
  • SandBox: Fix embed previews that require a referrer in Safari. (84014)
  • TextControl: Use design system colors when disabled. (83307)
  • Theme: Fix virtual modules, root styles, and seed validation. (83355)
  • Theme: Improve accessibility, API documentation, and compatibility checks. (83358)
  • Theme: Make 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 token fallback transforms syntax-aware. (83356)
  • Theme: Preserve global token references in Lightning CSS. (83359)
  • UI: Align selection popup checkmarks with the first label line. (82942)
  • UI: Preserve Autocomplete item type inference. (84095)
  • UI: Preserve Combobox source item generics. (84094)

Block Editor

  • Columns: Allow dropping a column at the outer edges. (83274)
  • Fix ‘Manage allowed blocks’ not shown when it’s the only ‘Advanced’ control. (84067)
  • Fix style / nested attribute overwrite during multi-selection. (80070)
  • Paste: Give each pasted data-URI image unique filename to avoid upload collisions. (79480)
  • Paste: Replace non-breaking spaces at the edges of text with regular spaces. (83464)
  • Rich text: Fix iOSiOS The operating system used on iPhones and iPads. double tap selection, preventing focus capture under editable host. (81042)
  • Show whitespace changes in the Resolve Block diff. (82397)
  • Style states: Fix exception when there’s no selected block. (84140)
  • Typography: List only the weights inside a variable font’s range. (83128)

Block Library

  • Group, Cover: Track drop zone element in state. (83756)
  • Image: Fix invalidinvalid A resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid. CSS url() value in circle-mask style. (82333)
  • Image: Fix lightbox using thumbnail aspect ratio instead of original image ratio. (79058)
  • Image: Fix the lightbox overlay becoming unusable (can’t close) when it isn’t a direct child of <body>. (83480)
  • Image: Improve specificity of the lightbox button selector. (70800)
  • Math: Store cell alignment in the MathML and polyfill alignment and overlines in Chromium. (83164)
  • Post Featured Image: Fix crash when isLink is enabled. (81584)
  • Tag Cloud: Update styles and add !important. (70224)
  • Template Part: Fall back to rendering a template part from the theme file if the db version is unavailable. (83809)

Collaboration

  • Notes: Delete permanently when the trashTrash Trash in WordPress is like the Recycle Bin on your PC or Trash in your Macintosh computer. Users with the proper permission level (administrators and editors) have the ability to delete a post, page, and/or comments. When you delete the item, it is moved to the trash folder where it will remain for 30 days. is disabled. (84102)
  • Notes: Draw the canvas divider from body so it uses the theme text color. (84158)
  • Notes: Keep anchor writes out of undo history. (84079)
  • Notes: Preserve unsent note and reply drafts. (84110)
  • Notes: Reset paragraph top margin in floating notes. (84101)
  • Notes: Restore child notes trashed along with their parent note. (84100)
  • Notes: Restrict menu actions for resolution notes and resolved threads. (73243)
  • Notes: Scroll floating notes with the canvas. (83852)

Media

  • Media Editor: Fix pan drag flooding undo history after wheel zoom. (83558)
  • Media Editor: Stop the crop pixel snap from recording undo history. (83571)
  • MediaEdit: Show a checkerboard background behind image previews. (83846)
  • MediaUpload: Fix console error when reopening Gallery media library. (76749)
  • MediaUpload: Fix the gallery prop ignoring allowedTypes. (78257)

Data Layer

  • CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Data: Rank link suggestions by type, and stop discarding merged results. (83407)
  • RTC: Fix undo breaking for non-synced entities. (83888)

DataViews

  • Fields: Fix AuthorView for users who can’t edit users. (83498)
  • Measure the container as the data view mounts to avoid a single column flash. (83752)

Post Editor

  • Editor: Fix new posts being published with the auto-draft slug. (83518)
  • REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think “phone app” or “website”) can communicate with the data store (think “database” or “file system”) https://developer.wordpress.org/rest-api/: Add action-trash link to posts and comments. (84045)

Site Editor

  • ExtensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. Site Editor: Pass custom block categories to the blocks store. (83762)
  • Global Styles: Fix popover position in Styles screen. (84048)

Accessibility

  • Editor: Merge adjacent revision inline diffs. (80579)
  • UI: Announce selected chips in SearchableChipSelect. (82863)

Block Library

  • Cover: Don’t autoplay embedded background videos when reduced motion is preferred. (83452)
  • Video, Cover: Don’t autoplay in the editor when reduced motion is preferred. (83337)

Performance

Block Editor

  • Check the inserter’s fallback containers unmemoized. (83446)
  • Inserter: Manage roving tab index to skip re-rendering every item. (83437)
  • Inserter: Stop re-rendering the block list on block selection change. (83284)

Experiments

  • Admin design tokens: Consolidate wp-admin container radiuses onto the design system scale. (82427)
  • Admin design tokens: Restyle classic wp-admin controls from design system tokens. (82425)
  • Experiments: Turn the React 19 experiment on by default, except when an incompatible theme or plugin is detected. (83784)
  • RTC: Add an EntitySyncManager interface in core-data. (83410)

Documentation

  • Block Parser: Correctly document the blockName property as nullable. (70900)
  • Block Parser: Document \WP_Block_Parser::$stack as a list. (82695)
  • Combobox: Label popup dialogs in stories. (83476)
  • DataViews: Fix README to describe sort() as receiving field values, not items. (83483)
  • Design System: Clarify tooltip labeling and UI review guidance. (83898)
  • Docs: Clarify wordpress/ui icon color requirements. (83564)
  • Docs: Describe isolated dependencies for agents. (84141)
  • Docs: Fix published Vitest migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies.-guide links. (83449)
  • Docs: Note that block attributes and global styles values are untrusted at render time. (83473)
  • Docs: Recommend UI Tabs for switching views. (83516)
  • Docs: Refine design system agent guidance. (84007)
  • Docs: Remove CheckboxControl heading from InspectorControls example. (83844)
  • Docs: Update deprecation testing guidance for shared reset. (83989)
  • Env: Change the core 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". from 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. to master in the documentation. (83566)
  • Fix broken links in documentation. (83545)
  • Navigation Link: Update readme title to match block name. (83999)
  • Storybook: Add new contributing page. (83345)
  • Storybook: Place Notice announcements under Components. (83617)
  • Storybook: Show prop descriptions in Canvas controls. (83581)
  • UI: Add change actions to form primitive stories. (83591)

Code Quality

  • Packages: Declare missing peer dependencies and check them in CI. (83765)
  • wp-build: Remove unused optional peer dependencies. (83601)

React 19

  • Add inertValue helper and use it for setting inert attribute. (83871)
  • Add new react-inert-value package with inertValue helper. (83987)
  • Breadcrumb: Fix getMeasurementRender for React 19. (84069)
  • DataViews: Use inertValue in CompositeGrid. (84072)
  • react-inert-value: Add missing @types/react peer dependency. (84024)
  • Remove use-memo-one usage (missing React 19 compat). (83952)
  • Upgrade code and types to React 19. (83941)

Block Editor

  • Bump @react-spring/web from 9.4.5 to 10.1.2. (83796)
  • Format Library: Unify FormatEditProps to one type, move private types. (83487)
  • Position controls: Fix useSelect warning for selected state viewports. (83570)
  • RichText: Refactor useMarkPersistent, fix StrictMode mount mark. (83463)
  • RichText: Remove dead exports and consolidate deprecations. (83461)
  • RichText: Rename utils.jsx to utils.js. (83758)

Collaboration

  • Notes: Extract note selection sync into useNoteSelection hook. (83528)
  • Notes: Extract NoteReply and lift AddNote gating. (84106)
  • Notes: Refactor floating board measurement. (83485)
  • Sync: Remove exposed wp.sync package. (81999)

Media

  • Media Editor: Remove initial state seeding from the session. (83893)
  • Media Utils: Add MediaEdit as a private API. (84046)
  • Return 0 from the edit root lookup when there is no edit root. (84096)

Block Library

  • Breadcrumbs: Fix typo in aria label translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. context. (84112)
  • Playlist: Replace the waveform player 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. with its no-autoinit entry. (83132)

Components

  • Deprecate the private Menu API. (82947)
  • Packages: Update Ariakit to 0.4.40. (83278)

CSS & Styling

  • Style: Update color to use CSS variable in edit-site. (79002)
  • Table: Replace deprecated word-break with overflow-wrap: anywhere. (82480)

Interactivity API

  • Add typing to iAPI’s getConfig(). (71692)
  • Remove expired deprecated behaviors. (84098)

Themes

  • Global Styles: Ignore 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. values of unexpected types. (84523)

Tools

  • PR 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.: Move the props list into the shared comment. (82302)
  • Props Bot: Skip bare reviews that duplicate their review comment runs. (84076)

Testing

  • Block editor: Isolate mutable test fixtures. (83098)
  • Block editor: Wait for final keyboard link suggestions. (83489)
  • Block library: Isolate order-sensitive test interactions. (83101)
  • Blocks: Isolate registration state in tests. (83099)
  • Components: Isolate order-sensitive UI tests. (83103)
  • Core data: Finish deferred selection updates in RTC test. (83366)
  • Data: Assert and silence resolution error in useSuspenseSelect test. (83491)
  • E2E: Mock Openverse in image drag-and-drop inserter test. (83842)
  • E2E: Pin the site title in the router specs; raise the end-to-end Storybook build heap. (83474)
  • ESLint: Allow non-module stylesheet imports in unit tests. (84019)
  • Icons: Use assertEqualHTML() in icons registry tests. (83544)
  • Include end-to-end Storybook sources in docgen. (83634)
  • Notes: Fix flaky thread scroll end-to-end test. (84118)
  • React 19 codemod: Apply defaultProps when rendering a memo component. (84568)
  • Tests: Add browser coverage for Menu scroll lock and LinkControl protocols. (83991)
  • Tests: Add floating notes end-to-end coverage. (83477)
  • Tests: Add Vitest Browser Mode failure artifacts. (83093)
  • Tests: Cover translation setup in override script tests. (83886)
  • Tests: Enforce per-call Vitest console expectations. (83095)
  • Tests: Enforce Vitest assertion coverage. (83572)
  • Tests: Enforce Vitest callback, promise, and title rules. (83620)
  • Tests: Fix order-dependent wp-env schema test. (84139)
  • Tests: Fix PostCSS browser-externalized warnings in Vitest. (83091)
  • Tests: Isolate deprecation warning state. (83107)
  • Tests: Isolate mutable configuration fixtures. (83104)
  • Tests: Lint JavaScript Vitest mock imports. (83783)
  • Tests: Migrate internal linting to Vitest and remove unused Jest dependencies. (83502)
  • Tests: Reset deprecation history in shared Vitest setup. (83849)
  • Tests: Resolve Browser Mode commands against the live iframe. (83495)
  • Tests: Run Vitest type graph validation in process. (83851)
  • Tests: Shuffle test cases in CI. (83111)
  • Tests: Use strict assertions in layout, template registry, and theme.json tests. (83619)
  • Tests: Use strict assertions in override script tests. (83782)
  • Tests: Verify localized data retention in override script test. (83845)
  • Theme: Add integration test coverage for seed colors in artifacts. (81161)
  • Tooltip: Stabilize the hover delay cancellation test. (84113)
  • UI: Add end-to-end Storybook popup item layout fixtures. (83488)
  • Unit tests: Detect the database client in the debug step. (84089)
  • Use a mock plugin slug within tests that no WordPress build ships. (84133)

Dependencies

  • Add prettier, eslint and stylelint to the root package.json. (84017)
  • Build: Remove patch-package. (83982)
  • Build: Update Vite to 8.3.1 and simplify Storybook tooling. (83569)
  • Build: Update Vite to 8.3.2 and remove the PostCSS browser resolver. (83992)
  • CI: Cover the AI development lockfile with Dependabot instead of npm audit. (83997)
  • Fix peer dependency conflicts left in the lockfile. (83754)
  • Framework: Declare React types in the workspaces that use them. (84013)
  • Framework: Move @typescript/native from the root to the workspaces that use it. (84027)
  • Framework: Switch from hoisted to isolated dependencies. (83847)
  • npm: Switch from legacy-peer-deps to strict-peer-deps. (81029)
  • Repair invalid peer dependencies in the lockfile. (84062)
  • Tests: Bump ibm-cloud-sdk-core in the AI development test lockfile. (83887)
  • Tests: Bump undici in the AI development test lockfile. (83799)
  • Tests: Patch basic-ftp in AI development dependencies. (84000)
  • Tests: Update AI development package versions after npm audit. (83830)
  • Tests: Update Vitest to 5.0.3 and Storybook to 10.6.1. (83996)
  • Upgrade typescript-eslint to v8.70.1. (83760)

Build Tooling

  • Build Tools: Fix flaky ESM package types test timeout. (84068)
  • Changelog validator: Ignore Markdown, Storybook, and configuration files. (83618)
  • CI: Check CHANGELOG presence for published tooling and configuration packages. (83577)
  • Coding standards: Skip anonymous class methods in block library function name sniffsniff A module for PHP Code Sniffer that analyzes code for a specific problem. Multiple stiffs are combined to create a PHPCS standard. The term is named because it detects code smells, similar to how a dog would "sniff" out food.. (83900)
  • Developer tools: Simplify editor setup and add Zed settings. (84143)
  • Fix check type declarations errors when running npm run dev. (84070)
  • Ignore composer vendor files from top-level gitignore. (22283)
  • Link upstream fixes for Storybook and Vitest warnings. (83632)
  • Read npm v12 pack –json output. (84011)
  • Release Tooling: Read the npm v12 JSON output shapes. (84075)
  • Release: Rewrite SVNSVN Subversion, the popular version control system (VCS) by the Apache project, used by WordPress to manage changes to its codebase. publication scripts in Node.js. (84034)
  • Use Node.js v24.20 in .nvmrc. (84061, 84138)
  • VS Code: Add managed workspace configuration. (84025)
  • Widget Primitives: Avoid Vite warnings for runtime widget modules. (83602)

Storybook

  • Avoid duplicate block-editor store registration in Storybook. (83636)
  • Fix missing block styles in BlockCanvas playground stories. (81070)
  • Give CI job a distinct name. (83869)
  • Read icon keywords from the manifest. (84127)
  • Register playground core blocks once in Storybook. (83637)
  • Reuse PostCSS browser resolver in Storybook smoke tests. (83635)
  • Update BlockPopover Storybook fixture to API version 3. (83642)
  • Update manifest snapshot for Spinner color prop. (83856)

WP Scripts

  • Scripts: Refactor Stylelint configuration detection in lint-style.js. (79280)
  • Scripts: Resolve default configs without hoisted dependencies. (83902)
  • Scripts: Treat files passed after –fix as file arguments. (83521)

Env

  • Add an option to choose the MariaDB version. (83751)
  • Pass -T to docker compose commands when stdin is not a TTY. (78374)

ESLint plugin

  • ESLint: Add allowUseWithCaution option to use-recommended-components. (83536)
  • ESLint: Allow generated test titles. (83995)

Security

  • Env, E2E: Update dependencies that ran native install scripts. (84012)
  • Opt in to the npm v12 supply-chain defaults. (82689)

First-time contributors

The following PRs were merged by first-time contributors:

  • @adamwoodnz: Base Styles: Default the admin theme color to Blueberry. (83749)
  • @haritpanchal: Tests: Use strict assertions in layout, template registry, and theme.json tests. (83619)
  • @Intenzi: Block Editor: Fix style / nested attribute overwrite during multi-selection. (80070)
  • @jshawl: Env: Pass -T to docker compose commands when stdin is not a TTY. (78374)
  • @karthick-320: Icons: Add keywords to icon manifest. (83884)
  • @Kgupta62: Popover: Drop the will-change hint once the popover stops moving. (77359)
  • @tbradsha: Bump @react-spring/web from 9.4.5 to 10.1.2. (83796)

Contributors

The following contributors merged PRs in this release:

@aaronrobertshaw @adamsilverstein @adamwood @aduth @alecgeatches @Aljullu @amitraj2203 @andrewserong @ciampo @desrosj @ellatrix @haritpanchal @hbhalodia @Hug0-Drelon @i-am-chitti @im3dabasia @Infinite-Null @Intenzi @jameskoster @jasmussen @jeryj @Jiwoon-Kim @johnbillion @jorgefilipecosta @jshawl @jsnajdr @karthick-320 @karthick-murugan @Kgupta62 @lancewillett @luisherranz @Mamaduka @manzoorwanijk @mcsf @mecskyverse @mikachan @mirka @mukeshpanchal27 @Mustafabharmal @n8finch @noruzzamans @ntsekouras @oandregal @peterwilsoncc @R1shabh-Gupta @ramonjd @retrofox @SainathPoojary @shail-mehta @simison @stokesman @t-hamano @talldan @tbradsha @tellthemachines @theaminulai @USERSATOSHI @whyisjake @yashjawale

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

What’s new in Gutenberg 24.1? (30 September)

“What’s new in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/…” posts (labeled with the #gutenberg-new tag) are posted following every Gutenberg release on a biweekly basis, showcasing new features included in each release. As a reminder, here’s an overview of different ways to keep up with Gutenberg and the Editor.

What’s new in
Gutenberg 24.1?

Gutenberg 24.1 has been released and is available for download!

This version is all about design tool consistency, with about 140 dedicated PRs. Background image, size and gradient, shadow, borders, link, heading and button colors, typography and text columns now reach almost every coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.. And a new text-shadow control arrives alongside them.

More block design tools

Screenshot of a block inspector sidebar showing the new background tools.

Accordion, Tabs, Comments, Post blocks and more all get the same set of background and color tools (dozens of PRs, check the changelog). The Group (#83425), Post Author Biography (#83424), and Terms List (#83432) blocks gain column support. Tabs (#83431) and Tab Panel (#83428) gain typography controls.

Expanded text shadow support

Screenshot of a block inspector sidebar showing the new text shadow tools.

The text shadow functionality introduced in Gutenberg 23.5 (#73320) now is fully supported by 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., gains its own panel in Global Styles, and is available by the Paragraph and Heading blocks (#79584).

Media selection in the block inspector panel

Screenshot of a block inspector sidebar showing the new media selection tools.

The block inspector panel of the Cover (#82751) and Media & Text (#82593) blocks has a new media selection functionality, matching the Image and Site Logo blocks.

Other notable highlights

  • Start page patterns: the modal now has categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. filtering and search (#81396).
  • Add Template: the modal shows each template’s description (#83064).
  • Blocks inside patterns: the parent selector now shows for them (#82912).
  • Alignment menu: unavailable wide and full alignments are listed as unavailable instead of silently disappearing (#82600).
  • Viewport states: position can be set per viewport (#83094), and custom controls get a public 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 viewport states (#82741).
  • Icon redraw finished: the last 238 icons were converted to strokes (#82540, #82754), completing the redraw started in 24.0.

Changelog

Features

Components

  • UIUI User interface: Add CheckboxGroup form primitive. (82556)
  • UI: Add RadioGroup form primitive. (83038)
  • UI: Add RadioGroupControl. (83143)
  • UI: Add Switch form primitive. (83039)
  • UI: Add SwitchControl component. (83146)

Enhancements

  • Adminadmin (and super admin) bar: 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. removal of site icon background from 7.1.1. (83433)
  • Command Palette: Only add the admin bar node when Core does not provide it. (82733)

Block Library

  • Accordion Item: Add background gradient support. (83197)
  • Accordion Item: Add link, heading, and button colour support. (83371)
  • Accordion Panel: Add background image, size, and gradient support. (83201)
  • Accordion Panel: Add link, heading, and button colour support. (83374)
  • Accordion: Add link, heading, and button colour support. (83373)
  • Archives: Add background image, size, and gradient support. (83198)
  • Audio: Add link colour support. (83375)
  • Block API: Add textShadow typography support and UI. (79584)
  • Block API: Public API for supporting viewport states in custom controls. (82741)
  • Block API: Re-enable editableRoot for multi-selection on mobile web. (81542)
  • Breadcrumbs: Add background gradient support. (83202)
  • Buttons: Add background image, size, and gradient support. (83203)
  • Code: Add background image, size, and gradient support. (83204)
  • Code: Add shadow support. (83014)
  • Column: Add background image, size, and gradient support. (83205)
  • Columns: Add background image, size, and gradient support. (83206)
  • Comment Author Name: Add background gradient support. (83207)
  • Comment Content: Add background gradient support. (83208)
  • Comment Content: Add heading and button colour support. (83376)
  • Comment Date: Add background gradient support. (83209)
  • Comment Edit Link: Add background gradient support. (83210)
  • Comment Reply Link: Add background gradient support. (83211)
  • Comments Next Page: Add background gradient support. (83215)
  • Comments Page Numbers: Add background gradient support. (83216)
  • Comments Pagination: Add background gradient support. (83219)
  • Comments Previous Page: Add background gradient support. (83220)
  • Comments Title: Add background gradient support. (83217)
  • Comments: Add background image, size, and gradient support. (83212)
  • Comments: Add button colour support. (83378)
  • Cover: Add a Media section to the block inspector panel. (82751)
  • Details: Add background image, size, and gradient support. (83222)
  • Details: Add heading and button colour support. (83381)
  • Details: Add shadow support. (83021)
  • File: Add background image, size, and gradient support. (83223)
  • Footnotes: Add background image, size, and gradient support. (83224)
  • Footnotes: Add shadow support. (83044)
  • Gallery: Add background image, size, and gradient support. (83225)
  • Gallery: Enable viewport state values for Gallery aspect ratio. (82233)
  • Group: Add text columns support. (83425)
  • Heading: Add background image, size, and gradient support. (83226)
  • Heading: Add shadow support. (83045)
  • Home Link: Add background image, size, and gradient support. (83230)
  • Home Link: Add border support. (83360)
  • Home Link: Add shadow support. (83046)
  • Icon block: Don’t render non-public icons on the frontend. (82774)
  • Latest Comments: Add background image, size, and gradient support. (83227)
  • Latest Comments: Add shadow support. (83047)
  • Latest Posts: Add background image, size, and gradient support. (83228)
  • Latest Posts: Add shadow support. (83051)
  • Login/out: Add background image, size, and gradient support. (83229)
  • Login/out: Add shadow support. (83050)
  • Math: Add background image, size, and gradient support. (83231)
  • Math: Add shadow support. (83052)
  • Math: Improve inline block UI. (77743)
  • Media & Text: Add a Media section to the block inspector panel. (82593)
  • Media & Text: Add button colour support. (83380)
  • Navigation Overlay Close: Add border support. (83362)
  • Navigation Overlay Close: Add shadow support. (83053)
  • Next Page: Add background gradient support. (83232)
  • No Results: Add background image, size, and gradient support. (83233)
  • No Results: Add heading and button colour support. (83382)
  • No Results: Add shadow support. (83054)
  • Page List: Add background image, size, and gradient support. (83234)
  • Page List: Add shadow support. (83056)
  • Page Numbers: Add background gradient support. (83235)
  • Pagination: Add background gradient support. (83236)
  • Playlist: Add shadow support. (83055)
  • Post Author Biography: Add background gradient support. (83199)
  • Post Author Biography: Add text columns support. (83424)
  • Post Author Name: Add background image, size, and gradient support. (83200)
  • Post Comments Count: Add background gradient support. (83213)
  • Post Comments Form: Add background image, size, and gradient support. (83214)
  • Post Comments Form: Add button colour support. (83377)
  • Post Content: Add button colour support. (83379)
  • Post Content: Add shadow support. (83016)
  • Post Content: Add text align support. (83427)
  • Post Date: Add background gradient support. (83218)
  • 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.: Add background image, size, and gradient support. (83221)
  • Post Excerpt: Add shadow support. (83018)
  • Post Navigation Link: Add border and spacing support. (83122)
  • Post Navigation Link: Add shadow support. (83058)
  • Post Template: Add background image, size, and gradient support. (83237)
  • Post Template: Add heading and button colour support. (83384)
  • Post Template: Add shadow support. (83059)
  • Post Terms: Add background image, size, and gradient support. (83238)
  • Post Terms: Add shadow support. (83175)
  • Post Time to Read: Add background image, size, and gradient support. (83258)
  • Post Time to Read: Add shadow support. (83194)
  • Post Title: Add background image, size, and gradient support. (83260)
  • Post Title: Add shadow support. (83195)
  • Preformatted: Add background image, size, and gradient support. (83239)
  • Preformatted: Add link colour support. (83386)
  • Preformatted: Add shadow support. (83174)
  • Previous Page: Add background gradient support. (83240)
  • Pullquote: Add shadow support. (83177)
  • Query Title: Add background gradient support. (83242)
  • Query Total: Add background image, size, and gradient support. (83243)
  • Query Total: Add shadow support. (83176)
  • Quote: Add shadow support. (83178)
  • RSS: Add background image, size, and gradient support. (83244)
  • RSS: Add shadow support. (83179)
  • Read More: Add background image, size, and gradient support. (83245)
  • Read More: Add shadow support. (83180)
  • Site Tagline: Add background image, size, and gradient support. (83246)
  • Site Tagline: Add fit text support. (83034)
  • Site Tagline: Add shadow support. (83181)
  • Site Title: Add background image, size, and gradient support. (83247)
  • Site Title: Add shadow support. (83182)
  • Social Icons: Add background gradient support. (83249)
  • Submenu: Add shadow support. (83185)
  • Tab Panel: Add background image, size, and gradient support. (83248)
  • Tab Panel: Add border support. (83363)
  • Tab Panel: Add link, heading, and button colour support. (83389)
  • Tab Panel: Add shadow support. (83183)
  • Tab Panel: Add typography support. (83426)
  • Tab Panels: Add background image, size, and gradient support. (83250)
  • Tab Panels: Add button colour support. (83388)
  • Tab Panels: Add shadow support. (83184)
  • Tab Panels: Add typography support. (83428)
  • Table of Contents: Add background image, size, and gradient support. (83251)
  • Table of Contents: Add shadow support. (83187)
  • Table of Contents: Add text align support. (83430)
  • Tabs: Add background image, size, and gradient support. (83252)
  • Tabs: Add border support. (83361)
  • Tabs: Add link, heading, and button colour support. (83390)
  • Tabs: Add shadow support. (83186)
  • Tabs: Add typography support. (83431)
  • Tag Cloud: Add background and link colour support. (83264)
  • Tag Cloud: Add background image, size, and gradient support. (83259)
  • Tag Cloud: Add shadow support. (83188)
  • Term Count: Add background image, size, and gradient support. (83253)
  • Term Count: Add shadow support. (83189)
  • Term Count: Add text align support. (83429)
  • Term Description: Add background image, size, and gradient support. (83254)
  • Term Description: Add shadow support. (83190)
  • Term Name: Add background image, size, and gradient support. (83255)
  • Term Name: Add shadow support. (83191)
  • Term Template: Add background image, size, and gradient support. (83256)
  • Term Template: Add shadow support. (83192)
  • Terms List: Add background image, size, and gradient support. (83257)
  • Terms List: Add shadow support. (83193)
  • Terms List: Add text columns support. (83432)
  • Verse: Add shadow support. (83057)
  • Video block: Remove GIF variation handling. (82696)
  • Video: Add shadow support. (83196)
  • i18ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.: Add context to breadcrumbs area label. (78134)

Components

  • Autocomplete: Show focus with design system’s focus ring. (82766)
  • Links: Update LinkControl and LinkPicker to use Badge from wordpress/ui. (82684)
  • BoxControl: Migrate the side indicator to an SCSS module. (82570)
  • Checkbox: Align CheckboxControl border, hover, and disabled colors with UI. (83271)
  • Checkbox: Align CheckboxControl checkmark and disabled styles with UI. (82555)
  • Checkbox: Expand hit target without changing visual size. (82597)
  • Circular Option Picker: Show focus with button’s outline ring. (82521)
  • Custom Gradient Picker: Show the control point’s focus ring with the design system’s outline. (82834)
  • DataViews: Let a picker compose its footer from the page select and its actions. (83281)
  • Deprecate Divider. (83040)
  • Deprecate ResponsiveWrapper. (83347)
  • Deprecate Scrollable. (83273)
  • Deprecate ZStack. (83344)
  • Elevation: Deprecate Elevation. (83269)
  • Elevation: Migrate from Emotion to SCSS modules. (82572)
  • Grid: Migrate Emotion styles to SCSS Modules. (82571)
  • Notes: Use UI Menu for note actions. (81930)
  • Palette: Use wordpress/ui Menu for palette options. (82768)
  • Radio: Expand hit target without changing visual size. (83275)
  • Select Positioner: Revert to Base UI alignItemWithTrigger default. (82043)
  • Snackbar: Clean up legacy focus/button overrides in Snackbar and Notice. (82640)
  • Storybook: Fold Foundations, DataViews, Fields, Admin UI and Icons under Design System. (82430)
  • Storybook: Group 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. Primitives, Widget Dashboard and Grid under Widgets. (82431)
  • Storybook: Group component packages under Components. (82433)
  • Storybook: Group the editor UI under Editor. (82432)
  • Storybook: Guard the set of top-level 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. folders with a test. (82436)
  • Storybook: List every top-level folder in the sidebar order, design system first. (82429)
  • Storybook: Remove the legacy Tokens pages. (82434)
  • Storybook: Rewrite the introduction page as the front door of the design system. (82437)
  • Storybook: Show the component status in the sidebar as status-* tags. (82435)
  • UI: Add Select.ItemLabel and ItemDescription. (82369)
  • UI: Add statusContent to searchable selects. (82592)
  • UI: Tighten Fieldset legend and description gap. (82729)

Post Editor

  • Collaborators: Update to use design system’s focus ring in headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. avatarAvatar An avatar is an image or illustration that specifically refers to a character that represents an online user. It’s usually a square box that appears next to the user’s name. stack when collaborator is present. (82941)
  • Editor: Add left border to Notes panel. (83330)
  • Editor: Use UI Menu for post actions. (81922)
  • 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. field: Support the editor.PostFeaturedImage 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. in the post summary. (83133)
  • Global Styles: Use UI Menu. (81921)
  • Global Styles: Switch the 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. screen to the DataViews pickerActivity layout. (80856)
  • Keycodes: Add a shared keyboard shortcut representation helper. (82632)
  • Media Utils: Stabilize unstableFeaturedImageFlow as featuredImageFlow. (83439)
  • Patterns: Add category filtering to the start page options patterns modal. (81396)
  • Post Taxonomies: Replace FormTokenField in the flat term selector. (80967)
  • Textarea: Replace TextareaAutosize with native textareas and field-sizing. (64208)

Block Editor

  • Blocks: Highlight the block when its content list item is hovered. (83049)
  • Blocks: List unavailable wide and full alignments instead of hiding them. (82600)
  • Block Editor: Consolidate search ranking into one shared module. (83312)
  • Block Inspector: Enable setting position within viewport states. (83094)
  • Block Inspector: Improve style states UI. (82649)
  • Block Inspector: Migrate block-card Badge to UI Badge. (82503)
  • Block Inspector: Stabilize display of inherited global styles and keep UI changes behind experiment. (82840)
  • Block Toolbar: Show the parent selector for blocks inside patterns. (82912)
  • UI: Use UI Menu for bindings and variation transforms. (81925)

Icons

  • Add a core-admin collection for the admin interface. (83261)
  • Allow icons to ship to WordPress Core without exposing them in the Icon block. (82634)
  • Icons: Stroke conversion – 3rd batch, 142 icon updates. (82540)
  • Icons: Stroke conversion – Final batch, 96 icons. (82754)
  • Move the public property from icons to collections. (83277)
  • Rebalance a few, add other new icons. (83338)
  • ship required icons for admin bar and menu with public: False. (79451)

Dashboard

  • Widget Dashboard: Default tile padding to padding-lg. (82961)
  • Widget Dashboard: Show a clipped widget title in the header infotip. (82226)
  • Widget Dashboard: Use UI Menu for dashboard controls. (81929)
  • Widget Dashboard: Use UI Spinner and remove Components dependency. (82837)
  • Widget Primitives: Add HostLink over the links capabilitycapability A capability is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on their role. For example, users who have the Author role usually have permission to edit their own posts (the “edit_posts” capability), but not permission to edit other users’ posts (the “edit_others_posts” capability).. (82952)
  • Widgets: Carry declarative attributes through the widget pipeline. (82485)

DataViews

  • Excerpt field: Render nothing when the excerpt is empty. (82423)
  • Fields: Use the post type labels in the featured image field and drop mediaUploadProps. (83445)

Data Layer

  • Data: Add getResolutionArgs to share a resolution across selector calls. (82638)
  • Data: Stabilize __unstableNormalizeArgs as normalizeArgs. (83067)

Site Editor

  • Add Template: Show template descriptions in the template list. (83064)
  • ExtensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. Site Editor: Use the view configuration form for Quick Edit. (82962)

Bug Fixes

  • Env: Preserve complete lifecycle script error output. (82735)

Block Library

  • Cover: Prevent content cutoff when aspect ratio is set in Safari. (70152)
  • Gallery: Skip gap style generation for themes opting out of layout styles. (81633)
  • Image Block: Prevent global link colors from leaking into linked image borders. (79401)
  • Image block: Stop interpreting $/\ in img attributes as regex backreferences. (79369)
  • Image: Restore alt text and caption when undoing a media editor save. (82829)
  • Math: Source the LaTeX from the MathML annotation. (82987)
  • Navigation: Block appender button is 26×24 instead of square. (82718)
  • Navigation: Don’t force submenus open inside a custom overlay. (82596)
  • Navigation: Fix always-open submenus jumping in width on hover. (83142)
  • Navigation: Fix submenu detection leaks between Navigation blocks. (82366)
  • Navigation: Multi-line text of menu items is not aligned. (70917)
  • Pattern block: Run autoembed() before do_blocks(). (82860)
  • Playlist: Fix track selector stability. (81760)
  • Post Title: Remove the inline-block from the title link. (80231)
  • Query Pagination: block ignores the parent block gap in the editor. (82399)
  • Tab Panel: Hide the shadow on closed panels. (83369)
  • Term Name: Block skips the term name display filters. (82365)

Block Editor

  • Block Toolbar: Fix parent selector inserter for locked blocks. (83444)
  • Cover Block: Fix resizable handle visibility on mobile when sidebar is opened. (80355)
  • Find focusable image map areas. (82736)
  • Fix: Social Icons: In-between inserter does not work. (83327)
  • Hide alignment control when nothing available. (83265)
  • Inner Blocks: Support legacy inherit-based layouts. (82637)
  • Keep the iOSiOS The operating system used on iPhones and iPads. keyboard capitalized after Return inside the editing host. (82911)
  • Link Control: Only 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.) pages as the front page or blogblog (versus network, site) home. (83082)
  • Media: Detect HEIC uploads from the file header rather than the file name. (81737)
  • Media: Stop injecting crossorigin attributes under Document-Isolation-Policy. (82614)
  • PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher-only blocks: Detect enums in array attributes. (83394)
  • Revise block direct dragging to fix adjacent issues. (72983)
  • Rich text: Fix mobile selection hair pin grab at edge of block. (83041)
  • Rich text: Select an inline image by clicking it, and show the edit UI of the object clicked. (83370)
  • Rich text: Show the format boundary when the canvas root has focus. (83385)
  • Show the in-between inserter on wrapped lines. (83276)

Components

  • BorderBoxControl: Restore the split borders layout. (82939)
  • DataForm: Hide the edit button of disabled fields in the panel layout. (82957)
  • DataViews: Label clickable grid media by the item title when the title is hidden. (82639)
  • Fix stray fill rule in SelectControl. (82949)
  • FocalPointPicker: Fix Sidebar Overflow Issue. (68915)
  • Give control labels an explicit foreground color. (83318)
  • Menu: Fix vertical alignment across item combinations. (82847)
  • Storybook: Load the media editor package styles in its stories. (83303)
  • Storybook: Omit the recommended checkmark from the sidebar. (83309)

Post Editor

  • Avoid re-registering command loaders on every render. (82819)
  • Distraction Free: Raise top bar above notices when revealed by hover or keyboard focus. (80349)
  • Editor: Add a fixedRenderingMode prop for contexts with one mode. (82711)
  • Editor: Coerce multiple to a boolean in the media modal wrapper. (82715)
  • Editor: Default block gap is ignored in the editor for themes without block gap support. (82401)
  • Editor: Honor post types in post-thumbnails theme support when registering the featured image field. (82773)
  • Fix post editor: MetaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. boxes become invisible in Code Editor view. (78644)
  • PostLastRevisionPanel: Fix doubled focus ring on the revisions button. (82955)
  • Template panel: Hide edit and create actions from users who can’t create templates. (82858)

Site Editor

  • Site Editor: Restore Global Styles access on the front page. (82624)
  • Site Editor v2: Show the template on the routes that show the site. (82712)

Global Styles

  • Rank block search results by title match. (83435)
  • Retain responsive styles in block style variation partials. (82403)

Data Layer

  • Core Data: Fix overwriting scored matches for duplicate ids. (83113)
  • Core Data: Fix return types on generated save/delete entity actions. (77162)

Icons

  • Allow rect and circle in the registry sanitizer. (82846)
  • Restore the dimmed box on the side and corner icons. (82940)

DataViews

  • Fields: Hide the date, author and password fields when the user can’t publish or reassign. (82844)
  • Fields: Show the template field to users who can’t create templates. (82857)
  • Show a message in MediaEdit when the user can’t upload media. (82720)

Connectors screen

  • Add missing listitem role to ConnectorItem. (82664)
  • Fix Connectors and Fonts pages background color and contrast. (82827)

Media

  • Media Editor: Fix crop canvas handlers and rotation ruler in RTL. (83304)
  • Upload media: Guard processItem against re-entrant dispatch. (83031)

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

Components

  • UI: Fix highlighted item indicator in forced-colors mode. (82772)

Widgets Editor

  • Fix: Widgets customizerCustomizer Tool built into WordPress core that hooks into most modern themes. You can use it to preview and modify many of your site’s appearance settings. Undo and Redo buttons are disabled and the document tools focus style is not visible. (82412)
  • Widgets: Fix the Welcome Guide menu item triggering a preference speak message. (82395)

Performance

Data Layer

  • Data: Defer async-mode useSelect notification to idle time. (82821)
  • Data: Keep a pending listener when store not yet registered. (83346)
  • Data: Optimize store listeners and their execution. (82842)

Block Editor

  • Avoid a store subscription per inserter item. (83434)
  • Drop the O(n) tie-break in orderBy. (83443)

Components

  • Stop rendering a hidden drag preview and a media query per draggable. (83423)

Documentation

  • API Fetch: Document that requests are meant for the current site’s 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/. (82373)
  • Data: Fix the latest changelog entry and structure. (82959)
  • DataViews README: Clarify readOnly vs isDisabled. (82956)
  • Docs: Add blank line between since and param/return in block parser. (82690)
  • Docs: Add missing since tags to two functions. (83116)
  • Docs: Clarify DEWP asset file naming rule. (80620)
  • Docs: Clarify dependency extraction asset filename. (78968)
  • Docs: Clarify parent behavior during block registration. (78967)
  • Docs: Data: Fix typo in code example for __unstableNormalizeArgs. (83070)
  • Docs: Document page stability convention. (80632)
  • Docs: Document published dependency constraints. (80631)
  • Docs: Document the no-hard-wrap rule for Markdown. (83017)
  • Docs: Fix the broken Query block link in the Interactivity API guide. (82862)
  • Docs: Fix the dead anchor in the block development environment list. (82878)
  • Docs: Guard against ESLint bulk suppression abuse. (82944)
  • Docs: Replace retired reduce-motion mixin in animation guidelines. (83335)
  • Docs: Say how long a notice can be, in the copy guide. (81195)
  • Docs: The image dimensions have been removed from the name. (82828)
  • Fix typos in comments and test descriptions. (83172)
  • Notice: Add custom icon Storybook example. (82762)
  • Storybook: Drop CustomSelectControlV2 stories and the unused WIP tag. (83349)
  • Sync: Add PR link to CHANGELOG. (83037)
  • UI: Document that public –wp-ui-* CSSCSS Cascading Style Sheets. custom properties are frozen. (83147)
  • UI: Mark Select and SelectControl as recommended. (83030)
  • UI: Place Fieldset description after the legend in stories. (83144)

Code Quality

  • CI: Disable setup-node npm caching in the Create Block packed package job. (82833)
  • CI: Keep the bundled npm when devEngines is absent. (82823)
  • CI: Stop actions/setup-node from invoking the bundled npm. (82775)
  • Code Modernization: Use null coalescing operator in WP_Block_Parser methods. (82763)
  • Global Styles: Replace experimental ZStack in the palette preview. (83060)
  • Interactivity API: Remove the interactivity-router script module data shim. (83011)
  • Monorepo tools: Move the experimental API audit out of bin/. (83081)
  • Release tools: Move the pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. ZIP build out of bin/. (83087)
  • Storybook: Reject non-module stylesheet imports. (83313)
  • Tooling: Add wordpress/monorepo-tools to root devDependencies. (82824)
  • Tooling: Name the shared tsconfig presets tsconfig.*.json. (83077)
  • Unit Tests: Resolve @ariakit/utils through its dependents. (82756)
  • Upgrade 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 to 19.3.0. (82760)

Block Editor

  • Block Mover: Cleanup focus ring override. (83068)
  • Layout hooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same.: Roll out usage of normalizeLegacyLayout to the block-editor layout hooks. (82710)
  • Remove the deprecated __experimentalGroup prop. (83171)
  • Remove the zero width space hack from getRectangleFromRange. (82977)
  • Replace denylisted layout components in the Duotone filter label. (83061)
  • Replace experimental ZStack in overlapping color indicators. (83062)
  • Rich text: Separate applying the selection from focusing the field. (82581)
  • Update block visibility badges to use from wordpress/ui package. (82670)

Post Editor

  • Collaborators Presence & Document Bar: Clean up styles by removing overrides. (83013)
  • Editor: Remove pass-through more menu Slot wrappers. (82759)
  • Interface: Convert the package to TypeScript. (82753)
  • Interface: Fix the ActionItem click handler and selector types. (82758)
  • Post template panel: Remove the dead template read capability check. (82861)
  • Use WCCheckboxControl alias for legacy CheckboxControl imports. (83145)
  • Use WCSelectControl alias for legacy SelectControl imports. (83027)

Components

  • Build: Deduplicate npm dependencies. (82698)
  • ESLint: Allow string literal IDs in tests and Storybook. (83090)
  • Packages: Update Ariakit to 0.4.39. (82831)
  • Prettier: Upgrade wp-prettier to 3.9.6. (82731)
  • Prettier: Upgrade wp-prettier to 3.9.6 final. (83026)
  • Storybook: Convert story-only stylesheets to CSS modules. (83272)
  • Storybook: Place RadioGroup, Switch, and SwitchControl under wordpress-ui. (83314)
  • Storybook: Remove obsolete manifest extractor render workaround. (83124)
  • UI: Update Base UI to 1.8.0. (82835)

CSS & Styling

  • Button: replace deprecated word-break with overflow-wrap: Anywhere. (82854)
  • DataViews: replace word-break with overflow-wrap: Anywhere on DataForm panel field control. (82776)
  • Fields: replace word-break with overflow-wrap: Anywhere on slug permalink. (82693)
  • Post publish panel: Replace deprecated word-break with overflow-wrap. (82495)
  • Replace deprecated word-wrap with overflow-wrap in responsive block control. (82855)
  • Replace deprecated word-wrap with overflow-wrap in screen-reader-text. (82972)
  • Stylelint: Fix Stylelint configuration and coding standards for font weight numeric values and disallow relative weights. (82778)
  • Stylelint: Remove deprecated word-wrapping Stylelint suppressions. (82426)
  • UI: Replace deprecated word-wrap with overflow-wrap in VisuallyHidden. (82970)
  • Workflow: Remove deprecated word-wrapping. (82562)

Data Layer

  • Data: Remove the unused AsyncModeConsumer export. (82822)

Block Library

  • Calendar Block: Use the args array signature of get_calendar(). (82943)

Icons

  • Test that the registry sanitizer preserves every library icon. (83008)
  • Test the registry sanitizer with a data provider. (83024)

wp-build

  • Build: Declare wordpress/theme as a dev dependency of wordpress/build. (83129)

Widget primitives

  • Fix prettier lint issues after prettier upgrade. (83015)

Plugin

  • Icons: Move plugin icon registration out of the 7.1 compat directory. (82832)
  • Bump minimum required WordPress version to 7.0. (82404)

Font Library

  • Fonts: Remove the deprecated Fonts API BC layer and leftovers. (82813)

Jest console

  • Test: Remove obsolete internal test setup and transforms. (82761)

Tools

  • CI: Run the required 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. changes check through the pr-baseline action. (82725)
  • CI: Scope the required trunk changes refresh to what a move can invalidate. (82767)
  • Project Management: Exclude private APIs configuration from CODEOWNERS. (82750)

Testing

  • Automated Testing: Document and validate expected changelog structure. (83043)
  • Customize Widgets: Fix asynchronous updates in the header history test. (82963)
  • E2E: Reset preferences in the post editor preload spec. (82818)
  • Fields: Resolve the MediaEdit picker through the editor.MediaUpload filter. (82678)
  • Fix the high-severityseverity The seriousness of the ticket in the eyes of the reporter. Generally, severity is a judgment of how bad a bug is, while priority is its relationship to other bugs. adm-zip audit failure in AI development tests. (83170)
  • Move the unit-test-date.sh script to workspace, rewrite to JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors.. (83066)
  • Scripts: Switch unit tests to Vitest and deprecate Jest tooling. (82843)
  • Speed up collaboration end-to-end by shortening poll interval. (78746)
  • Test: Finish repository Vitest migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. and expand Browser Mode coverage. (82742)
  • Test: Run rendered browser behavior in Vitest Browser Mode. (80995)
  • Test: Strengthen Menu 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. listener cleanup assertions. (82575)
  • Tests: Isolate deprecation warnings between cases. (83097)
  • Tests: Remove obsolete internal Jest infrastructure. (82975)
  • Tests: Update Testing Library DOM to 10.4.2. (83279)

Build Tooling

  • AI development tests: Use repository Node version. (82662)
  • Dependency Extraction Webpack Plugin: Add global-styles-engine and global-styles-ui as bundled packages. (82589)
  • Dependency Extraction Webpack Plugin: Pretty-print generated asset output. (79650)
  • Disable caching when publishing built assets. (79835)
  • ESLint: Disallow Storybook build-style side-effect imports. (82960)
  • Packages: Backport the September 10 npm release metadata to trunk. (82709)
  • Packages: Remove npm from package engines. (83326)
  • Release: Verify SVNSVN Subversion, the popular version control system (VCS) by the Apache project, used by WordPress to manage changes to its codebase. deployment after publication. (82513)
  • Stylelint: Add  –_wp-*  to custom-property-pattern rule. (83075)
  • Stylelint: Add custom-property-pattern to disallow –_gcd-* custom properties. (83025)
  • Test: Make browser tests independent of execution order. (82743)
  • TypeScript: Give each widget its own typecheck project. (83328)
  • Workflows: Refine and complete the push and pull_request 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". filters. (82744)
  • Tooling: Add .mts and .cts support. (83071)
  • Tooling: Extract shared TypeScript configs into a wordpress/monorepo workspace. (82334)
  • UI: Move interaction tests to Browser Mode. (82838)
  • WP Scripts: Update lerna to 10 and markdownlint-cli to 0.49.1. (81917)

ESLint plugin

  • Check type-only imports for undeclared dependencies. (83336)
  • Upgrade eslint-plugin-jsdoc to latest version 64. (82727)

Collaboration

  • Sync: Add backwards-compatible Y option to provider creator. (82621)

First-time contributors

The following PRs were merged by first-time contributors:

  • @DanielFloeter: Multi-line text of menu items is not aligned. (70917)
  • @gunjanjaswal: Dependency Extraction Webpack Plugin: Pretty-print generated asset output. (79650)
  • @guzel: Global Styles: Retain responsive styles in block style variation partials. (82403)
  • @iiibrapn: The image dimensions have been removed from the name. (82828)
  • @imraan011: Video block: Remove GIF variation handling. (82696)
  • @smeetbuilds: Docs: Clarify dependency extraction asset filename. (78968)
  • @som3669: Docs: Add missing since tags to two functions. (83116)

Contributors

The following contributors merged PRs in this release:

@aaronrobertshaw @adamsilverstein @aduth @afercia @alecgeatches @andrewserong @chihsuan @ciampo @costasovo @DanielFloeter @desrosj @dhruvikpatel18 @dknauss @dpmehta @ellatrix @fushar @gunjanjaswal @guzel @hbhalodia @i-am-chitti @iiibrapn @im3dabasia @imraan011 @jasmussen @jeryj @jorgefilipecosta @jsnajdr @juanmaguitar @Kgupta62 @lonesahilnazir @MaggieCabrera @Mamaduka @manzoorwanijk @mcsf @mirka @mukeshpanchal27 @Mustafabharmal @ntsekouras @oandregal @ObliviousHarmony @R1shabh-Gupta @ramonjd @retrofox @SainathPoojary @scruffian @shail-mehta @simison @sirreal @smeetbuilds @Soean @som3669 @stokesman @swissspidy @t-hamano @talldan @tellthemachines @timse201 @tyxla @Vrishabhsk @yashjawale @youknowriad

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

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

Call for testing: DataForm editor inspector

The “Post” (or “Page”) tab of the editor’s Settings 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. is being rebuilt on top of DataForm, the same form that Quick Edit uses in the Site Editor. It’s available as a 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/ experiment and it’s ready for testing, mostly by 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. developers whose code extends that part of the editor. If you’re a site owner using plugins that add things there, there is a flow for you too.

What is it?

With the “Editor Inspector: Use DataForm” experiment on, in the blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. editor the classic summary panels of 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 replaced by a DataForm, for every post type that uses the block editor. The settings follow what each post type supports.

The same form definition is also used to build the Quick Edit interface in the Site Editor.

This is part of consolidating Quick Edit and the editor inspector and we’re aiming to stabilize it for WordPress 7.2. What we’d love help with most though is what plugins add on top.

Why the change?

For users, a cohesive experience: the inspector in the post editor and Quick Edit in the Site Editor show the same information and should look and behave the same, instead of drifting apart.

Quick Edit interface

For developers, APIs that work across both screens: controlling which settings show (this is one example, and it’s possible today with the view config filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output.), and adding your own fields through the fields 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., so they show up in the inspector and in Quick Edit (#61084, #74865). The fields API is aimed for 7.2.

How to test

Install Gutenberg 24.0 or newer on a test site and turn on “Editor Inspector: Use DataForm” under Settings > Gutenberg. Then open a post and compare the Post tab with the experiment on and off. It’s always better to test 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. because it’s the most current version, but Gutenberg 24.0 is acceptable.

Note: Gutenberg trunk needs WordPress 7.0 or later, the 24.0 release also works on 6.9. Either way, please mention which version you tested.

If you develop a plugin, your own dev environment with Gutenberg installed is all you need.

For a quick look without setting anything up there is WordPress Playground, with the experiment already on: Gutenberg 24.0 or trunk. To test your own plugin there, install it from the Plugins screen as usual, or upload its zip.

What to expect

  • PluginDocumentSettingPanel, PluginPrePublishPanel, PluginPostPublishPanel, PluginSidebar, PluginPostStatusInfo fills and removeEditorPanel keep working.
  • The PluginPostExcerpt slot is not ported. It’s a deprecated API and we’re considering not adding it at all, so whatever you render there should move to a PluginDocumentSettingPanel.
  • The editor.PostFeaturedImage filter doesn’t work in 24.0. Trunk has it since #83133 (not in Quick Edit), so it will be in 24.1. Anything targeting the classic panels’ CSSCSS Cascading Style Sheets. class names or markup won’t be ported.
  • The featured image picker doesn’t go through the editor.MediaUpload filter in 24.0. Trunk has it since #82678 (not in Quick Edit), so it will be in 24.1.

Anything you need in the inspector can go in a PluginDocumentSettingPanel until the fields API lands.

Hiding a default setting or changing where its label sits is already possible with the server side view config filter, get_entity_view_config_posttype_post for posts (see docs). There is an example in this GitHub issue.

Suggested testing flows

You don’t have to follow these exactly, they’re mostly here to give you ideas.

What your plugin adds to the inspector

Open a post with your plugin active. Is everything you add to or change in the Post tab (panels, fills, filters, styles, scripts) still there, and does it still work?

Your custom post types

If you register post types that use the block editor, open one of them. You should only see the settings the post type supports (for example no excerpt setting without excerpt support). Please report anything missing or extra there.

Other user roles

Log in as an editor, author or contributor and open a post. The settings should match what the role can do, like in the classic inspector (an author doesn’t get the Author setting, for example), and saving should still work. Some known issues have already be fixed in trunk (#82844, #82857, #82858).

The editor.MediaUpload and editor.PostFeaturedImage filters

The featured image picker doesn’t go through the editor.MediaUpload filter in 24.0. If your plugin replaces the media picker through editor.MediaUpload, trunk has it since #82678 (not in Quick Edit, which keeps the plain picker), so test it with the trunk Playground link or a trunk build.

The same goes for editor.PostFeaturedImage: trunk has it since #83133, also not in Quick Edit.

Site owners

You don’t need to be a developer for this one. If you use plugins that add things to the Post or Page tab (SEO or social fields, custom panels, that kind of thing), enable the experiment on a test site or in Playground and check they are still there. If something is missing, please share the plugin name and version, and a screenshot with the experiment on and off.

Sharing your feedback

Comments on this post are fine, but the best place is the GitHub issue for this call for testing. Share what you extend, what changed, and whether you can adapt on your side or need something from Gutenberg. “Checked X, nothing changed” is useful too. Feedback about the inspector itself (layout, labels, missing controls) is welcome on the tracking issue, where the open design questions are discussed.

There is no deadline, but the sooner the better, since this is aimed for 7.2.

Out of scope

The goal here is compatibility, what happens to the things plugins add to the inspector. A few things are handled separately:

  • Block editing, taxonomyTaxonomy A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies. panels and metaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. boxes. The experiment doesn’t touch them.
  • Some design questions are still open, like which settings should be regular fields instead of panels, or the Reset button of the Date setting, which isn’t there for now and may come back in a follow up. These live in the tracking issue.

Thanks in advance for testing! Props to @mcsf for reviewing this post.

#core-editor #gutenberg

What’s new in Gutenberg 24.0? (16 September)

“What’s new in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/…” posts (labeled with the #gutenberg-new tag) are posted following every Gutenberg release on a biweekly basis, showcasing new features included in each release. As a reminder, here’s an overview of different ways to keep up with Gutenberg and the Editor.

What’s new in
Gutenberg 24.0?

Gutenberg 24.0 has been released and is available for download!

This version extends visual 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 include the post title, gives the Gallery blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. a grid layout with per-breakpoint controls, and lets a site title scale to the width it is given.

Visual revisions now cover the post title

Visual revisions have been growing over the last few releases, and until now the post title sat outside them. In 24.0, the title participates like any other piece of content, including displaying change diffs directly in the post title (#82536, #82586).

Seeing it in the same view as body changes removes the need to guess when a rename happened.

The Gallery block gains a Grid variation that can be switched on from the block inspector, replacing the default non-editable flex layout with a fully customizable grid (#81909).

“Column count” and “Crop images to fit” can now also be set per breakpoint through viewport states. A gallery can show four columns on a wide screen and two on a tablet without any custom CSSCSS Cascading Style Sheets. (#82003).

Site titles that fill their available space

The Site Title block now supports fit-text (#82074). Toggle it on from the ellipsis menu in the typography panel and the title scales to the full width available to it, rather than being sized in points and left to wrap or fall short.

Other notable highlights

  • A redrawn icon set. Nearly 100 icons have been redrawn from a mix of filled and outlined shapes into a single, consistently stroke-based visual language (78812, 78808, 82338).
  • Tab indents lists. In the List block, Tab and Shift+Tab now indent and outdent a fully selected list item, and work across a multi-item selection instead of only at the caret (82460, 82411).
  • Background images from a URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org. Background image support can now accept an image URL, rather than requiring an entry in the Media Library (82230).
  • Non-breaking spaces are visible. The format library now visualizes non-breaking spaces, so a character that silently changes wrapping is no longer invisible while editing (74040).

Changelog

Enhancements

Components

  • Add defaultShown, onShownChange to ToolsPanelItem. (78010)
  • Border Box Control: Try moving the unlink button to the label row, and rename the panel to Borders. (82163)
  • Breadcrumb: Add UIUI User interface component. (80425)
  • DataForm: Add a showPlaceholderIfEmpty option to the panel layout. (82527)
  • DataForm: Communicate the timezone in the datetime control. (82291)
  • Editor: Migrate post-card-panel Badge to UI Badge. (82500)
  • Global Styles UI: Migrate revisions Active Badge to UI Badge. (82560)
  • Icons: Redraw 35 prominent icons with consistent stroke widths. (78808)
  • Icons: Redraw 64 icons to be stroke-based. (78812)
  • Menu: Stabilize portaled 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. 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.. (82092)
  • Menu: Support multiple item descriptions. (81825)
  • Menu: Use Text for item labels and descriptions. (82237)
  • SearchableSelect: Add form primitive to wordpress/ui. (80961)
  • Storybook: Persist 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. theme in URL. (82111)
  • Support isAny and isNone 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. operators for numeric fields. (77942)
  • Tab Panel: Show focus with outline instead of legacy box-shadow ring. (82421)
  • Text: Use pretty wrapping by default. (82133)
  • Theme: Build default ramps before token artifacts. (82525)
  • Theme: Reduce repeated color ramp search work. (82545)
  • UI: Add CheckboxControl. (82213)
  • UI: Add Combobox and Autocomplete Status. (82195)
  • UI: Add popupWidth prop to item popup components. (82087)
  • UI: Add Radio form primitive. (82214)
  • UI: Align overlay Trigger props with Base UI. (81824)
  • UI: Put overflow on Select.List instead of a nested wrapper. (82470)
  • UI: Rename Popup popupWidth prop to width. (82193)
  • UI: Reset completed calendar ranges by default. (82612)
  • UI: Support custom targets on Link and Menu.LinkItem. (82347)
  • UI: Use root theme for portaled overlays. (82038)
  • Validated form controls: Use design token for invalidinvalid A resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid. focus rings. (82410)

Block Library

  • Math: Declare clientNavigation interactivity support. (82248)
  • Allow themes to override the padding added via background color. (82024)
  • Audio: Update autoplay help text for clarity. (69978)
  • Enable Gallery columns and crop controls in viewport states. (82003)
  • Icons: Convert Search icon to strokes. (82338)
  • List: Indent and outdent a fully selected list item with Tab. (82460)
  • List: Indent and outdent multi-selected items with Tab. (82411)
  • Query LoopLoop The Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. https://codex.wordpress.org/The_Loop: Rename the “Keyword” filter to “Search terms” and add help text. (82387)
  • Query: Replace the “Reload full page enabled” modal with a snackbar notice. (82246)
  • Site title: Add fit-text support. (82074)
  • Try adding a Grid block variation to Gallery. (81909)
  • Update navigation link block name, use a default variation for custom link. (82375)
  • Use ‘useEntityProp’ in Site Title and Tagline blocks. (82518)
  • Video block: Switch to UI Badge. (82441)
  • feat: Introduce ‘Add Media’ in the block controls for media-text block. (82420)

Post Editor

  • Autocompleters: Consider email address context in user mention. (47249)
  • CSS Styling: Represent focus with outline for list view component. (82129)
  • DataViews: Append an ellipsis to action labels that open a dialog. (81994)
  • Editor: Refactor the Options menu to use the Menu component. (81564)
  • Editor: Refactor the View menu to use the Menu component. (82321)
  • Editor: Render change diffs in the post title in revisions. (82586)
  • Editor: Show revision data in Post Title component. (82536)
  • Media: Attach unattached media to the current post on save/publish. (81977)
  • Menu: Align selection indicators and prefix icons with item labels. (82346)
  • Post slug: Prefer server sanitization in the editor. (78135)
  • Try: Add “reading settings” link to Front Page template. (81987)

Site Editor

  • Add New Template: Show the design system focus ring instead of legacy box-shadow rings. (82164)
  • Add a root error boundary to prevent a blank screen. (82486)
  • Site editor v2: Identity takes its form from the view configuration endpoint. (82692)
  • Site editor v2: Navigation takes view configuration from endpoint. (82138)
  • Site editor v2: Pages take view configuration from endpoint. (82140)
  • Site editor v2: Patterns take view configuration from endpoint. (82458)
  • Site editor v2: Template parts take view configuration from endpoint. (82457)
  • Site editor v2: Templates take view configuration from endpoint. (82456)
  • Site editor v2: Use the canonical template fields in the templates list. (82666)
  • Site editor v2: Use the canonical wp_block fields in the patterns list. (82672)

Block Editor

  • Background image: Support setting the image from a URL. (82230)
  • BlockPreview: Assert preview contents are inert. (82682)
  • Format library: Visualise non-breaking spaces. (74040)
  • List View: Disable block icon colors while the block is selected. (82498)
  • Show the block outline where the grab cursor shows. (81798)
  • Tab trap escape hatch: Leave/enter the canvas with Escape/Enter. (82314)

Dashboard

  • Site Health 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.: Route the body’s review link through the host. (82066)
  • Widget Dashboard: Add a Policy provider to govern what users may do. (81967)
  • Widget Dashboard: Enforce the policy on the staging layer for every instance operation. (82256)
  • Widget Dashboard: Govern Reset to default through the policy. (82255)

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

  • Add unregister to remove a registered middleware. (82408)
  • Expose defaultFetchHandler so overrides can restore it. (82553)
  • api-fetch: Resolve to null for a 200 response with an empty body. (79325)

Media

  • Media Editor: Refactor the panel layout. (81840)
  • Media Fields: Pass the field’s disabled state to the textarea controls. (82516)
  • Media editor: Lock the editing tools while a save is running. (82417)

Widgets Editor

  • Widgets: Surface debugging details in the ErrorBoundary. (82099)
  • Widgets: Use the layout icon for widget areas. (82025)

Fields

  • Migrate page-title Badge to UI Badge. (82499)

Data Layer

  • Privacy policy page badge: Make it visible in Site Editor > Pages and Editor Inspector. (82422)

Widget Dashboard

  • Make the column count a host decision. (82204)

Grid

  • Per-item tile size limits. (81899)

Bug Fixes

  • CI: Do not immediately fail the type label check on a newly opened pull request. (82322)
  • Fix LocationPicker popover alignment. (82090)

Components

  • BorderBoxControl: Make sure the group of controls is associated with the label. (82279)
  • DataForm: Render untyped fields without an edit control that are read-only. (82514)
  • DataForm: Treat combined form fields purely as layout containers. (82175)
  • DataViews: Fix Field.sort TypeScript type definition. (82162)
  • DataViews: Restrict the isAll filter operator to array fields. (82463)
  • DataViews: Scope the search field’s fixed width to the default UI search row. (82128)
  • DataViews: Skip table columns for field ids without a field definition. (82601)
  • Disabled: Keep the consumer className when isDisabled is false. (82648)
  • Fieldset: Fix gap token to match spec. (75479)
  • Fix: Alert dialog box cancel button color. (82261)
  • FormTokenField: Wrap to the last suggestion when pressing ArrowUp with nothing selected. (82646)
  • Inserter: Keep the block preview inside the viewport. (82060)
  • Keep foreign items out of a ToolsPanel menu. (82127)
  • Searchable selects: Hide creatable footer when it is filtered out. (82566)
  • Snackbar: Restart timeout when a notice is recreated. (81764)
  • Theme: Enforce active fill contrast. (82542)
  • Theme: Make chroma capacity caching deterministic. (82505)
  • Theme: Remove chroma capacity cache. (82591)
  • ToggleGroupControl: Honor the root disabled prop. (82259)
  • UI, DataViews: Give input and selection controls solid backgrounds. (82391)
  • UI: Fix Link target detection. (82447)
  • UI: Fix Menu.LinkItem target detection. (82442)
  • UI: Fix Minimal Select popup width. (82461)
  • UI: Fix enabled input placeholder contrast. (82304)
  • UI: Hide Input field ring when a slot control is focused. (82257)
  • UI: Keep borderless InputLayout chrome when disabled. (82468)
  • UI: Keep focus rings visible in overlay content. (82443)
  • UI: Name unlabeled form primitive stories. (82311)
  • UI: Re-read the native validity on blur in ControlWithError. (82376)
  • UI: Remove ValidityIndicator outer margin. (82267)

Block Library

  • Accordion Panel: Reset padding-block when panel is hidden. (81782)
  • Fix categories block handling of invalid taxonomyTaxonomy A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies.. (82153)
  • Fix: Footnote IDs can start with a digit and break CSS selectors. (82398)
  • Fix: Tabs block: Anchor links in tab panels are not functional. (81744)
  • Gallery block: Fix ‘Crop images to fit’ broken in editor. (82318)
  • Gallery: Shorten “Use images attached to the post” button, add description. (82617)
  • Image block cropping: Sync image size and link destination settings. (82316)
  • List: Merge into the previous line on Backspace instead of outdenting. (82145)
  • List: Outdent an empty middle item without adding an item. (82011)
  • Navigation: Restore flex-grow on container when accessible label is present. (78447)
  • Query Loop: Fall back to post when the query has no postType. (82465)
  • Query: Don’t write excludeCurrent into blocks that never had it. (82147)

Block Editor

  • Columns: Fix appender drop zone visibility when dragging into empty column. (77852)
  • DOM: Exclude visibility-hidden elements from focusable results. (82574)
  • Fix auto-capitalization after Enter on iOSiOS The operating system used on iPhones and iPads. Safari. (82475)
  • Fix editor link colour cascade order for nested blocks. (77833)
  • Fix: Responsive horizontal orientation does not override a vertical layout. (82364)
  • Fix: Retain focus and caret position after Backspace undo of a prefix block transform. (82116)
  • List View: Don’t focus the last Table cell on keyboard activation. (81964)
  • Rich text: Restore contenteditable on pointercancel. (82598)
  • Writing Flow: Bail out of Enter handling when no block is selected. (82424)

Post Editor

  • Editor: Deprecate the as prop of the pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. menu item components. (82319)
  • Editor: Derive post-only block list layout from the assigned template. (82599)
  • Editor: Store the finalize response as the attachment record. (81947)
  • Fields: Hide the slug field for posts without a permalink. (82341)
  • Media: Refuse a multi-file drop on a placeholder that takes one file. (82046)
  • Media: Stop claiming “Upload complete” when every upload failed. (81397)
  • MetaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. Boxes: Move meta box markup with moveBefore to keep classic editors alive. (82243)
  • Post URL: Translate the copy permalink button label. (82642)

wp-build

  • Build Package: Restore CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Boot layout compatibility. (82112)
  • Build: Allow wp-theme 2.x peer deps. (82139)
  • Build: Fix regular CSS injection in Vitest Browser Mode. (82154)
  • Pages: Require authentication and a capabilitycapability A capability is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on their role. For example, users who have the Author role usually have permission to edit their own posts (the “edit_posts” capability), but not permission to edit other users’ posts (the “edit_others_posts” capability). to render generated standalone pages. (82254)

Data Layer

  • Core Data: Return a stable record for equivalent _fields queries. (82552)
  • Core Data: Scope revisionId to the entity it is provided for. (82517)
  • DataViews: Clamp page after delete. (82244)

Client Side Media

  • Media: Keep indexed PNG sub-sizes indexed. (81884)
  • Media: Only blame the browser’s codecs when HEIC really cannot be decoded. (82265)
  • Media: Report server upload failures in plain language. (81735)

Site Editor

  • Boot, Site Editor: Seed content surfaces with default background color. (81646)
  • Fields: Remove unused custom sort from the author fields. (82559)

Global Styles

  • Global styles engine: Return a copy from getResolvedValue instead of mutating. (82278)
  • Resolve theme-relative background image URLs for display. (82242)

Env

  • wp-env: Fix Docker build errors with Debian Bullseye repositories. (82478)

Layout

  • Fix: Restore layout styles for block style variations. (82335)

Format library

  • Fix Edit as HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. crash with background-only highlight. (82215)

Views

  • useViewConfig: Don’t request the view configuration twice. (82141)

Dashboard

  • Widget Dashboard: Keep the plain anchor for an empty-string download. (82073)

Font Library

  • Keep CSS custom properties unquoted in font previews. (82010)

Fields

  • Fix pattern export filenames by normalizing special characters. (77033)

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)

  • Workflow: Replace cmdk with the wordpress/ui Autocomplete primitive. (82504)

Components

  • Match the wordpress/ui disabled styles in form controls. (82454)
  • ProgressBar: Respect reduced motion preferences. (82490)

Connectors screen

  • Fix help paragraph color contrast ratio in the Connectors page. (82378)

Guidelines

  • Fix: Content Guidelines: UXUX User experience/UI Accessibility issues. (80306)

Post Editor

  • Standardize ‘Back’ and ‘Go back’ labels. (79211)

Performance

  • Tests: Skip pull requests that only change Storybook stories. (82459)

Themes

  • 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.: Avoid rebuilding identical block schemas during sanitization. (82203)

Components

  • Cut the ToolsPanel render cascade. (82180)

Style States

  • Block Supports: Bail early in state styles when a block has no style attribute. (81908)

Block Editor

  • Rich text: Resolve owned event listeners once instead of per subscriber. (80605)

Experiments

  • Editor assets endpoint: Prime the theme JSON resolver before capturing. (82134)

Post Editor

  • ExtensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. site editor: Add a revisions entry point to the Styles route. (82142)
  • Media Modal Experiment: Allow filtering by attached to the post, or unattached. (81974)

Block Library

  • Remove the form blocks experiment. (82451)

Block Editor

  • Block Fields Media: Handle ‘audio’ in chooseItemLabel. (82389)

Site Editor

  • Extensible site editor: Fall back to the raw title in edit route document titles. (82143)
  • Extensible Site Editor: Let menu items be added from the navigation screen. (82125)

Documentation

  • API Fetch: Rename defaultFetchHandler parameter to options. (82588)
  • Add recommended bulk suppressions configuration for ESLint VSCode. (82303)
  • Components: Add an Emotion-to-SCSS migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. skill and guide. (82567)
  • DataViews: Add hierarchical levels story. (82344)
  • DataViews: Document that table column styles do not apply to the primary column. (82238)
  • DataViews: Remove the rich text options from the control configuration type. (82330)
  • Docs: Document isolated worktree setup. (82524)
  • Docs: Explain when the Cover block’s overlay controls appear. (82234)
  • Docs: Fix grammar in documentation. (82032)
  • Docs: Improve setAttributes updater function wording. (82405)
  • Docs: Update Playground CLICLI Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress. wording. (77579)
  • Document every type for DataViews/DataForm/Field API. (82326)
  • Fix spelling typos in documentation and inline comments. (82217)
  • Menu: Correct alignment documentation and changelog. (82455)
  • Packages: Add cross-version compatibility skill. (81890)
  • Popover storybook: Add infotip with link example. (82653)
  • Remove invalid references to Babel in packages README. (82176)
  • Storybook: Demonstrate light, dark, and nested themes. (82039)
  • Theme: Clarify color seed and warning guarantees. (82526)
  • Theme: Move post-release changelog entry to Unreleased. (82093)
  • UI: Add Form best practices Storybook page. (82197)
  • Update Style Engine block supports documentation. (82585)

Code Quality

  • CI: Pin npm version in the private API check job. (82222)
  • CodeRabbit: Disable the review status comment. (82534)
  • CodeRabbit: Only review on request, keep PR descriptions untouched. (82448)
  • Docs: Align param 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.) columns in lib/ docblocks. (81902)
  • Docs: Align param tag columns in phpunit/ docblocks. (81904)
  • Docs: Remove the blank line between param and return in test docblocks. (81907)
  • Packages: Exclude src from block-serialization-default-parser package. (77307)
  • Performance tests: Reuse the plugin an earlier 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. run already built. (82223)
  • Replace npm-run-all with native npm script chaining. (82166)
  • Reusable Blocks: Remove leftover merge conflictconflict A conflict occurs when a patch changes code that was modified after the patch was created. These patches are considered stale, and will require a refresh of the changes before it can be applied, or the conflicts will need to be resolved. markers from the changelog. (82126)
  • list-reusable-blocks: Exclude src from published files. (77305)

Components

  • Add compound component composition diagnostics. (82509)
  • Adminadmin (and super admin) UI: Exclude src from published files and sideEffects. (77285)
  • Block editor, Components: Stop relying on Disabled class name. (82651)
  • DataViews layout storybook: Action names and primary status. (82104)
  • DataViews: Declare dependencies imported by the ./wp bundle. (81843)
  • Icons: Remove the obsolete forced colors mode hack. (82481)
  • Migrate remaining JSX files to TypeScript. (82132)
  • Theme, Widget dashboard: Declare the @storybook/addon-docs dependency. (82676)
  • Theme: Migrate Terrazzo modes to resolvers. (82537)
  • UI: Drop Status and Empty live region test assertions. (82300)
  • UI: Remove ESLint ref suppressions and refactor AlertDialog state. (82131)
  • UI: Remove unused outset-ring–focus-within-visible class. (82077)
  • UI: Test Calendar raw-offset timezones directly. (82658)
  • UI: Validate compound component context. (82510)

Block Editor

  • CSS Styling: Cleanup focus outline override for grid component. (82337)
  • Migrate __experimentalText and __experimentalHeading to wordpress/ui Text in Inspector Popover HeaderHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes.. (77449)
  • Migrate __experimentalText to wordpress/ui Text in Allowed Blocks Modal. (78119)
  • Migrate __experimentalText to wordpress/ui Text in Block switcher bindings hint. (77366)
  • Migrate __experimentalText to wordpress/ui Text in Pattern Overrides Dropdown. (77492)
  • Span the writing flow focus capture elements over the canvas. (82354)
  • TypeScript: Migrate format-library package to TS. (79486)

Post Editor

  • Block Editor: Remove the dead Write/Design editor tool plumbing. (82677)
  • Editor: Apply the showListViewByDefault preference in the shared editor. (82119)
  • Editor: Fix disabled and link items of the more menu adapter. (82428)
  • Editor: Mark __unstableSaveForPreview options as optional. (81858)
  • Editor: Merge duplicate “Enhancements” changelog sections. (82533)
  • Make @wordpress/reusable-blocks a no-op compatibility package. (79186)

Block Library

  • Docs: Remove invalid @return tag from the block_core_social_link_get_services hook docblockdocblock (phpdoc, xref, inline docs). (82488)
  • List: Simplify indent code & keep client ID. (59216)
  • Navigation: Change WCText to Text. (82130)
  • Remove the content-only inspector fields (block fields) experiment. (82531)

Data Layer

  • Core Data: Convert hooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same. tests to renderHook and drop JSX. (82276)
  • Remove the template activation experiment. (82241)
  • Validate tsconfig references against declared dependencies. (82106)
  • feat: Improve TypeScript definitions in the getEntityRecord function. (81863)

Fields

  • Declare the caption, alt text, description and pingPing The act of sending a very small amount of data to an end point. Ping is used in computer science to illicit a response from a target server to test it’s connection. Ping is also a term used by Slack users to @ someone or send them a direct message (DM). Users might say something along the lines of “Ping me when the meeting starts.” status controls through the Field API. (82539)
  • Remove unused CSS rule from slug field control. (77961)

Widgets Editor

  • Edit Widgets: Guard canInsertBlockInWidgetArea against an empty block list. (82107)
  • Widgets: Replace {TODO} placeholder with PR number in changelog entries. (82450)

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/

  • Templates REST API: Prevent fatal error when a null template reaches prepare_item_for_response. (82374)
  • View Config: Move the table column style descriptions to the 7.2 compat layer. (82372)

Create Block

  • Test package at supported Node.js versions. (82657)

Site Editor

  • View config: Remove stale fields from the wp_template default view. (82602)

Global Styles

  • Remove the color randomizer experiment. (82452)

Server Side Render

  • Tests: Fix Vitest setup and stale jest types under non-hoisting installs. (82290)

Url

  • Test: Fix unit test failures on trunk. (82201)

Blocks

  • Make BlockTransform a discriminated union over its type. (81831)

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)

  • Exclude src from published package files. (77309)

Keycodes

  • Exclude src from published files. (77306)

Escape HTML

  • Exclude src from published package files. (77304)

Deprecated

  • Packages: Exclude src from deprecated published package. (77303)

DOM ready

  • Exclude src from published package files. (77302)

Blob

  • Exclude src from published package files. (77289)

Autop

  • Packages: Exclude src from autop published package. (77283)

Tools

  • Point to docmumentation about release assets. (82250)
  • Project Management: Add validation for missing 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/ labels configuration. (76263)
  • Project Management: Remove empty entries from CODEOWNERS. (82292)
  • Project Management: Restore CODEOWNERS exclusions for suppression lists. (82538)
  • Project Management: Update CODEOWNERS to reflect current participation. (82262)
  • Update changelog instructions for agents. (82097)

Testing

  • Add more end-to-end tests for the editor inspector consolidation experiment. (82239)
  • Add more end-to-end tests for the editor inspector consolidation experiment. (82327)
  • Add promptfoo for testing agent development setup and skills. (80812)
  • Add the template end-to-end tests for the editor inspector consolidation experiment. (82394)
  • Automated Testing: Enforce .tsx for all new ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org files. (80123)
  • Automated Testing: Fix failing categories test on trunk. (82182)
  • Automated Testing: Fix unit test compatibility with Node.js v26. (82618)
  • CI: Add “Required changes from trunk” PR check. (82272)
  • CI: Add a per-workflow status check job and filter paths. (81015)
  • CI: Unify the automation comments into a single PR comment. (82249)
  • DataViews: Remove obsolete Node 20 timezone test gate. (82644)
  • DateTime tests: Freeze the clock in the empty-value calendar test. (82282)
  • e2e-test-utils-playwright: Update Lighthouse and web-vitals. (81916)
  • E2E: Run the site editor suite against the extensible site editor too. (82117)
  • Fix privacy policy page setting unit test on multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site. (82467)
  • Jest: Update to 30.5.0. (82181)
  • Media Utils: Preserve arrays in multipart form data. (82353)
  • Packages: Replace stale jest types with the Vitest test environment. (82605)
  • Performance tests: Build once and shard the suites across parallel CI jobs. (82160)
  • Scaffold end-to-end tests for the editor inspector consolidation experiment. (82178)
  • Stylelint tools: Resolve test configuration extends from the workspace. (82336)
  • Tabs: Remove core’s duplicate render_block_context filter. (82610)
  • Test: Drop the jest-dom Vitest entry point from test files. (82606)
  • Test: Enforce 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 test runner ownership. (82299)
  • Test: Migrate Node unit tests to Vitest. (82211)
  • Test: Migrate deterministic JSDOM tests and harden Vitest isolation. (82212)
  • Test: Prepare TypeScript test graphs for Vitest. (82210)
  • Test: Root the Vitest browser project where its dependencies are declared. (82699)
  • Test: Update Vitest to version 5. (82687)
  • Update Playwright to 1.63.0. (82654)

Build Tooling

  • Add browserslist configuration for build targeting. (82179)
  • Build Scripts: Suggest –verbose when a type check fails. (82604)
  • Build: Enforce NodeNext resolution for ESM packages. (82088)
  • Build: Require explicit JSX file extensions. (82189)
  • Bump vite from 8.2.1 to 8.2.2. (82668)
  • Bundled packages: Add a check for transitive private API usage. (82027)
  • CI: Collapse package CHANGELOG check exclusions into a single grep pattern. (82121)
  • CI: Read the required npm version from a single source. (82235)
  • Change stray ubuntu-latest to ubuntu-24.04. (82156)
  • Fix the high-severityseverity The seriousness of the ticket in the eyes of the reporter. Generally, severity is a judgment of how bad a bug is, while priority is its relationship to other bugs. sharp audit failure in AI development tests. (82627)
  • Framework: Error on npm versions older than the required floor. (82320)
  • Framework: Update @types/node to v24. (82616)
  • Framework: Update Node.js to v24 LTS and npm to v11. (80395, 82355, 82370)
  • Package lock: Deduplicate Jest dependencies. (82187)
  • Packages: Recover August 26 npm release metadata. (82085)
  • Release: Make npm publication verification resumable. (82089)
  • Release: Map [Type] Flaky Test to the Tools changelog section. (82078)
  • Release: Use the CLI Node.js version for all package publishing. (82122)
  • Storybook: Drop unused support for js-as-jsx. (82192)
  • Storybook: Include stories in docgen TypeScript project. (82694)
  • Test: Classify and enforce unit test environments by filename. (80991)
  • Test: Enforce Vitest conventions and CI guardrails. (81040)
  • Test: Update SWC dependencies. (82660)
  • Theme: Add LightningCSS WPDS token fallback plugin. (80401)
  • Theme: Add bin-specific tsconfig with nodenext module resolution. (82622)
  • Theme: Use Node.js native type-stripping for scripts. (82680)
  • Update Actions and Octokit dependencies. (82663)
  • Update Stylelint to v17 and related packages. (80738)

ESLint plugin

  • ESLint: Thin use-recommended-components tests. (82407)
  • Remove usage of Babel parser. (82144)

Data Layer

  • Build: Normalize JSX file extensions. (80990)
  • Remove unused dependencies across the monorepo. (82103)

Components

  • UI: Add Field.VisualLabel. (82095)

Block Library

  • Docs: Align param tag columns in packages/ docblocks. (81903)

Security

WP Scripts

  • Build/Test Tools: Replace npx with npm exec –no. (82331)

First-time contributors

The following PRs were merged by first-time contributors:

  • @0xDI: Navigation: Restore flex-grow on container when accessible label is present. (78447)
  • @antwonw: Media Utils: Preserve arrays in multipart form data. (82353)
  • @dmallory42: DataForm: Render untyped fields without an edit control that are read-only. (82514)
  • @Jiwoon-Kim: Fix: Restore layout styles for block style variations. (82335)
  • @Joseph-Mutua: Docs: Update Playground CLI wording. (77579)
  • @MicahelE: api-fetch: Resolve to null for a 200 response with an empty body. (79325)
  • @shameemreza: Pages: Require authentication and a capability to render generated standalone pages. (82254)
  • @wprashed: DataViews: Fix Field.sort TypeScript type definition. (82162)

Contributors

The following contributors merged PRs in this release:

@0xDI @aaronrobertshaw @adamsilverstein @adimoldovan @aduth @afercia @ahirpravin @andrewserong @antwonw @ciampo @coderGtm @desrosj @dilipom13 @dinhtungdu @dmallory42 @ellatrix @hbhalodia @himanshupathak95 @i-am-chitti @im3dabasia @Infinite-Null @jasmussen @jeryj @Jiwoon-Kim @jorgefilipecosta @Joseph-Mutua @jsnajdr @karthikeya-io @Kgupta62 @Mamaduka @manzoorwanijk @marekdedic @maxschmeling @mcsf @MicahelE @mikeybinns @mirka @mreishus @mukeshpanchal27 @Mustafabharmal @Nikschavan @ntsekouras @oandregal @R1shabh-Gupta @ramonjd @retrofox @SainathPoojary @sanketio @saranshsinhaa @sarthaknagoshe2002 @scruffian @shail-mehta @shameemreza @simison @sirreal @swissspidy @t-hamano @talldan @tellthemachines @tyxla @widoz @wprashed @yashjawale @youknowriad

Props

Special thanks to @im3dabasia and @ralucastn for the review.

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

Updating WordPress to use Node.js 24 and npm 11

As of September 8th, the versions of Node.js and npm required for WordPress development are now 24.x (minimum 24.18.0) and 11.x (minimum 11.16.0).

This applies to trunk in both repositories, the wp/7.1 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". in gutenberg, and the 7.1 branch in wordpress-develop. Older branches remain unchanged (requiring >=20.10.0 and >=10.2.3 of Node.js and npm, respectively). See “What’s next” below for details on the long-term plan.

Required action by contributors

Here is a list of steps that you may need to take to continue contributing to WordPress:

  1. Update your local environment to a version of Node.js >=24.18.0.
    • With nvm, run nvm install && nvm use inside your wordpress-develop or gutenberg checkout to pick up the version from .nvmrc, then reinstall dependencies with npm ci.
    • Similar commands exist if you use fnm (Fast Node Manager): fnm install && fnm use.
  2. If you have an open pull request, merge or rebase the latest trunk into it. 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/, the required CI checks now run on Node.js 24, so PRs based on an older 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. will not contain the required checks until updated merging will be blocked by the repository’s configured rulesets.

The .nvmrc files temporarily pin 24.18 (major.minor) to make it easier for contributors to have the required version when they use nvm use. It will be relaxed to the major version later, per the upgrade handbook page.

Timing Node.js Upgrades

While running the most recent version of any software is highly desirable, sometimes it’s perfectly fine to remain on a stable, supported version. While 20.x has not been Active LTS since October 2024, it has remained a Maintenance LTS release until reaching end-of-life in April 2026. As a result, packages and ecosystems have begun to drop support (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/ announced the removal of 20.x from Actions runner images), and a growing queue of tooling and security work has combined to make running more modern versions a necessity.

What this unblocks

Over the past year, PR-72973 accumulated a long list of work blocked on these versions. Highlights:

  1. Isolated dependencies (PR-76195): switching Gutenberg to npm’s linked install-strategy so packages can only import what they declare. This closes a six-year class of “works in the monorepo, breaks for consumers” bugs in the published @wordpress/* packages. The implementation (PR-75814) has been ready since February and kept rebased against trunk the whole time. That continuous testing surfaced bugs in npm’s isolated mode and led to three major features contributed upstream to npm 12, so the tooling is ready the moment we flip the switch.
  2. OIDC trusted publishing (PR-77227): publishing the @wordpress/* packages from CI without a long-lived npm token, eliminating a whole categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. of supply-chain risk. Requires npm 11.5.1+.
  3. Supply-chain hardening for every contributor: the minimumReleaseAge protection already configured in Gutenberg only takes effect on npm 11, so it now applies to every local installLocal Install A local install of WordPress is a way to create a staging environment by installing a LAMP or LEMP stack on your local computer., not just CI.
  4. TypeScript without a build step: Node.js 24 runs TypeScript natively via type stripping. With the coding guidelines recommending TypeScript for new code, scripts and tools can be written in TS and executed directly.
  5. Queued dependency updates that require Node.js 22+: Lerna 10, Lighthouse 13, webpack-dev-server 6, markdownlint-cli, and others.
  6. Platform improvements: full ES module/CommonJS interop, and native glob, fetch, and crypto APIs that let us drop packages like rimraf, fast-glob, uuid, and node-fetch, shrinking the dependency tree that supply-chain attacks target.
  7. npm 12 locally: npm 12’s Node.js requirement (^22.22.2 || ^24.15.0 || >=26.0.0) is now satisfied, so contributors can adopt its install-time security improvements today.

What’s next?

This is just the first step in this plan to upgrade the WordPress codebase to use the latest versions of Node.js. Here is an outline of the tasks that are targeted next.

Upgrading to Node.js 26.x

When choosing which version to target, the guidance is to only choose versions with Active LTS status (currently 24.x). 26.x will be given this status later this year, in October. The goal is to ride the momentum from this change and upgrade to 26.x at that time.

The relevant workflows in both repositories will be updated to run the relevant tests against Node.js 26 to get a head start on this effort.

What does this mean for older branches?

In general, the goal is for the underlying tools to be as consistent as possible across all versions of WordPress that are eligible to receive security patches. This includes the versions of Node.js and npm whenever possible, provided upgrading does not result in changes to the user-facing software.

Contributors have begun exploring the feasibility of updating Node.js to 24.x in the 6.4-7.0 branches of WordPress (and wp/X.Y branches in gutenberg), all of which currently use 20.x. The hope is that all of these branches can also be updated to 26.x in October along with trunk. 

The 6.3-4.7 branches will remain on Node.js 14.x and there are currently no plans to upgrade them.

Increase the minimum required version of npm

As detailed above, the jump to 11.16.0 unlocks several security features. Security-focused work has continued into npm 12.x with install-time improvements.

The Node.js team recently announced that npm 12 will not be bundled with Node.js 26. Historically, the minimum version of npm required to contribute to WordPress has been set to the version bundled with the respective Node.js version. This avoids making the requirement more complicated than it needs to be, and contributors are always free to run any version that satisfies the minimum.

Because these security features are significant, the goal is to raise the minimum required version of npm to 12.x to ensure that everyone contributing to WordPress benefits from these security features.

Because this deviates from the historical practice, it requires some exploration to ensure that the w.org build server and explicit pins in each relevant repository all work as intended. That roadblock is already been cleared in the gutenberg repository when PR-82235 made devEngines.packageManager in package.json the single source of truth for the npm version that CI and the release tooling install. Moving Gutenberg to npm 12 now becomes a one-line change.

Because this upgrade may involve more changes due to enhanced security measures, upgrading this independent of Node.js will likely make this more manageable.

Changes to the Node.js project’s release strategy

Starting with version 27.x, Node.js will move from two major releases per year to one major release per year and the odd/even distinction is eliminated. Future upgrades will be planned around that cadence.

Notes

  1. The update initially landed in the Gutenberg repository through PR-80395 but was reverted due to some unanticipated Actions workflow failures in older numbered branches of wordpress-develop. These were addressed in #66040, and the changes were merged again in gutenberg through PR-82370. In wordpress-develop, the upgrade landed in r63539/#65451.

Preparing for this update took a considerable amount of time and effort. Thank you to everyone involved for helping to make WordPress better and easier to maintain. There are awesome things ahead.

Questions or problems after updating? Comment here or ask in #core-editor.

Props to @aduth, @desrosj, @jsnajdr, @jonsurrell, @mciampini, @tyxla, @mamaduka for driving and reviewing this work, @aduth and @desrosj for reviewing this post, and to the WordPress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/ Systems team for preparing the build servers for the new version of Node.js.

#build-test-tools, #gutenberg, #node-js, #npm

What’s new in Gutenberg 23.9? (2 September)

“What’s new in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/…” posts (labeled with the #gutenberg-new tag) are posted following every Gutenberg release on a biweekly basis, showcasing new features included in each release. As a reminder, here’s an overview of different ways to keep up with Gutenberg and the Editor.

What’s new in
Gutenberg 23.9?

Gutenberg 23.9 has been released and is available for download!

This version of Gutenberg brings some big quality-of-life editing improvements around 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. insertion and custom styling.

Stop searching for the inserter

Finding the inserter was challenging on some block selections. Now, you can insert from the block toolbar. Easily add a new block to a group or another image to your gallery without having to change selection or scroll to find the inserter. Be on the lookout for more improvements to the block inserter in upcoming releases.

Easily find custom style overrides

Global Styles now makes it easy to see which blocks have custom overrides applied to them. Rather than drilling through each block to find which ones have custom styles, a dot indicator is on each block with a custom style. If you want to see all of the customized blocks together, there’s an option to 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. only by blocks with custom styles.

Other Notable Highlights

  • Axial block gap for the group block. Flex and grid layouts can now have independent vertical and horizontal block gap spacing so you can dial in your design. (81476)
  • Style <label> elements from theme.json (81160)
  • Global Styles for more elements: Citations, Inputs, and Selects were all available in theme.json, but now you can use Global Styles to easily customize them. (80852)
  • Add custom Duotone colors to Global Styles. theme.json could provide duotone palettes, but you couldn’t add custom ones via Global Styles. Now, if you don’t like the theme’s provided duotones, add your own via the new Duotone tab in the Global Styles Colors section. (81605)

Changelog

Enhancements

Components

  • Adminadmin (and super admin) UIUI User interface: Add Navigation component and Page navigation slot. (79746)
  • Align legacy form control focus rings with WPDS. (80417)
  • Base Styles: Align input-control mixin to design system. (81357)
  • Base styles: Streamline focus ring override. (81242)
  • Calendar: Support custom root roles. (81443)
  • CollapsibleCard: Support multiple headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. descriptions. (81227)
  • DataViews: Pass the WordPress localeLocale A locale is a combination of language and regional dialect. Usually locales correspond to countries, as is the case with Portuguese (Portugal) and Portuguese (Brazil). Other examples of locales include Canadian English and U.S. English. to the date/datetime calendar controls. (81592)
  • Global Styles: Allow editing duotone palettes. (81605)
  • Menu: Add UI component. (79560)
  • RadioControl: Allow individual options to be disabled. (82026)
  • SearchableChipSelect: Add grouped items support. (80989)
  • SearchableChipSelectControl: Add form control to @wordpress/ui. (80980)
  • Theme: Add color warning diagnostics workbench. (81817)
  • UI: Accept locale codes in Calendar components. (81814)
  • UI: Add Spinner component. (81358)
  • UI: Add TextareaControl component. (81359)
  • UI: Add tooltips to Calendar and RangeCalendar navigation buttons. (81983)
  • UI: Align Calendar styling with WPDS tokens. (81438)
  • UI: Collapse item-popup item sizing to default and small. (81354)
  • UI: Expose keyboard shortcut presentation utilities. (81826)
  • UI: Set Calendar text direction automatically. (81982)
  • UI: Use the default neutral border for Cards (81746)

Block Library

  • Add transform to Row for Columns block. (81802)
  • Enable axial gap for Group and restrict to flex and grid layouts. (81476)
  • Global Styles: Register as label element. (81160)
  • List: Add Align Support. (68002)
  • More block: Clarify description about 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. vs full content. (80619)
  • Playlist Track: Show upload spinner inline. (81445)
  • Playlist: Add bulk track metadata editing. (81441)
  • Query No Results: Add Border & Spacing Support. (64601)
  • Tabs: Make inactive panel content findable in page. (81743)

Post Editor

  • Command Palette: Add View post command. (66720)
  • Command Palette: Allow commands to override the categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. icon. (81787)
  • Editor: Defer hierarchical term filtering and soften announcements. (81422)
  • Editor: Migrate hierarchical term selector to @wordpress/ui. (81848)
  • Editor: Refactor ‘ErrorBoundary’ to use the new recommended components. (81638)
  • Editor: Simplify List View 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. shortcut handling. (81693)
  • Editor: Surface debugging details in the ErrorBoundary. (81642)
  • Editor: Use PluginSidebar in GlobalStylesSidebar. (81570)
  • Pre-publish panel: Remove the headings that repeat the panel title. (81806)

Block Editor

  • Add an inserter to the parent selector. (81532)
  • Global Styles: Expose additional elements in Typography and Colors. (80852)
  • Patterns explorer: Refactor the category sidebar to use Tabs. (81807)
  • Quick Inserter: Standardize the design of the Browse all button. (81827)
  • Writing flow: Select next block on Enter key. (63484)
  • Inbetween Inserter: Use average width of adjacent blocks for inserter size. (68074)

Dashboard

  • Dashboard Widgets: Let the host decide which component renders an action link. (81740)
  • Dashboard Widgets: Promote high-relevance actions into a chrome footer. (81556)
  • Dashboard Widgets: Resolve widgetWidget A WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user. types without a metadata module. (81738)

Fields

  • Export the package stylesheet. (81769)

DataViews

  • DataViews: Add an aspect ratio toggle for grid layouts. (81604)

Collaboration

  • Add __unstable_wp_sync_storage filter for pluggable storage backends. (81697)

Site Editor

  • Update template section description. (81613)

Global Styles

  • Filter and indicate blocks that have custom styles. (81373)

Font Library

  • Add skeleton loader for the font preview images. (81047)

Bug Fixes

Components

  • InputControl: Hide the value-like placeholder Safari renders in empty date and time inputs in ui and components packages. (81991)
  • Admin UI: Fix the primary color of the Fresh admin color scheme. (81618)
  • BoxControl: Update the opposite side when ALT is held on the left or right input. (81530)
  • Button: Fix alignment in loading spinner for rtl screens. (81901)
  • DataForm: Fix the datetime control sending two updates per calendar interaction. (81440)
  • DataForm: Make the panel layout edit button the real field trigger. (80689)
  • DataViews: Fix date and datetime controls selecting the adjacent day. (81498)
  • DataViews: Fix invisible sticky Actions column divider. (82055)
  • DataViews: Sync the displayed calendar month with external value changes. (81635)
  • Duotone Picker: Stop the duotone bar offering to move its control points. (81850)
  • Fix Storybook accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) issues in stories. (81777)
  • Improve text detection for button icon-with-text. (81521)
  • InputControl: Vertically center date and time input values in Safari. (81361)
  • Menu: Close non-modal menus 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. interaction. (81952)
  • Modal: Stop Escape key propagation on dismiss. (81785)
  • PaletteEdit: Expose palette swatches as command buttons. (82023)
  • Storybook: Handle production module load failures. (81867)
  • Theme: Improve color ramp contrast safeguards. (81185)
  • UI: Fix accessibility issues in form primitives and their stories. (81853)

Block Library

  • Accordion Heading: Route 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. spacing to the toggle button. (81976)
  • Dynamic Gallery block: Skip transforms that expect inner blocks, e.g. Image and Grid transforms. (82009)
  • Enable blockGap spacing supports in Query loopLoop The Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. https://codex.wordpress.org/The_Loop block. (79689)
  • Fix MediaPlaceholder drag eligibility. (81431)
  • Fix playlist track toolbar insertion. (81639)
  • Fix: Accordion: Anchored hash inside the accordion throws the malformed URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org console error. (81780)
  • Fix: Skip empty block markup in navigation to prevent split UL elements. (78793)
  • Fix: Term Description block skips display filters inside Terms Query. (81290)
  • Icon: Fix margin being applied twice in the editor. (81292)
  • Inner Blocks: Fix 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. that caused alignment controls to show in Image blocks within a Gallery. (81606)
  • Pattern: Disable visibility support. (81866)
  • Playlist Track: Improve track upload error flows. (81878)
  • Post Template: Fix mover arrows and labels for blocks inside the grid view. (81120)
  • Preserve layout and style attributes on Column transform. (81855)
  • Rename the media editor toolbar button to ‘Edit image’. (81705)

Post Editor

  • Add context to change “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. code diff”. (81820)
  • Editor: Correctly mark ToolsMoreMenuGroup as a private SlotFill. (81503)
  • Editor: Fix start page/template modal footer overflowing the modal width. (82021)
  • Editor: Register the editor keyboard shortcuts from the provider. (81580)
  • Fix: Post Editor: 403 on /wp/v2/settings at boot for users without manage_options cap. (81813)
  • Fix: Post Editor: Canvas animates from the left when switching mobile/tablet preview to desktop. (81484)
  • List View: Make focus on mount opt in. (81659)
  • Notes: Keep the note actions menu in view for long display names. (81414)
  • Notes: Stop forcing capitalization of user names. (81788)

Block Editor

  • Block Editor: Don’t close inserter panel when inline quick inserter opens. (76241)
  • Border Panel: Fix incorrect panel label. (78830)
  • Dimensions: Fix aspect ratio and scale controls not reflecting external updates. (80747)
  • Fix parent inserter toolbar button alignment when text labels is enabled. (81608)
  • Fix viewport state values set by grid resizer. (81601)
  • Fix: Delete key on empty heading transforms following paragraph into heading. (78779)
  • Global Styles: Keep storing shadow presets as CSSCSS Cascading Style Sheets. variables when custom presets exist. (81346)
  • Hide layout panel when no controls are available. (81968)
  • RichText: Use the current record when handling Enter. (81696)

Global Styles

  • Close the revisions screen on the first back click. (81897)
  • Color Palette panel: Remove empty whitespace when there are no theme colors. (81894)
  • Fix: Responsive styles: When enabled and a font-size is set, the corresponding CSS variable remains undefined. (81854)
  • Group shadow editor rows as items. (81871)

URL

  • Clamp the truncated file name slice in filterURLForDisplay. (81529)
  • Fix: getQueryArgs discards everything after the second = in a query argument value. (81066)
  • Fix: URL: normalizePath drops the rest of the query after a second “?”. (81612)
  • Stop normalizePath throwing on a malformed percent sequence. (81086)

Data Layer

  • CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Data: Stop storing NaN pagination totals for unpaginated endpoints. (82059)
  • Core Data: Validate the parsed-blocks cache against registered block types. (81809)

Env

  • Fall back to cached docker images when the registry is unreachable. (81631)
  • Update git to latest commit when --update passed. (81447)

Boot

  • Restore centered snackbar notices. (81995)

Element

  • Serialize memo-wrapped components instead of an empty string. (81986)

Collaboration

  • RTC: Disable collaboration for post types without custom fields. (81946)
  • RTC: Add fallback identities when user profiles are unavailable. (81408)
  • RTC: Fix hidden cursor in Details block. (81322)

wp-build

  • Build Package: Use Core’s boot module when a 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. has none. (81761)

Font Library

  • Fix the preview weight for variable fonts. (81748)

Media

  • Fix clipped focus outlines in the media editor Details sidebar. (81703)

Site Editor

  • Use inverted ThemeProvider seed for portaled UI. (81653)

DOM

  • Treat a caret at a soft line wrap as an ambiguous position in Firefox. (81003)

Media Utils

  • Prevent white screen crash during undo operations when Media Modal is open. (79898)

Parsing

  • Fix: Line Break Tags Added to Scripts and Styles. (77542)

Paste

  • Fix: Stop stripping spaces inside inline HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. elements on paste. (76696)

Accessibility

Post Editor

  • Editor: Announce publish date changes to screen readers. (81629)
  • Make Back button grid column flexible. (81701)

Block Editor

  • Block Styles: Refactor the variation UI to use ui/Button. (81833)

Block Library

  • Playlist: Add aria-label to prevent placeholder as label. (81654)
  • Playlist: Update playlist track placeholder to match aria label. (81762)

Media

  • Media editor: Keep initial modal focus on the dialog frame. (81541)

Performance

Post Editor

  • Editor: Speed up the hierarchical term selector for large taxonomies. (81376)
  • Editor: Stop :has() selectors recalculating the whole document on every block selection. (81471)

Global Styles

  • Try caching gutenberg_get_global_styles. (81889)

Components

  • Theme: Avoid root-level relational selectors. (81457)

Experiments

Site Editor

  • Boot: Contain a surface failure to that surface. (81622)
  • Boot: Do not offer to edit a trashed entity. (81632)
  • Boot: Let the editor canvas navigate between entity records. (81590)
  • Boot: Mount the registered plugins. (81754)
  • Boot: Preview the site where the canvas has nothing to open. (81749)
  • Boot: Sync the editor’s device preview with the URL. (81617)
  • Boot: Translate the canvas click-to-edit label. (81620)
  • Boot: Warn before leaving with unsaved changes. (81625)
  • Edit Site Init: Seed the editor preferences the editor expects. (81628)
  • ExtensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. Site Editor: Add a theme preview page with global styles editing. (81954)
  • Extensible Site Editor: Add the Identity route. (81576)
  • Extensible Site Editor: Preview the site on Home for classic themes. (81578)
  • Extensible Site Editor: Show only the style book on Styles for classic themes. (81579)
  • Extensible Site Editor: Gate theme screens on theme support. (81581)
  • Lazy Editor: Keep the theme’s editor styles on the canvas. (81747)
  • Lazy Editor: Render the editor preferences modal. (81630)
  • Pattern List: Import a pattern from JSON. (81919)
  • Site editor v2: Fix block error with navigation-edit route. (82051)
  • Site editor v2: Fix template part list pagination and sorting. (82054)

Media

  • Media Editor Route: Override media edit links to point to the new experimental media editor. (81559)
  • Media Editor Route: Make the route look like it’s part of the media menu in the sidebar. (81565)
  • Media Editor Route: Try adding undo/redo and save/cancel actions to the header. (81563)

Post Editor

  • Editor: Offer the theme export from both site editors. (81992)
  • Editor: Set the width an entity opens at from the editor provider. (81750)

Dashboard

  • Quick draft: Replace Button+Link with LinkButton. (82031)
  • Dashboard: Add a Site Health detail page as the dashboard’s second route. (81729)

Documentation

  • Add Gutenberg version details for WordPress 7.1. (81600)
  • Adds JSdoc for audio block’s edit.js. (68865)
  • Adds JSdoc for avatar block’s edit.js. (68867)
  • Adds JSdoc for column and columns block’s edit.js. (68873)
  • Adds README for inspector-controls-tabs component. (69072)
  • BlockEditVisuallyButton: Update Developer Documentation. (68987)
  • Components: Update the combobox changes to be part of breaking change. (81923)
  • Design System: Add portable agent skills. (80597)
  • Docs: Add Background image control Readme. (69409)
  • Docs: Add Block Editing Mode Readme. (69411)
  • Docs: Fix broken link to the Document-Isolation-Policy explainer. (81790)
  • Docs: Fix broken link to the getEntityRecords selector reference. (81791)
  • Docs: Fix broken links to the Block 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. reference guides. (81571)
  • Docs: Fix broken skip ahead anchor on the custom block editor guide. (81835)
  • Docs: Fix dead link in the dynamic blocks tutorial. (81399)
  • Docs: Narrow the tsconfig split guidance to the standard layout. (81828)
  • Docs: Require site editor features to land in the extensible site editor too. (81752)
  • Fix Broken Links in Package file. (81700)
  • Fix broken documentation link in accessibility.md file. (81832)
  • PHPCSPHP Code Sniffer PHP Code Sniffer, a popular tool for analyzing code quality. The WordPress Coding Standards rely on PHPCS.: Refactor parameter type hints and clean comments. (81898)
  • Schemas: Document what the theme.json schema checks. (81773)
  • Storybook: Add Story for InnerBlocks. (68651)
  • Storybook: Add Story for BlockPopover. (68681)
  • Storybook: Add Story for URLPopup component. (68449)
  • Storybook: Fix default background color for Example Application theme story. (81765)
  • Storybook: Upgrade to 10.5. (80692)
  • UI: Add initial agents guidance mapping to contributing guidelines. (81400)
  • UI: Mark Autocomplete, Field, and Fieldset as recommended. (80636)
  • UI: Mark Input-related components as recommended. (81658)
  • UI: Move controlled prop guidance to contributing documentation. (82044)
  • Update coding guidelines to recommend TypeScript. (81763)
  • Update save & submit documentation. (81077)
  • Update broken links in document files. (81961)

Code Quality

  • Docs: Align param 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.) columns in test/ docblocks. (81905)

Components

  • BorderControl, BorderBoxControl: Migrate styles to CSS Modules. (80437)
  • ComboboxControl: Narrow onChange callback type to string | null. (81568)
  • DataViews: Use Menu from @wordpress/ui. (81783)
  • DataViews: Vendor ValidatedComboboxControl. (81449)
  • DataViews: Vendor ValidatedFormTokenField. (81451)
  • DataViews: Vendor ValidatedToggleControl. (81492)
  • DataViews: Vendor ValidatedToggleGroupControl. (81450)
  • Fix DataViews list layout color token usage. (81074)
  • Migrate ComboboxControl to SCSS module. (80471)
  • Migrate DropdownContentWrapper to SCSS module. (81522)
  • Migrate GradientPicker, ColorPalette to SCSS module. (80473)
  • Migrate ProgressBar styles from Emotion to SCSS module. (80512)
  • Migrate ResizableBox to SCSS module. (81792)
  • Migrate Scrollable to SCSS module. (80694)
  • Migrate StyledLabel to SCSS module. (80001)
  • Migrate ZStack styles from Emotion to SCSS module. (80514)
  • Migrate BoxControl to SCSS module. (80715)
  • Migrate TextareaControl to SCSS module. (81353)
  • Storybook: Add missing @types/jest devDependency. (82017)
  • Storybook: Keep Vitest story scanning independent of the Vite root. (82020)
  • Theme: Rename ThemeProvider wrapper CSS class from root to wrapper. (81996)
  • Theme: Update Terrazzo packages to 2.7.1. (81978)
  • TypeScript: Bring the remaining route projects under the typecheck run. (81847)
  • UI: Add ControlWithError component. (81574)
  • UI: Add ValidatedInputControl component. (81627)
  • UI: Add ValidatedTextArea control. (81984)
  • UI: Update Base UI to 1.7.0. (81390)
  • Update Ariakit packages (0.4.35 => 0.4.37). (81080)
  • Update Terrazzo packages to 2.5.0. (81082)

Block Library

  • Block API: Address review feedback on block keyboard shortcuts. (81621)
  • Block API: Declare block keyboard shortcuts on variations and transforms. (81588)
  • Stop saving Table of Contents output. (80404)
  • Tabs: Number generated tab IDs from 1 and keep them sequential. (81781)
  • Playlist: Remove block toolbar sharing between parent and child blocks. (81432)
  • Update waveform player dependency 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.. (81454)

Post Editor

  • ActionItem: Move the more menu deduplication out of the Slot. (81507)
  • Block Editor: Never spotlight blocks in a preview. (81615)
  • Editor: Remove FlexItem usage from NoteCard. (81851)
  • Use WCInputControl alias for legacy InputControl imports. (81830)
  • Use WCTextareaControl alias for legacy TextareaControl imports. (81834)

Data Layer

  • Core Data: Allow keyless entities to be addressed without a record ID. (81857)
  • TypeScript: Drop redundant undefined casts for keyless entity record IDs. (82018)
  • Update is-plain-object to 5.1.0. (81926)

Block Editor

  • Add translator context to pseudo-state labels. (81770)
  • Remove leftover files. (81793)
  • refactor: Convert createColorHOC to functional component. (70408)

Dashboard

  • Dashboard widgets & Grid: Use kebab-case for CSS selectors. (82053)
  • Quick Draft widget: Drop a reference to a class that does not exist. (82064)

Media

  • Media Editor Route: Add missing dependency to media-editor route. (81845)

Fields

  • Migrate last remaining JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. file to TS. (81808)

Boot

  • Migrate styles to CSS Modules. (81756)

Layout

  • Layout block supports: Cast numeric grid attributes before use. (81560)

Private APIs

  • DataViews: Add a lint rule preventing private API imports. (81478)

Global Styles

  • Style: Update color to use CSS variable in global-styles-ui. (79053)

Tools

Build Tooling

  • Build Scripts: Force tsc –pretty so CI reports the project behind global diagnostics. (81937)
  • Build Tools: Stop watcher process trees on shutdown. (81504)
  • Build: Emit TypeScript declarations with –noCheck. (81839)
  • Build: Fix ESM declaration resolution. (82022)
  • CI: Skip the package CHANGELOG check when only the CHANGELOG changed. (82069)
  • Components, DataViews, Editor, UI: Split tsconfigs into build and dev projects. (81515)
  • Dependency updates Aug 2026 (2). (81906)
  • Dependency updates Aug 2026. (81870)
  • Lint: Prevent private API imports in all bundled packages. (82015)
  • Packages: Split story package tsconfigs into build and dev projects. (81516)
  • Packages: Split tsconfigs for utility and mid-size packages. (81514)
  • Release: Improve changelog categorization. (81475)
  • Replace the Storybook test runner with the Vitest integration. (81918)
  • Storybook: Fix production build warnings. (81758)
  • Storybook: Upgrade Vite to 8. (81494)
  • Styles Route: Reference the api-fetch and html-entities projects. (81989)
  • Test: Add Vitest ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org, Emotion compilation, console, and snapshot parity. (81039)
  • TypeScript: Add typecheck script and split root tsconfig into build and dev solutions. (81499)
  • TypeScript: Put route projects under the typecheck run. (81829)
  • Validation: Update dependency-audit to 0.4.6 and ignore the dataviews ./wp bundle. (81928)

Testing

  • Automated Testing: Change Storybook default 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) test to error on failure. (81597)
  • Block Library: Fix failing test in playlist block. (81950)
  • E2E: Replace flaky router styles screenshot assertions. (81739)
  • List View: Fix flaky global shortcut test and re-enable it. (81690)
  • Perf: Report the first block selection as its own metric. (81616)
  • Test: Port shared Vitest test environment. (81038)
  • Tests: Make PHPUnit tests independent of test configuration flags and theme root. (79159)
  • Vitest: Resolve @flakiness/vitest reporter to an absolute path. (81582)
  • end-to-end Tests: Use str_starts_with()/str_contains() in hide-user-rest-routes plugin. (82030)

Data Layer

  • Update 23.8 release changes on 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.. (81485)

ESLint plugin

  • Remove fixable on i18n-no-flanking-whitespace. (70279)

First-time contributors

The following PRs were merged by first-time contributors:

  • @benazeer-ben: Add command: View post. (66720)
  • @dhruvikpatel18: Storybook: Add Story for URLPopup component. (68449)
  • @josephfusco: Add __unstable_wp_sync_storage filter for pluggable storage backends. (81697)
  • @konnen916: URL: Stop normalizePath throwing on a malformed percent sequence. (81086)
  • @sanketio: Accordion Heading: Route theme.json spacing to the toggle button. (81976)
  • @vedant-ere: Fix: Skip empty block markup in navigation to prevent split UL elements. (78793)

Contributors

The following contributors merged PRs in this release:

@aaronrobertshaw @aduth @afercia @amitraj2203 @andrewserong @annezazu @arthur791004 @benazeer-ben @ciampo @coderGtm @dhruvikpatel18 @dilipom13 @ellatrix @getdave @giteshsarvaiya @gregsullivan @hbhalodia @i-am-chitti @im3dabasia @Infinite-Null @ingeniumed @jasmussen @jeremyfelt @jeryj @jorgefilipecosta @josephfusco @jsnajdr @juanfra @Kgupta62 @konnen916 @MaggieCabrera @Mamaduka @manzoorwanijk @maxschmeling @mirka @mukeshpanchal27 @Mustafabharmal @ntsekouras @oandregal @ramonjd @retrofox @sanketio @sarthaknagoshe2002 @scruffian @shail-mehta @shimotmk @simison @sirreal @Soean @swissspidy @t-hamano @tellthemachines @timse201 @USERSATOSHI @vedant-ere @youknowriad

Props

Thanks to @mciampini and @aduth for helping with the npm package distribution and stable release, @manzoorwanijk, @onemaggie and @softglaze for 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). support and testing, @coreyhall93 for the video highlights, and @tyxla, @ramonopoly, and @ellatrix for reviewing this post.

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

What’s new in Gutenberg 23.8? (19 August)

“What’s new in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/…” posts (labeled with the #gutenberg-new tag) are posted following every Gutenberg release on a biweekly basis, showcasing new features included in each release. As a reminder, here’s an overview of different ways to keep up with Gutenberg and the Editor.

What’s new in
Gutenberg 23.8?

Gutenberg 23.8 has been released and is available for download!

Version 23.8 continues to build on recent releases, adding shareable URLs and an in-editor code diff view to visual 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., email notifications for users mentioned in a note, major List View performance improvements on large posts, and a smoother writing flow that renders a real default 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. in place of the empty-canvas appender.

Visual revisions: Shareable URLs and a code diff view

A demonstration of the URL in the revision review to demonstrate the direct link to revision feature.

Visual revisions keep getting more capable. You can now link directly to a specific revision: opening a URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org with a revision parameter takes you straight to that revision in the editor, and the address bar stays up to date as you move through history so sharing the exact change you’re discussing is as simple as copying the URL. Toggle the code editor to see the diff in code. (79934, 80314)

Email notifications for mentions in notes

Collaboration in the editor took another step forward: when someone @-mentions you in a note, you now receive an email letting you know, written in your own language and linking to the editor where the conversation is happening. This completes the mentions feature whose autocomplete UIUI User interface landed in a previous release. (79606)

Other notable highlights

The List View received a series of performance improvements that add up to a dramatically better experience on long posts. Opening it is faster thanks to a leaner rendering path that cuts most of its DOM nodes and skips a second render pass, expanding and collapsing sections triggers far fewer re-renders, and a freeze when selecting all blocks on large posts is gone. On a post with 1,000 paragraphs, “Select all” dropped from 16.8 seconds to 0.4 seconds. (81210, 80953, 80929, and others)

The empty canvas now renders a real default block instead of a lookalike appender, so what you see before typing is exactly what you get (81231). Along the same lines, a new block added next to an existing one now inherits its neighbor’s styling consistently, no matter how it was inserted (81250).

The experimental Playlist block became easier to work with: Audio blocks can transform into a Playlist and back, and you can select multiple audio files from the Media Library at once (80926). The Tabs block now shows each tab’s actual title in the Document Overview instead of a generic “Tab” label (81427) and supports Home and End keys for keyboard navigation (80912).

For developers, blocks can now declare their inner blocks template directly in registerBlockType() settings, applied synchronously at insertion (80027); @wordpress/element is importable in 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 (80053); DataViews gained a time field type (80830) and configurable preview aspect ratios (79329); and @wordpress/ui now offers public Calendar and RangeCalendar components (81337).

Changelog

Features

Collaboration

  • Notes: Email users mentioned in a note. (79606)

Enhancements

  • Element: Make the package importable in React 19. (80053)
  • Interface: Let CSSCSS Cascading Style Sheets. own the ComplementaryArea width and use AnimatePresence custom for exit. (81363)
  • 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. Dashboard: Preserve widget chrome flex layout. (80570)
  • Normalize block gap values in layout. (81460)
  • Visual revisions: Add shareable urls. (79934)

Block Library

  • Block editor: Render a real default block in place of the default appender. (81231)
  • Block editor: Unify what a new sibling block inherits. (81250)
  • Blocks: Support static block templates in block type settings. (80027)
  • Feature: Tabs block: Consider using the tab title in the Document Overview instead of a generic “Tab” label. (81427)
  • Page List: Rename the Edit action to Detach and confirm it in a dialog. (80847)
  • Pass Playlist controls to track blocks. (80368)
  • Quote: Ensure paragraph placeholder appears after deleting nested blocks. (77151)
  • Table of Contents: Replace “Convert to static list” with confirmed “Detach” action. (80844)
  • Post Navigation Link: Use the ‘next’ icon. (81384)
  • Writing flow: Stop the caret on containers that do not merge with the text flow. (81456)
  • Playlist: Add track icon. (80959)

Components

  • Add allowForms prop to SandBox component. (76471)
  • DataViews: Add time field type and control. (80830)
  • DataViews: Make grid and table item preview aspect ratio configurable. (79329)
  • IconButton: Improve keyboard shortcut 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). (80402)
  • Icons: Move the inline image icon into the library. (81271)
  • SearchableChipSelect: Add form primitive to wordpress/ui. (80779)
  • UI: Add Combobox.InputGroup primitive. (80869)
  • UI: Add Calendar and RangeCalendar, moved from components private APIs. (81337)
  • UI: Derive Base UI direction from WordPress i18ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.. (80399)
  • UI: Use focus styles from base-styles. (80635)

Post Editor

  • Add opt-out for block style state controls. (80956)
  • Editor: Clarify autosave failure notice. (76470)
  • Editor: Migrate settings 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. to Tabs from wordpress/ui. (81054)
  • Notes: Display shortcut for form action buttons. (81064)
  • Visual revisions: Add a code diff view inside the editor. (80314)

Dashboard

  • Dashboard Widgets: Add icon and relevance to the widget action envelope. (81275)
  • Dashboard Widgets: Split action icons into wire and resolved forms. (81381)
  • Widget Dashboard: Host-tunable tile spacing via public custom properties. (81352)
  • Widgets: Carry a declarative icon through the widget pipeline. (80969)

Widgets Editor

  • Add ThemeProvider for adminadmin (and super admin) color schemes. (81173)
  • CustomizerCustomizer Tool built into WordPress core that hooks into most modern themes. You can use it to preview and modify many of your site’s appearance settings. widgets: Add ThemeProvider for admin color schemes. (81174)

Global Styles

  • Migrate font size presets to the shared preset layer. (79811)
  • Migrate shadows presets to use the preset management layer. (79812)

Bug Fixes

  • 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. coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. fixes for finalize route. (81465)
  • Boot: Adjust specificity of the image reset styles so components can size their own images. (80845)
  • Fix end-to-end tests that break when shard rebalancing changes their neighbors. (81117)
  • Fix: Add missing target to the webpack dev server proxy configuration. (81141)
  • Fix: Flaky autosave shareable URL revisions end-to-end test. (81455)
  • Fix: Flaky list view paste block styles end-to-end test. (81229)
  • Fix: Flaky revisions pagination end-to-end cross-page diff assertion. (81119)
  • Interface: Increase footer breadcrumb height to prevent focus ring clipping. (81145)
  • Views: Honor all developer-defined view configuration overrides. (80832)
  • Interface: Stop the secondary sidebar animating into place on page load. (81362)
  • Site editor: Fix sidebar item hover color. (81317)
  • 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. schema: Allow responsive states on block style variations. (81309)
  • Dashboard Widgets: Remove the Hello Dolly download action. (81272)
  • Decode HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. entities in Identity fields. (81269)
  • Make downloadable block item labels translatable. (81237)
  • Edit Widgets: Fix headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. toolbar button focus ring. (81176)
  • Fix template modified and date return value for file templates. (80733)

Block Editor

  • Background: Fix the legacy gradient UI where a gradient cannot be selected. (81056)
  • Block Inspector: Disable the ‘Edit original’ button when the entity ID is missing. (81288)
  • Copy: Preserve the block when its entire text is selected. (80994)
  • Disclose the nested block count of a multi selection. (80745)
  • Fix Escape from the block toolbar and stop redundant last focus dispatches. (81319)
  • Fix empty list block with anchor persisting after backspace deletion. (77000)
  • Fix overflowing block UI being covered after a block is moved. (80824)
  • Link Control: Restore the preview title underline. (81083)
  • Make the Group action wrap blocks with a group transform. (80891)
  • PanelColorSettings: Restore the missing space below the panel header. (81155)
  • Quote & List v2: Deleting empty list item should delete list block. (42503)
  • Return false from isBlockSelected when there is no client ID. (81212)
  • Style states: Fix state deselection when selecting the already selected block. (81277)
  • URLInput: Skip search requests while an IME composition is in progress. (80602)
  • Writing flow: Forward delete an empty paragraph without breaking apart the next block. (80813)

Block Library

  • Clarify the GIF Video variation description. (81181)
  • Fix: Tabs block: Start with empty tab labels with placeholders. (81009, 81429)
  • Media: Reword the HEIC upload error and keep it up until dismissed. (81130)
  • Navigation Overlay Close: Inherit typography and color from the overlay. (80751)
  • Playlist: Improve audio conversion and track selection. (80926)
  • Playlist: Normalize Waveform Player configuration handling. (81342)
  • Post Author Biography: Fix horizontal overflow with long unbroken text. (81018)
  • Remove the editableRoot opt-in from the paragraph block. (81184)
  • Video: Hide settings for the GIF variation. (81142)
  • Fix: Add optional chaining for empty reusable block (#81165). (81177)

Components

  • Button: Suppress UA focus ring when focused and pressed. (81113)
  • DataForm: Fix hidden fields validation. (81377)
  • DataViews: Fix array field type validation for empty values. (81378)
  • DataViews: Fix the between date 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. losing a manually typed date on blur. (81150)
  • DataViews: Pass only eligible items to a bulk action callback. (81198)
  • Scope breakpoint media queries to screen so printing does not look like a resize. (81367)
  • Theme: Omit color properties when neither provided nor inherited. (80600)
  • Admin UI: Reset the wp-admin li margin that misaligns Breadcrumbs. (81134)

Post Editor

  • Add ThemeProvider for admin color schemes. (81112)
  • DataViews: Move the rich text control into the editor package. (81430)
  • Editor: Fix document tools button focus ring. (81115)
  • Editor: Keep the canvas height stable while resizing the canvas. (81163)
  • Ensure device preview is always accurate when window is zoomed in. (81193)
  • Notes: Fix text wrapping for long usernames in collaboration sidebar. (81406)

Global Styles

  • Button: Turn on the width setting by default in theme.json. (81196)
  • Kebab-case preset slugs when converting references to custom properties. (80583)
  • Render element styles set only inside a breakpoint. (81265)
  • Report border, shadow, outline, filter and dimension changes. (81407)
  • theme.json schema: Fix block pseudo-classes and custom states. (81209)
  • theme.json schema: Responsive states belong to blocks. (81253)

Data Layer

  • Core Data: saveDirtyEntities: Improve messaging of server errors. (81151)
  • RTC: Fix mixed block selection awareness. (79836)
  • Footnotes: Guard against invalidinvalid A resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid. post metaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. values. (81201)
  • RTC: Remove excess autosave notices (when not useful). (80539)
  • Order site identity changes predictably. (81283)

Media

  • Cover client-side big image scaling and orphaned files. (81061)
  • Media Attached to: Fix issue with the popover unexpectedly flipping, tweak wording. (81206)
  • Upload Media: Fail the item when the /finalize request fails. (80725)

Style States

  • Fix phantom pseudo element style output. (81291)
  • Render viewport state element styles in the editor. (81307)

Collaboration

  • Notes: Fix the mention notification email composition. (81187)
  • RTC: Disable custom autosave controller when RTC is disabled. (80769)

Accessibility

  • Fix: New route-based admin pages are empty when no JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors.. (80628)
  • Interface: Remove incorrect aria-expanded from pin-to-toolbar button. (79874)
  • wp-build: Render the no-JS fallback in the generated page templates. (81365)

Block Editor

  • Block Mover: Add the keyboard shortcut to the buttons’ spoken description. (81380)

Components

  • Menu: Restore Modal focus return when menu items close. (81164)

Block Library

  • Tabs: Support Home and End keys for keyboard navigation. (80912)

Performance

List View

  • Fix Select all freezing on large posts. (81210)
  • List View: Collapse off-window placeholder rows into a single spacer row. (80953)
  • List View: Narrow the dependants of the memoized List View tree. (81129)
  • List View: Only subscribe to the block subtree for rows that can show images. (81076)
  • List View: Reduce per-row store subscriptions. (81136)
  • List View: Speed up opening by removing a forced style recalculation. (80929)
  • List View: Speed up opening by removing a second render pass. (80935)
  • List View: Pass only minimal required data to sub-tree branches. (81111)
  • List View: Split the context and drop dead props to cut re-renders on expand and collapse. (81159)

Documentation

  • Agents: Add a defensive data design skill and route to the copy guide. (81131)
  • Block JSON schema & PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher-only blocks: Add autoRegister support. (80173)
  • Block Library: Document 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. releases. (81295)
  • Changed Build Process Link and remove unused tags. (81360)
  • CheckboxControl: Add “With Visual” Storybook story. (80849)
  • Components: Opt-in ConfirmDialog for auto-documentation. (80866)
  • Components: Use p elements for callout alerts in README documentation. (81234)
  • Docs: Add Block Actions Readme. (69408)
  • Docs: Add Block List Readme. (69432)
  • Docs: Add Block Lock Readme. (69434)
  • Docs: Add error message guidance. (81143)
  • Docs: Explain how the theme.json schema fixtures work. (81263)
  • Docs: Fix broken Figma links on the design resources page. (81166)
  • Docs: Fix broken link to the Node.js debugging guide. (81398)
  • Docs: Fix broken links to the removed 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 build setup guide. (81232)
  • Docs: Fix typo in block file structure guide. (81348)
  • Docs: Remove breakpoint-only element style example from global styles guide. (81308)
  • Docs: Remove dependency group import guidance. (81245)
  • Docs: Use gutenberg instead of Gutenberg in package name. (81051)
  • Document editEntityRecord’s options.isCached param. (81318)
  • Fix typos in code comments and JSDoc. (81045)
  • Navigation: Complete the DocBlocks for the responsive container and overlay style helpers. (80622)
  • Storybook: Enable design system theme tool globally. (81116)
  • ToggleControl: Add “With Visual” Storybook story. (80803)
  • View Config: Add reference documentation. (81149)
  • Widget Primitives: Document actions as verbs, not links. (80974)

Code Quality

  • Block Supports: Guard against non-string attribute values to avoid fatal errors. (80501)
  • Blocks: Declare the @types/react-is devDependency. (81203)
  • Blocks: Update hpq to 1.4.0 and drop the ts-expect-error suppressions. (81199)
  • CI: Resolve Playwright through the workspace that declares it. (81137)
  • Declare missing prettier and stylelint workspace dependencies. (81065)
  • ESLint: Define dependency import rules. (81246)
  • ESLint: Drop @eslint/compat fixup for jest-dom and testing-library. (80842)
  • Ignore node_modules in schema integration test globs. (81013)
  • Jest Preset Default: Support self-referencing via exports. (80837)
  • Report Flaky Tests: Declare @types/node dependency. (80838)
  • Storybook: Move smoke-test deps into the storybook workspace. (81017)
  • Storybook: Use SelectControl in Motion tokens story. (80790)
  • Tools: Make agent setup a workspace. (81418)
  • Tools: Use native agent skill discovery. (80811)
  • Unit Tests: Reorganise the jest configuration file. (80940)
  • View config: Lowercase dynamic filter names. (81068)
  • Views: Add React to the package’s dev dependencies. (81139)
  • DataViews: Use the public @wordpress/ui Badge instead of the private one. (81236)
  • Remove unused duplicate font family preview utilities. (81194)
  • Media Editor: Render sidebar tabs via ComplementaryArea’s render prop. (81133)
  • Fix ESLint errors for ‘navigateRegionsProps’ spread. (81052)
  • Replace deprecated useResizeObserver for useScaleCanvas. (67508)

Components

  • DataViews: Remove kebabCase private import by inlining it. (81284)
  • DataViews: Vendor validated form controls:
    • ValidatedCheckboxControl (81435)
    • ValidatedNumberControl (81433)
    • ValidatedRadioControl (81434)
    • ValidatedSelectControl (81391)
  • Deprecate Animate. (80931)
  • Deprecate Surface. (80943)
  • ESLint: Remove legacy import suppressions. (81338)
  • Keycodes: Make withIgnoreIMEEvents a public 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.. (81343)
  • Migrate ItemGroup to SCSS module. (80797)
  • Migrate Spinner styles from Emotion to SCSS module. (80511)
  • New kebab-case package: Extract utility and migrate private API calls. (81294)
  • Theme: Colocate 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. tests with implementations. (81247)
  • Types: Replace remaining @ts-expect-error suppressions with proper typing. (81200)
  • UI: Upgrade React DayPicker to version 10. (81439)
  • Update Ariakit packages. (80765)
  • Update Floating UI to 2.1.9. (80761)
  • Update react-day-picker to 9.14.0. (80792)
  • Remove ValidatedTextControl private API. (80680)

Block Editor

  • Bail out of hasSelectedInnerBlock when there is no clientId. (81315)
  • Convert useBlockVisibility hook to TypeScript. (80390)
  • Format Library: Remove unused CSS rule. (77831)
  • List View: Migrate label wrapper to UI Stack and drop Badge from the anchor. (81266)
  • Simplify InspectorControlsFill rendering logic. (81286)
  • Spacing Sizes Control: Make the control label translatable independently of the input aria label. (81240)
  • URLInput: Simplify keyboard handling and fix arrow keys with a text selection. (80780)

Block Library

  • Cover: Avoid passing null as the 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. size. (81444)
  • List View: Replace expand/collapse callbacks with reducer dispatch. (81138)
  • Query: Guard non-scalar queryId to avoid fatal in enhanced pagination. (80724)

Data Layer

  • Core Data: Add missing wordpress/base-styles dependency. (81012)
  • ESLint: Replace strict configuration with bulk suppressions. (81248)

Post Editor

  • Editor: Remove sidebar tabs focus sync effect. (81020)
  • Rename blockStatesEnabled setting to blockStatesEditingEnabled. (81058)

Tools

  • AGENTS: Update development tips section. (81224)
  • Revise CODEOWNERS for package ownership (removing nerrad). (81175)
  • ESLint: Ban @ts-ignore in favour of @ts-expect-error. (81148)

Testing

  • Automated Testing: Add Storybook component documentation regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5. testing. (80655)
  • CI: Add job timeouts to E2E, static checks, bundle size, and create block. (80801)
  • CI: Build once and reuse the build across end-to-end tests shards. (81031)
  • CI: Cache the system packages Playwright downloads for WebKit. (80846)
  • Fix: 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. end-to-end failures caused by the navigation spec leaving plain permalinks. (81238)
  • Flaky tests: Fix router navigate latest HTML. (80178)
  • Perf Tests: Merge selection event windows instead of summing durations. (81002)
  • Performance Tests: Ignore the locally generated artifacts directory. (81024)
  • Perf Tests: Avoid inflating interaction metrics with startTracing. (81264)
  • Remove content types experiment. (81340)
  • Remove the jest-puppeteer-axe package. (80775)
  • Storybook e2e: Add small, compact and icon examples to button matrix. (80793)
  • Test: Add Vitest migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. routing guardrails. (81036)
  • Test: Add private Vitest configuration and migrate a pilot test. (81037)
  • Tests: Replace page-level selectors with locators in end-to-end specs. (81053)
  • Upgrade Playwright to v1.62. (81001)
  • Balance Playwright shards by duration. (79479)

Build Tooling

  • Allow organization or repository variable to dictate the Actions runner. (81087)
  • Build: Wrap script bundles in an IIFE to contain ‘use strict’. (79792)
  • Components: Update polymorphism types to allow all attributes when specifying as. (80705)
  • Docs: Add VS Code setup guidance. (77913)
  • ESLint: Rename root eslint.config.cjs to eslint.config.mjs. (81468)
  • Ensure static checks can run for private mirrors. (80817)
  • Flaky tests: Report as a PR comment only, stop creating issues. (81218)
  • Markdownlint: Disable the MD033 (no-inline-html) rule project-wide. (81213)
  • Monitor all setup-related composite Actions. (81192)
  • Packages: Recover July 29 npm release metadata. (81303)
  • Scripts: Prevent a UTF-8 BOM in the middle of extracted CSS. (81383)

First-time contributors

The following PRs were merged by first-time contributors:

Contributors

The following contributors merged PRs in this release:

@adamsilverstein @adrianmoldovanwp @adithyanaik @aduth @ajlende @alecgeatches @amitraj2203 @andrewserong @aslushnikov @chihsuan @mciampini @desrosj @dhasilva @dhruvik18 @dognose24 @mehtadev @linewebdigital @ellatrix @getdave @giteshsarvaiya @hbhalodia @im3dabasia @ingeniumed @itzmekhokan @joen @jorgefilipecosta @juanfra @makdia @Mamaduka @manzoorwanijk @mcsf @mirka @nerrad @ntsekouras @oandregal @pranjal4804 @priethor @rishabhwp @ramonopoly @retrofox @scruffian @shailu25 @simison @SirLouen @SteveJonesDev @wildworks @talldan @isabel_brison @williamvianas @westonruter @yogeshbhutkar @youknowriad @yvett

Props

Special thanks to @joen for review and providing assets for this post. Thanks to @mamaduka, @jorgefilipecosta, @adamsilverstein, and @dhruvang21 for reviewing the post. Thanks to @bernhard-reiter, @mcsf, @aduth, @tyxla, @jsnajdr, and @wildworks for help throughout the release process.

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

What’s new in Gutenberg 23.7? (05 August)

“What’s new in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/…” posts (labeled with the #gutenberg-new tag) are posted following every Gutenberg release on a biweekly basis, showcasing new features included in each release. As a reminder, here’s an overview of different ways to keep up with Gutenberg and the Editor.

What’s New In
Gutenberg 23.7?

Gutenberg 23.7 has been released and is available for download!

Version 23.7 includes many improvements over features added with 23.6, with updates 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. Editor, the new Gallery block’s dynamic mode, user control to enable the Global Styles inheritance UIUI User interface, and a series of smaller visible editor layout fixes.

Various editor improvements

Much of the 23.7 cycle has been focused on smaller visual editor improvements. Floated blocks no longer overlap sticky blocks, the empty block appender now sits in the right place inside blocks that capture their own toolbars, and the Pullquote block finally honors a custom line height in the editor so it matches the front end. Fixed device preview heights are also restored for the mobile and tablet views.

Gallery block dynamic mode improvements

The new Gallery block dynamic mode that shipped in Gutenberg 23.6 had an ambiguous “Convert to images” toolbar button that didn’t describe what it actually did. That button has been renamed to “Detach”, and a modal appears to better explain to the user what happens when detaching images

Other Notable Highlights

  • Global Styles inheritance UI. This experimental feature is now opt-in, and is enabled from the Gutenberg Experiments settings page (#80815).
  • Math block: LaTeX errors stop interrupting you. Parse errors no longer fire on every keystroke — LaTeX input now uses ValidatedTextareaControl, so feedback is deferred until the field first loses focus and the per-keystroke screen reader announcement is gone (#80500).
  • Grouped options across the form primitives. Combobox, Select, and SelectControl gain Group and GroupLabel subcomponents, so grouped options compose consistently across the item-popup families (#80574).

Changelog

Enhancements

  • Base styles: Allow overriding focus ring color in outset-ring__focus. (80587)
  • 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. Dashboard: Measure the headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. fit and document the chrome. (80423)
  • Widget Primitives: Ship as a script module. (80149)

Components

  • Combobox, Select, SelectControl: Add Group and GroupLabel. (80574)
  • DataViews/Font Library: Give search fields a fixed width to stop layout shift. (80315)
  • DataViewsPicker: Add Shift+Click range selection to the picker-table, picker-grid, and picker-activity layouts. (80413)
  • Enhance sandbox component to accept sandbox prop. (69617)
  • Input: Hide native spin controls for type=”number”. (80646)
  • SearchControl: Render the suffix only if there’s one. (80356)
  • UI: Add Autocomplete.Row primitive. (80490)

Block Library

  • Add Table of Contents end-to-end user story coverage. (80199)
  • Math: Use ValidatedTextareaControl for LaTeX input. (80500)

Post Editor

  • Add a responsiveEditingEnabled editor setting to hide the Responsive styles option. (80814)

Font Library

  • Fix navigation page select font size to match DataViews. (80617)

Collaboration

  • RTC: Disable Quick Edit while a post is being edited. (80016)

Global Styles

  • Extract shared preset management from shadows and font sizes. (79810)

Block Editor

  • Reflect inherited Global Styles values in block inspector controls. (77894)

Bug Fixes

  • Block Editor: Fix floated blocks overlapping sticky blocks. (80749)
  • Update view configuration 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. versioning. (80319)
  • View config: Reject shape-mismatched merges, define empty-array semantics, strip nulls from appended members. (80571)
  • createInterpolateElement: Handle unmatched closing tags gracefully. (80618)

Block Library

  • Account for non-lowercase VIDEO 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.) in render_block_core_video(). (80537)
  • Cover/Accordion: Exit on Enter. (77301)
  • Dynamic Gallery: Rename toolbar button to Detach and add a modal explaining what will happen. (80727)
  • Fix: Pullquote custom line height in the editor. (80586)
  • Gallery: Make dynamic mode conversion a single undo level. (80665)
  • List Block: Preserve ordered type on indent. (75353)
  • Media Editor: Show a loading state while the cropped file loads. (80460)
  • Media: Remove the redundant __heicUploadSupport flag. (80452)
  • Navigation: Fix missing ‘Add block’ option in Link UI when inside template parts. (78427)
  • Playlist: Shorten track toolbar button label. (80759)
  • Query LoopLoop The Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. https://codex.wordpress.org/The_Loop: Add translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. context to the ‘Offset’ setting label. (80582)
  • Social Link: Fix stray closing tag in Tumblr icon markup. (80257)

Block Editor

  • Background image control: Remove duplicated focus ring. (80671)
  • Block Tools: Fix empty block appender position inside blocks that capture toolbars. (80592)
  • Fix cursor position during forward delete of empty blocks. (77525)
  • Fix preset round-trip test imports after preset utils consolidation. (80589)
  • Global Styles panels: Fix wrong preset committed and shown when two color presets share a hex. (80497)
  • Global Styles: Resolve link element styles in block inspector controls for blocks that are links. (80607)
  • RTC: Prevent controlled block synchronization from intercepting undo. (80503)
  • Rich text: Remove tabIndex from editable elements again to fix shift+click selection. (80651)
  • Writing flow: Extend block selections with shift+arrow when there is no native selection. (80687)
  • Writing flow: Mark shift+click as a multi-selection gesture. (80286)
  • Writing flow: Stop the page scrolling on caret moves within blocks taller than the viewport. (80708)
  • RichText: Don’t apply input transform when there’s no onReplace. (80978)
  • RichText: Fix paste handler crash when pasting files. (81010)

Post Editor

  • Editor: Leave undo to the browser in fields that handle their own undo. (80768)
  • Editor: Restore fixed device preview height for mobile and tablet. (80271)
  • MetaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. boxes: Match heading styles with Gutenberg panels. (80670)
  • Notes: Capture the target block before saving a block-level note. (80690)
  • Notes: Register the inline note format at import time. (80576)
  • Notes: Report save success consistently from note actions. (80748)
  • Notes: Sync 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. selection to the inline marker under the caret. (80610)
  • Post Lock: Fix modal flipping to “Someone else has taken over” for a locked-out viewer. (79997)
  • Wrap notices in ThemeProvider with 0 corner radius. (79523)
  • iOSiOS The operating system used on iPhones and iPads.: Remove jumping hack, add typewriter. (74596)

Components

  • DataForm: Stop card and details validation from hijacking focus. (80685)
  • Fix Root .prettierrc.js override issue. (80422)
  • GradientPicker: Select by slug so two presets sharing a gradient keep their identity. (80554)
  • Storybook: Fix Emotion jsxImportSource. (80426)
  • ToolsPanel: Migrate styles to an SCSS Module. (80445)

Client Side Media

  • Fix upload hang when converting long animated GIFs: Decode only the first frame for still outputs. (80260)
  • Media: Stop forcing crossorigin on IMG tags in media templates. (80532)
  • wp-build: Sync the page template preload field list with coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.-data. (80648)

Collaboration

  • Notes: Detach core’s mention kses 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. in the baseline strip test. (80656)
  • RTC: Compact during serialization. (80707)

Media

  • Media 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/: 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. sideload from URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org path upload size check. (80659)

Global Styles

  • 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.: Level block-level preset class specificity with :Where(). (80657)

Data Layer

  • RTC: Preserve collaborators’ unsaved edits when another user saves. (79936)

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

Block Library

  • Improve the various Alignment controls props handling. (63696)
  • Navigation: Fixes aria-expanded not updating on hover submenu inside overlay. (77563)

Performance

Block Editor

  • Rich text: Read the contentEditable attribute in ownsSelection to avoid forced layout. (80549)
  • Try to fix typing performance regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5.. (80507)

Post Editor

  • Editor: Avoid unnecessary term re-fetches in FlatTermSelector. (80623)

Data Layer

  • Core Data: Move EntitiesSavedState component out of editor (rebase of #71948). (80485)

Experiments

Dashboard

  • Dashboard Widgets: Harden action href sanitization. (80510)
  • Dashboard Widgets: Sanitize help link hrefs. (80409)

Block Editor

  • Global Styles: Put the inheritance UI behind a Gutenberg experiment. (80815)

Documentation

  • Add nvm use instructions to AGENTS.md. (80755)
  • Add progressive-discovery pattern for agent instructions and skills. (80650)
  • Added Missing Global Documentation in table-of-contents/index.php. (80442)
  • Docs: Add missing file-level and class-level docblocks to WP_Icon_Collections_Registry. (80172)
  • Docs: Clarify agent guidance discovery. (80753)
  • Docs: Clarify getBlock behavior with inner block controllers. (80773)
  • Docs: Expand the back-porting to WP Core guide. (80593)
  • Docs: Require view configuration filter callbacks to return the container. (80642)
  • Docs: Update 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. guidance for Gutenberg 23.6. (80629)
  • Theme: Update Storybook adminadmin (and super admin) color scheme examples. (80569)
  • UI: Add dialog vs drawer design guidance. (80783)
  • Update documentation for server-side view configuration filters. (80744)
  • Used link for URL in inline documentation. (80716)

Code Quality

  • ESLint: Add missing not-recommended components to denylist. (80754)
  • Fix: Update webpack-dev-server to ^5.2.1 to help with dep alerts. (80347)
  • 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/ workflows: Fix changelog checks for forked PRs. (80538)
  • Interactivity API: Refactor directives into self-registering modules. (79975)
  • RTC: Use array_any() for newer-compaction check in polling sync server. (80522)
  • RTC: Use str_contains() in WP_Sync_Config. (80476)
  • Storybook: Build the resolve specifier as a URL-style string. (80416)
  • Tools: Resolve dependencies independently of the node_modules layout. (80414)

Components

  • Autocomplete: Reference the suggestions list with aria-controls and aria-haspopup. (80403)
  • ExternalLink: Use shared focus ring mixin. (80573)
  • Make useSelectionProps hook layout agnostic. (80677)
  • Migrate Disabled to SCSS module. (80643)
  • Migrate FormTokenField to SCSS module. (80472)
  • Migrate SearchControl to SCSS module. (80474)
  • Packages: Update date-fns to 4.4.0. (80763)
  • Theme: Update Color.js to 0.7.1. (80762)
  • Theme: Update colorjs.io dependency and drop 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. workaround. (80272)
  • UI: Improve component code readability in Storybook by using arrays for children. (80352)
  • theme: Disallow src in published package. (80213)

Block Library

  • Guards against error throwing attribute values. (80558)
  • Make editableRoot a private block setting rather than a public support. (80820)
  • Misc fixes for WordPress-Develop 7.0 merges. (75985)
  • Page List: Use null coalescing operator for parentPageID attribute. (80728)
  • Remove redundant @jest-environment jsdom pragma and lint against it. (80676)
  • Remove unnecessary __next40pxDefaultSize props from form controls. (80540)
  • Table of Contents: Use str_contains() instead of strpos() check. (80418)
  • Tabs : Remove default paragraph from tab-panel template. (80565)

Block Editor

  • Duotone: Dedupe duotone utils into global-styles-engine. (80598)
  • Reduce duplicated preset utility implementations. (80245)
  • Refactor ‘URLInput’ to function component. (80721)

Post Editor

  • Icons: Validate SVG icons include viewBox. (80273)
  • Notes: Cancel in-flight hover highlight when focus leaves a note thread. (80752)

Data Layer

  • Packages: Update memize to 2.1.1. (80764)

Global Styles

  • Rename 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. files and drop .spec.js suffix. (80711)

Site Editor

  • Edit Site: Replace Theme usage in canvas loader with CSSCSS Cascading Style Sheets.. (80688)

Collaboration

  • Move real-time collaboration code to lib/experimental/collaboration. (80469)

Tools

  • Docs: Update the release form screenshot for GitHub’s new Release label UI. (80567)
  • Release: Require a working GitHub CLICLI Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress. for cherry-picking. (80568)

Build Tooling

  • Build: Add independent reactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org-18 vendor package. (80367)
  • Build: Handle project paths containing spaces in dev script. (80519)
  • Components: Skip polymorphism prop typings on intersection. (80364)
  • DependencyExtractionWebpackPlugin: Include extracted styles in the asset version hash. (80601)
  • React 19: Add end-to-end compat test for boolean inert attribute. (80397)
  • Resolve Prettier explicitly for isolated layout. (80529)
  • Storybook: Remove Emotion as JSX import source. (80647)
  • WP Build: Avoid infinite worker build loop. (80361)
  • Improve pre-flight npm access checks. (80334)

Testing

  • Jest: Fix ignore pattern for TypeScript declaration files. (80737)
  • Jest: Update to v30 (breaking). (80767)
  • Only use Flakiness.io in canonical Gutenberg repo. (80816)
  • Perf Tests: Fix ‘Selecting blocks’ metric reporting 0 ms. (80524)
  • RTC: Fix deleted-user test on multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site. (80463)
  • Site Editor: Add end-to-end coverage for view configuration extensibility. (80577)

Various

Components

  • Base Styles: Remove accent color parameter from input-control. (80595)
  • Remove private Theme component. (80691)

First-time contributors

The following PRs were merged by first-time contributors:

  • @dilipom13: Meta boxes: Match heading styles with Gutenberg panels. (80670)
  • @faisalahammad: Editor: Restore fixed device preview height for mobile and tablet. (80271)
  • @nickchomey: Interactivity API: Refactor directives into self-registering modules. (79975)

Contributors

The following contributors merged PRs in this release:

@aaronrobertshaw @adamsilverstein @aduth @andrewserong @chriszarate @ciampo @CookieDarb @DarkMatter-999 @desrosj @dhananjaykuber @dilipom13 @dpmehta @ellatrix @enejb @faisalahammad @getdave @himanshupathak95 @i-am-chitti @im3dabasia @Imran92 @jeryj @jorgefilipecosta @jsnajdr @juanfra @Kgupta62 @MaggieCabrera @Mamaduka @manzoorwanijk @maxschmeling @mirka @Mustafabharmal @nickchomey @noruzzamans @ntsekouras @oandregal @obenland @ocean90 @peterwilsoncc @ramonjd @retrofox @scruffian @shail-mehta @shekharnwagh @shimotmk @simison @sirreal @Soean @t-hamano @westonruter @yashjawale

Props to @mamaduka for reviewing.

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

What’s new in Gutenberg 23.6? (July 22, 2026)

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

Gutenberg 23.6 has been released and is available for download!

This release adds cropping controls to the Media editor, brings it to the Cover blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience., and extends responsive style states with aspect-ratio, flex-alignment, and text-shadow controls. Other changes include a minimum WordPress version bump to 6.9, Icon block transforms, and real-time collaboration improvements.

Table of contents

  1. The Playlist and Tabs blocks are now stable
  2. Enhancements to Notes
  3. A dynamic mode for the Gallery block
  4. Icon collections and a custom icon registration API
  5. Other Notable Highlights

The Playlist and Tabs blocks are now stable

Two blocks that have lived behind the block experiments flag are now part of the default block library, and are available to everyone without enabling an experiment.

The Playlist block plays a list of audio tracks with track metadata, artwork, and the waveform and track length options. The tracklist itself is configurable: you can set the play order, and toggle the artwork, artist names, track numbers, and track length individually to suit the design of your page. For more details on where the block is headed, see the iteration issue for WordPress 7.1.

Playlist block

The Tabs block family lets you organize content into tabbed sections, following the best practices set out in the tabs pattern from the W3C ARIA Authoring Practices Guide. Each panel accepts any blocks you like, and the tab buttons come with their own color, typography, border, and spacing controls, so the navigation can be styled to match your theme. For the details, see the tracking issue that drove the block toward stabilization.

Tabs block

Enhancements to Notes

Notes continues to move toward a full commenting workflow, with two significant additions in this release.

Inline notes let you attach a note to a specific text selection rather than to a whole block. Select part of a paragraph, add a note, and the highlight stays anchored to that text as you keep editing around it. A single block can carry multiple inline notes, sorted by the order they appear in the block, and none of the highlighting shows up in the published post. (#78218)

Inline notes

@mention autocomplete makes it possible to direct a note at a specific person. Typing @ inside a note opens an inline, keyboard-navigable list of users; selecting one inserts a mention chip that links to the user’s author page and carries the mentioned user’s ID. (#79604)

@mention autocomplete

The Gallery block can now display media dynamically instead of only the images you pick by hand. The new Dynamic Gallery variation shows all media currently attached to the post, in both the editor and on the frontend.

Rather than being a separate block, it is a variation of the Gallery block, so you can move between the two without losing your settings: start a Dynamic Gallery from the block placeholder, and switch it to a regular gallery whenever you want to edit the list of images by hand. (#78796)

Icon collections and a custom icon registration 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.

Icons can now be registered by plugins and themes, and are organized into collections.

Alongside the default coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. icons, the API has been extended and utility functions added so that you can publish an icon set of your own as a collection. Icons are shared data for the whole site, available in both the editor and on the frontend. (#77260)

The icon picker has been updated to match. A new Collections tab lists collections in the sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. — like the Pattern Explorer — so you can browse and search within one set rather than scrolling a single combined list. The collection containing the currently selected icon is opened by default, and icons load asynchronously to keep the UIUI User interface responsive when a large number of them are registered. (79681) (#78332)

Other Notable Highlights

  • Customizable viewport sizes. Tablet and mobile preview widths can now be set in theme.json, so device previews can match your theme’s actual breakpoints. (#79104)
  • The adminadmin (and super admin) bar is shown by default in both the Post Editor and the Site Editor. (#79197)
  • Apply Globally is now selective. When applying a block’s styles globally, you can choose which style properties to apply instead of applying all of them. (#79839)
  • New block support for the Custom HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. block. innerContent support for static inner blocks has been added and adopted by the HTML block. (#79115)
  • Background gradient support has been added to the Accordion, Post Content, Pullquote, Quote, and Verse blocks. (#79840, #79842, #79841, #79843, #79391)
  • The Post Editor is now always iframed, aligning its rendering with the Site Editor. (#74042)

Changelog

Features

Post Editor

  • Allow setting viewport tablet and mobile values in theme.jsonJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML.. (79104)
  • Experimental: Expand DataForm inspector to patterns. (79452)
  • Notes: Add @mention autocomplete. (79604)
  • Notes: Inline (partial-text) notes via hybrid marker + strip-on-render approach. (78218)
  • Show the admin bar in the Post and Site Editor by default. (79197)

Block Editor

  • Share block-bindings context assembly between call sites. (79855)

Data Layer

  • Blocks: Add innerContent support for static inner blocks, adopt it in the HTML block. (79115)

Components

  • DataViews: Add a richtext control backed by a private RichTextControl shell in wordpress/components. (78471)

Block Library

  • Icons: Add PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher method(s) for rendering inline SVG icons from the registry. (78332)

Enhancements

  • CSSCSS Cascading Style Sheets.: Follow-up fixes to split_selector_list(). (79723)
  • Document 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. relevance, help. (80007)
  • Expose widget categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. through the build pipeline and 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/. (79638)
  • Omnibar: Move the ‘site icon in admin bar’ feature from experiment to 7.1 compat. (79807)
  • Scripts: Make ‘test-e2e’ run Playwright and remove Puppeteer. (80058)
  • Site Editor v2 experiment: Hide admin bar in distraction-free mode. (79937)
  • Widget Dashboard: Remove layout-settings editing. (79903)
  • Widget Dashboard: Reserve paint space for tile focus rings. (79990)
  • Widget Primitives: Add WidgetAttributeField for typed attribute schemas. (79544)
  • Widgets: Add a declarative help metadata field, surfaced as a headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. infotip. (79830)
  • Widgets: Add attribute relevance and inline editing in the tile toolbar. (79735)
  • Widgets: Translate title, description, and keywords server-side. (79701)

Block Library

  • Accordion block: Add background gradient support. (79840)
  • Add ariaLabel supports for Tab List Block. (79948)
  • Add icon state classes to Accordion block. (74257)
  • Add layout and block spacing support to Latest Posts block. (77989)
  • Add option to exclude current post from query block. (64916)
  • Animated GIF to video conversion (via mediabunny). (78410)
  • Classic block: Remove migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. notice and restore inserter availability. (79894)
  • Cover: Allow restricting video embed providers. (80092)
  • File Block: Deduplicate the file to audio/video/image transforms. (80158)
  • GIF to video conversion: Make it opt-in. Switching via block transforms. (80072)
  • Generalize playlist block wording. (80071)
  • Icons: 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. the icon library picker by collection. (79681)
  • Make the Playlist blocks stable. (80203)
  • Move styles into specific waveform styles dropdown area. (80060)
  • Playlist Block: Add artwork to play button. (79938)
  • Playlist Block: Add waveform and waveform background color options. (80065)
  • Playlist: Seek value text localization. (79834)
  • Playlist: Update waveform player dependency. (79825)
  • Post Content block: Add background gradient support. (79842)
  • Pullquote block: Add background gradient support. (79841)
  • Quote block: Add background gradient support. (79843)
  • Responsive editing: Hide block toolbar slots when editing a responsive style state. (79998)
  • Second click or space/enter keypress on playing track pauses it. (80066)
  • Stabilize Tabs block. (80163)
  • Tabs: Combine and cleanup toolbar controls. (79537)
  • Tabs: RichText handlers for adding/removing tabs. (79583)
  • Tabs: Wrap tab list onto multiple lines by default. (80097)
  • Term Name: Migrate to textAlign block support. (76581)
  • Use playlist icon for Playlist block. (80174)
  • Verse block: Add background gradient support. (79391)
  • Icon block: Show text and background color controls by default. (80251)
  • Tab List: Add toolbar buttons to reorder tabs. (80107)

Components

  • Base Styles: Make Sass token fallbacks self-contained. (79651)
  • Base Styles: Reapply wpds-var Sass helper. (79470)
  • BorderBoxControl: Hard deprecate 40px default size. (79420)
  • BorderControl: Hard deprecate 40px default size. (79418)
  • Button: Align focus styles with design system. (78646)
  • Checkbox: Add form primitive to wordpress/ui. (80039)
  • ComboboxControl: Hard deprecate 40px default size. (79636)
  • Components/Button: Don’t use box-shadow for secondary buttons. (79982)
  • CustomSelectControl: Hard deprecate 40px default size. (79796)
  • DS: Name font weight tokens by intent. (80093)
  • FontSizePicker: Hard deprecate 40px default size. (79481)
  • FormFileUpload: Hard deprecate 40px default size. (79655)
  • FormTokenField: Hard deprecate 40px default size. (79720)
  • InputControl: Hard deprecate 40px default size. (79962)
  • NumberControl: Hard deprecate 40px default size. (79861)
  • Packages: Update Ariakit to 0.4.32. (79860)
  • Radio: Hard deprecate 40px default size. (79657)
  • RangeControl: Hard deprecate 40px default size. (79590)
  • SelectControl: Hard deprecate 40px default size. (79797)
  • Theme: Remove elevation tokens. (80099)
  • Theme: Restrict seed colors to opaque values. (79773)
  • ToggleGroupControl: Hard deprecate 40px default size. (79656)
  • TreeSelect: Hard deprecate 40px default size. (79550)
  • UI: Add LinkButton. (78944)
  • UI: Add Skeleton component. (79671)
  • UI: Update @base-ui/reactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org to 1.6.0. (79408)
  • UnitControl: Hard deprecate 40px default size. (79721)
  • theme: Validate npm publish surface. (79552)
  • ui/IconButton: Restore default tooltip delay. (79505)
  • DataViews: Add shift-click range selection. (80046)

Post Editor

  • Commands: Add toggle for content-only pattern/template part editing. (78383)
  • Commands: Suggest pattern editing toggle for selected patterns. (79566)
  • Editor: Preload the view configuration form request for the DataForm inspector. (79910)
  • Media Inserter: Add pagination to core media inserter categories. (80038)
  • Media Inserter: Allow core media categories to subscribe to changes. (79921)
  • Notes: Add a “Resolved” divider above resolved notes. (80019)
  • Notes: Remove snackbar when resolving or reopening a note. (80017)
  • Preview dropdown: Simplify viewport style state descriptions. (80146)
  • RTC: Remove collaboration notification defaults filter. (79771)
  • Rename ‘Responsive editing’ toggle to ‘Responsive styles’. (80241)
  • Responsive style states: Update responsive editing help text and avoid showing desktop badge. (79615)
  • Restore responsive editing viewport dropdown copy changes. (79999)
  • View config: Add better post type default form. (79625)
  • Visual 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.: Label autosaves in the revisions timeline. (79950)
  • Visual revisions: Make the autosave notice work with the visual revisions UI. (79947)
  • [RTC] Add granular collaboration control. (79184)
  • Notes: Remove “Add note” from the inline styles dropdown. (80531)
  • Device preview dropdown: Use active color for device icon when responsive styles are active. (80346)
  • Editor: Allow selecting which block styles to apply globally. (79839)
  • Notes: Add placeholders to the RichText fields. (80296)
  • Notes: Increase contrast between avatarAvatar An avatar is an image or illustration that specifically refers to a character that represents an online user. It’s usually a square box that appears next to the user’s name. border colors. (80285)

Block Editor

  • Add contrast checking for viewport and pseudo states. (80223)
  • Block variations: Support innerContent for the Custom HTML block. (79659)
  • Block visibility: Add theme json opt out. (76559)
  • Classic Block: Remove conversion from BlockInvalidWarning. (79500)
  • Color popover: Move contrast warning notice to the bottom. (79512)
  • Enable text alignment to be set by viewport state. (80037)
  • FontAppearanceControl: Hard deprecate 40px default size. (79635)
  • FontFamilyControl: Hard deprecate 40px default size. (79593)
  • Grid: Add option to stretch columns with auto-fit for better layout flexibility. (79356)
  • LetterSpacingControl: Hard deprecate 40px default size. (79533)
  • LineHeightControl: Hard deprecate 40px default size. (79589)
  • Media Inserter: Guard attach, detach, and invalidate behind a ! isExternalResource check. (79978)
  • Pattern editing: Fade blocks outside the edited pattern in List View. (73997)
  • Responsive editing: Add a Tooltip to the viewport / states badge. (80080)
  • Reflect inherited Global Styles values in block inspector controls. (80481)

Icons

  • Add “sites” icon. (80094)
  • Add APIs for collection and icon registration. (77260)
  • Add Playlist icon. (80168)
  • Add repeat all icon. (79698)
  • Icons Registry: Allow digits and underscores in icon slugs. (79623)

Dashboard

  • Widget Dashboard: Anchor settings drawer to the right and toggle it from the gear. (79683)
  • Widget Dashboard: Refactor tile header and toolbar chrome. (79639)
  • Widget Primitives: Add a field type registry for widget attributes. (80148)
  • Widget inserter: More accurate widget previews. (79517)
  • Widgets: Auto-save inline attribute edits. (79808)

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.

  • Experiments: Move screen under Settings, drop top-level Gutenberg menu and Demo page. (79456)
  • Release: Harden all npm package release paths. (79905)
  • Release: Harden latest npm metadata publishing. (79904)
  • Release: Make npm publishing rerunnable. (80187)
  • Global Styles: Limit the inherited value treatment to the Gutenberg plugin. (80555)

Site Editor

  • Theme: Fill semantic token state gaps. (79770)
  • Theme: Make wordpress/theme ESM only. (80063)

Data Layer

  • Icons: Add an icon collections REST endpoint and tighten name rules. (79686)
  • Packages: Widen React peer dependency support to include React 19. (80024)
  • Client Side Media: Honor image_strip_meta and image_max_bit_depth on the client upload path. (80218)

Global Styles

  • Migrate color palette tabs to wordpress/ui. (79281)
  • Show skeleton placeholder while previews load. (79849)

DataViews

  • View Config: Add version handling. (79809)

Design Tools

  • Global Styles: Match block panel order to the block inspector. (79794)

Extensibility

  • Guidelines: Add Blocks as a registry scope. (79709)

Media

  • Media Editor: Use new Tabs component from the ui package, and its minimal variant. (79664)

Connectors screen

  • Connectors: Add application password settings UI. (79403)

Client Side Media

  • Media: Return the filtered wp_editor_set_quality value in the upload response. (78420)

Bug Fixes

  • Abilities: Support URI schema format. (79555)
  • Command Palette: Show the search icon on desktop as well. (79881)
  • Fix: DataForm inspector shows raw “auto-draft” status for new posts. (79914)
  • Media: Fix fatal error from narrowed create_item_from_url() visibility. (79972)
  • Site Editor: Update default theme color from fresh to modern. (79814)
  • design-system-mcp: Use fixed version for alpha MCP server. (80061)
  • lintstaged: Avoid appending filenames to the prelint:Js command. (79800)
  • Core Abilities: Restore the ready promise and lazy-load via dynamic import. (79155)

Block Library

  • Add translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. comment to waveform styles. (80112)
  • Block position: Allow options dropdown to flip. (79798)
  • Blocks: Rename _gutenberg_apply_content_filters() to _wp_apply_content_filters(). (80191)
  • Cover Block: Fix unsaveable state when clearing an embed video background. (80184)
  • Enable default gap processing on Gallery block. (79984)
  • File Block: Changed the context for fetching the media. (80085)
  • Fix – Accordion: Text in a closed accordion panel cannot be found via the browser search. (74744)
  • Fix and permit unitless zeros used in CSS calc functions. (79786)
  • Fix global gap styles for Gallery block. (80030)
  • Fix playlist artwork removal on track switch. (80025)
  • Fix playlist waveform artist rendering. (80104)
  • GIF block variation: Remove icons from “Display as” toolbar buttons and only show when block can be inserted. (79985)
  • Icon block: When the default icon is unregistered, nothing is displayed. (80166)
  • Latest Posts: Parse blocks in full content display. (74866)
  • Make playlist pause button visually match play button. (80217)
  • Navigation Link/Submenu: Run post-status check also without Gutenberg plugin (draft/deleted links regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5.). (79748)
  • Navigation Link: Fix “[object Object]” in link preview for untitled entities. (79616)
  • PHP-Only blocks: Forward current post ID to server render. (78909)
  • Playlist block: Avoid laggy layout shift when changing tracks. (79497)
  • Playlist: Fix flashing track state when adding new track. (80076)
  • Playlist: Show album art thumbnails. (79942)
  • Playlist: Use PlainText v2 to avoid HTML entities. (80068)
  • Remove Playlist border radius support. (79753)
  • Responsive editing: Apply crop dimensions to image block placeholder. (80162)
  • Select tab panel when caret moves into tab. (79558)
  • Tab List: Fix render inline formatting on frontend. (79554)
  • Tabs: Fix active tab switching from a stale inner-block selection. (79981)
  • Tabs: Fix dirty editor state on mount caused by tab-list sync. (79540)
  • Tabs: Fix rich text label comparison when syncing the list. (79582)
  • Tabs: Prevent tab list from moving focus during revision navigation. (79730)
  • Tabs: Remove redundant block selection from Add/Remove tab actions. (79571)
  • Fix crashes when manipulating locked blocks. (80509)
  • Playlist: Fix playback of tracks served without CORS headers. (80533)
  • Fix default aspect ratio for lazy loaded 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.. (80386)
  • Fix playlist block styling. (80312)
  • Fix: Allow icon labels to wrap with word breaks and no ellipsis. (80256)
  • Hide color controls for Navigation and Social Icons when viewport sta…. (80289)
  • Playlist: Fix track insertion. (80200)
  • Try fixing responsive layout in Nav block. (80305)
  • Media: Remove the redundant __heicUploadSupport flag (#80452). (80486)

Components

  • Autocomplete: Use regular weight for result items. (80196)
  • BorderBoxControl: Fix unlink button positioning after View Emotion migration. (79967)
  • Button: Fix corner artifacts by using background-clip: Border-box. (79524)
  • Button: Fix focus ring for link. (79837)
  • Button: Hide Core focus ring when button as link is pressed. (80082)
  • DataViews: Fix infinite-scroll jump on async page loads. (79546)
  • Divider: Restore lower border specificity. (79534)
  • ExternalLink: Stop setting default rel. (79743)
  • IconButton: Use length zero for inline padding. (79722)
  • Panel: Fix focus style for toggle button. (80064)
  • SandBox: Inject resize script into head to stop it leaking as text. (79920)
  • Storybook: Scope documentation theme providers. (79496)
  • Tabs: Fix stale overflow fade as content settles on load. (79856)
  • Theme: Fix token story swatch 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). (79960)
  • UI: Restore Link focus styles. (80091)
  • useMergeRefs: Apply ref changes after out-of-render attachment. (80133)
  • ContentEditableControl: Fix invalidinvalid A resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid. label association with contenteditable div. (80441)
  • 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. ColorPicker cursor shaking fix to WordPress 7.1. (80435)
  • DataViews: Fix the list layout ignoring some settings when groupBy is set. (80255)
  • DataViews: Fix the unintended gap between list layout items when groupBy is set. (80254)
  • UI: Backport compat overlay fixes to WordPress 7.1. (80322)
  • fix: Set dataviews popover hover text color. (80105)

Block Editor

  • DimensionControl: Include styles in stylesheet. (79916)
  • Editor: Use the DS focus color for all sidebar elements. (80087)
  • Fix clipped/doubled focus outline on inserter block list items. (79845)
  • Fix unsetting values in viewport states for grid and constrained layouts. (79520)
  • HTML Block: Preserve innerContent when transforming to group, columns. (79887)
  • Move inspector controls styles slot back to previous position. (80111)
  • Render the selected static inner block synchronously. (79726)
  • Rich text: Cut through the record instead of execCommand. (80155)
  • Writing flow: Fix selection end mapping at block boundaries. (80126)
  • useTypingObserver: Capture the window reference for cleanup. (78772)
  • Global Styles: Resolve per-level heading element styles in block inspector controls. (80495)
  • Redirect editing events to extension handlers under editableRoot. (80287)
  • Writing flow: Fully select the items when a selection extends down into a nested item. (80492)

Post Editor

  • Editor: Render back button as proper , which cleans up custom CSS. (79862)
  • Editor: Render post preview action as a menu item. (80195)
  • Fix clipped focus ring on the document bar. (80084)
  • Image: Sideload external images on the server when uploading to the library. (79409)
  • Notes: Allow canceling the autocompleter popover with Escape without dismissing the note form. (80224)
  • Device type preview: Fix collapsing to content height. (80553)
  • Notes: Align floating threads with their inline marker. (79877)
  • Wrap notices in ThemeProvider with 0 corner radius. (80557)
  • Autocompleters: Don’t pre-encode mention search terms. (80377)
  • Editor: Disable canvas resizing while zoomed out. (80391)
  • Fix upload snackbar stuck in uploading state on server-side uploads. (80345)
  • Notes: Finish WPDS treatment for mention chips. (80300)
  • Responsive styles: Open inspector sidebar when toggling. (80307)
  • Responsive styles: Use viewport dropdown to control states for in-editor global styles sidebar. (80339)
  • Fix upload snackbar double-counting a single HEIC upload in Safari. (80436)
  • Editor: Restore fixed device preview height for mobile and tablet. (80466)

Site Editor

  • Editor: Fix regression and restore the back button focus ring. (80029)
  • Editor: Render mobile back button as proper and remove custom CSS. (80032)
  • Editor: restore the behavior of only showing back button focus ring on :Focus-visible. (80114)
  • Style Book: Pass site editor settings to StyleBookPreview on the styles route. (80035)

Media

  • Experimental Media Modal: Ensure selection is properly cleared between open/close. (79731)
  • Media Modals: Invalidate attachment caches when closing the modal. (79844)
  • Media editor modal: Balance top padding for sidebar controls. (79660)

Client Side Media

  • Apply and correct EXIF orientation for client side sub-sizes. (79384)
  • Media: Backport client-side media improvements from WordPress core backports. (79603)
  • Vips: Preserve bit depth of high-bit-depth AVIF in sub-sizes. (79556)

Icons

  • Playlist icon: Fix 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. with missing viewbox. (80180)
  • Store the sanitized SVG content when registering an icon. (80508)

Block API

  • Block Supports: Ensure that custom CSS is output after the block library styles. (80062)

Guidelines

  • Render block icons like the editor so every icon displays correctly. (79738)

Collaboration

  • RTC: Fix autosave update with no content. (79591)
  • Notes: Arm the mention kses allowance on REST note creation. (80221)

Style States

  • Style Engine: Preserve important gradient declarations. (79568)
  • Hide block style variations when state is enabled in global styles. (80341)

Data Layer

  • RTC: Fix undo / redo breakage when plug-in with 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. is loaded. (79510)

Connectors screen

  • Prevent overscroll bounce for stage and inspector surfaces. (78587)

Global Styles

  • Block Supports: Handle nested array block gap values properly. (80464)
  • Style Book: Restore live global styles updates on the styles route. (80459)

Accessibility

Media

  • Media editor: Address accessibility review feedback. (79966)

Post Editor

  • Editor: Move focus to revisions slider when entering revisions mode. (79691)
  • Replaces the title attributes used by revision inline diff annotations with aria-describedby. (80440)
  • Revisions: Specify block level diff status via aria-label. (77779)

Components

  • 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): Replace local aria-live regions with speak(). (79600)

Block Library

  • Focus first tab when adding Tabs block. (79507)

Performance

  • CI: Avoid full-history checkout for the root-dependencies check. (79489)

Block Library

  • Latest Posts: Fix slow category selection with large category lists. (80198)

Data Layer

  • RTC: Only apply CRDT updates synchronously when collaborating. (79991)

Block API

  • Block Supports: Prevent Additional CSS duplication inside Query LoopLoop The Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. https://codex.wordpress.org/The_Loop. (78282)

Global Styles

  • prepend_to_selector: Optimized with str_replace(). (76556)

Experiments

  • Move long intro to content. (79578)
  • Shorten the page name. (79579)

Post Editor

  • Add PluginPostStatusInfo in DataForm post summary. (79586)
  • Media Inserter: Try adding a simple Attachments category with attach and detach behaviour. (79336)

Guidelines

  • Knowledge: Dissolve the Guidelines singleton into per-scope rows. (79263)
  • Knowledge: Rename the Guidelines CPT storage primitive to Knowledge. (79149)

Block Library

  • Dynamic Gallery Block: Attempt a dynamic mode of the gallery block. (78796)

Documentation

  • Add missing docblocks to client-assets.php. (80135)
  • Added Missing Global Documentation. (79827)
  • Backfill unreleased changelog entries for the widget packages. (79909)
  • Badge: Update storybook with “don’t use icons” example. (79585)
  • Components: Add missing descriptions for design system components. (79460)
  • Components: Document CSS module class composition. (79490)
  • Components: Link recommended UI component. (80127)
  • Design system MCP: Document Codex CLICLI Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress. prerequisite for MCP setup. (79917)
  • Docs: Add a widget anatomy doc and lighten the widget system doc. (79435)
  • Docs: Add image hosting guidance to the documentation contributors guide. (79574)
  • Docs: Add missing since, param, and return tags in REST API compat file. (80079)
  • Docs: Clarify release recovery steps. (79884)
  • Fix typo in inline comment in collaboration.php. (80147)
  • Packages: Backport UI and theme release changelogs. (79690)
  • Polish package changelog cleanup. (79826)
  • Theme: Clarify focus token naming documentation. (79764)
  • Theme: Correct documented default background seed. (80237)
  • Theme: Document and test build plugin transform boundaries. (80088)
  • Theme: Document ramp memoization contract. (79459)
  • Theme: Document token naming grammar. (79769)
  • Theme: Remove experimental package messaging. (80049)
  • Theme: Update design token format links. (80052)
  • Theme: Use token reference as documentation source. (79829)
  • ThemeProvider: Document wrapper customization scope. (79763)
  • Updating image urls. (79529)
  • WP Build: Improve documentation for routes. (79688)
  • stylelint-config: Enable token fallback rule. (79768)
  • theme: Clarify package documentation. (79961)

Code Quality

  • Added Missing Global Documentation. (80033)
  • Backport Changelog: Link Core PR #12007 for #75793. (78786)
  • Base Styles: Disallow direct var(–wpds-*) usage. (79424)
  • Build: Move typescript and rimraf out of the root package.json. (80086)
  • CODEOWNERS: Add ownership for widget dashboard areas. (79484)
  • Code Modernization: Use str_starts_with() in WP_Theme_JSON and WP_Duotone. (79519)
  • Dedupe lockfile. (79618)
  • Dependencies: Fix bin resolution, type mismatch, and missing dependencies. (79806)
  • Deprecate @wordpress/reusable-blocks public APIs. (79805)
  • Duotone: Use HTML API class_list for duotone wrapper class handling. (79531)
  • E2E: Ban uuid package via ESLint, use crypto.randomUUID() instead. (79673)
  • Jest: Add missing clsx dev dependency. (79677)
  • Lint-staged: Match lint:Css file globs. (79918)
  • Notes: Simplify inline-note marker stripping to match core backport (#78218 follow-up). (79670)
  • Theme: Use public design token stylesheet imports. (80050)
  • Update webpack to 5.108.1. (79633)
  • Upgrade browserslist to ^4.28.4. (79630)
  • Use null coalescing operator instead of isset() ternaries. (79946)
  • stylelint-config: Convert configuration to ESM. (79755)
  • wp-build: Allow wordpress/theme 1.x peer versions. (80089)
  • Release: Resolve commander from the test file in the release CLI test. (80357)

Block Library

  • Blocks package: Stabilize cloneSanitizedBlock and sanitizeBlockAttributes. (79928)
  • Blocks: Rename _wp_apply_content_filters() to _wp_apply_block_content_filters(). (80225)
  • Button: Fix suppressed ESLint errors. (79944)
  • Dedupe @testing-library/dom to a single 10.4.1 in the lockfile. (79631)
  • Embed: Refactor ‘EmbedPlaceholder’ to use recommended components. (79759)
  • Fix linting of waveform test. (80124)
  • Heading: Fix ESLint warnings. (79694)
  • Icons: Unify collection-scoping route param on collection and validate description. (80113)
  • List: Fix suppressed ESLint errors. (79983)
  • Media Editor: Remove inline cropper (follow-up to #78653). (78654)
  • Playlist: Simplify block track state. (79448)
  • Playlist: Simplify waveform metadata updates. (80193)
  • Remove redundant @jest-environment jsdom pragmas from unit tests. (79672)
  • Remove redundant parentheses around assignments. (79516)
  • Replace obsolete View primitive with plain div. (79767)
  • Stylelint: Enforce class naming for all stylesheets. (79900)
  • Tabs: Remove editor-only block context. (79848)
  • Tabs: Remove unnecessary callback memoization. (79567)
  • Use modern PHP string functions instead of strpos/substr. (79927)
  • Misc fixes for WordPress-Develop 7.0 merges. (80444)
  • Playlist: Update since tags to 7.1.0. (80317)

Components

  • Declare @types/node explicitly and harden no-unsafe-wp-apis. (79626)
  • FocalPointPicker: Complete __next40pxDefaultSize cleanup. (79487)
  • Jest: Mock CSS module class names. (79535)
  • Migrate Flex to SCSS module. (79450)
  • Migrate Spacer to SCSS module. (79449)
  • Migrate Surface to SCSS module. (79445)
  • Migrate Theme away from Emotion. (79447)
  • Migrate Truncate to SCSS module. (79446)
  • Migrate View away from Emotion. (79443)
  • QueryControls: Complete __next40pxDefaultSize cleanup. (79485)
  • Remove unused FocalPointPicker style.scss. (79902)
  • SearchControl: Complete __next40pxDefaultSize cleanup. (79538)
  • Stylelint: Enforce module class naming in UI packages. (79504)
  • Stylelint: Lint all CSS file extensions. (79957)
  • Theme: Cover display contents wrapper focus behavior. (80056)
  • Tools: Restrict layout effect imports in UI and theme. (79476)
  • Update @terrazzo/* to 2.4.0 and regenerate design tokens. (79627)
  • Update stylelint to 16.26.1. (79648)
  • RichTextControl: Replace DOM focus tracking with a single React-tree focus boundary. (80324)

Block Editor

  • Media Inserter: Omit page arg from requests for the first set of results. (80219)
  • Rich Text: Move RichTextShortcut and RichTextInputEvent into wordpress/rich-text. (79828)
  • Rich text: Synchronize the selection before events that consume it. (80151)
  • Simplify layout panel selector getter. (80176)
  • Subscribe to selectionchange permanently in rich text. (79712)
  • TextIndentControl: Remove unnecessary __next40pxDefaultSize prop. (79597)
  • Typewriter: Remove the block selection gate. (80130)
  • Use core/registered-block in reducer tests. (79522)

Post Editor

  • Declare undeclared workspace dependencies. (79684)
  • Editor: saveDirtyEntities: Don’t allow onSave to filter records. (79850)
  • Observe typing on the writing flow node. (80131)
  • Style Book: Migrate to Tabs from wordpress/ui. (80040)
  • Notes: Render @ mentions as span chips and narrow the kses class allowance. (80528)
  • Notes: Replace blur-deselect bookkeeping with useFocusOutside. (80222)

Icons

  • Add Storybook React Vite dev dependency. (79506)
  • Icons Registry test: Fix trigger_error suppression on WP < 7.0. (79607)
  • Validate SVG icons include currentColor. (79751)
  • Backport from Core: Improve icon name unit tests. (80552)

Design Tools

  • Block Style Variations: Simplify block style variation selector regex. (79924)
  • Block Supports: Guard elements hover rendering against missing hover selector. (79511)

Plugin

  • Move icon tests out of phpunit/experimental. (79695)
  • Move real-time collaboration compat code to wordpress-7.1. (79863)
  • Icons: Fix collection unregister not removing icons after core added its own registry. (80292)

Guidelines

  • Guidelines end-to-end Tests: Wait for boot to load copy page. (79663)
  • Use str_starts_with() in is_block_meta_key(). (79491)

DataViews

  • Sync changes from core for view-config version handling. (80170)

Widgets Editor

  • Edit Widgets: Remove unused customizerCustomizer Tool built into WordPress core that hooks into most modern themes. You can use it to preview and modify many of your site’s appearance settings.-edit-widgets-initializer style.scss. (79915)

Client Side Media

  • Vips: Add positional-crop test for high-bit-depth AVIF. (79880)
  • Vips/upload-media: Consolidate optional params into options objects. (80330)

Data Layer

  • Packages: Backport package release metadata. (79702)

Patterns

  • Pattern editing: Use section block selector for pattern display identity. (79565)

Global Styles

  • Reject non-string custom CSS in the REST controller. (80338)

Tools

  • CODEOWNERS: Exclude eslint suppressions.json from /tools ownership. (80125)
  • CODEOWNERS: Exclude stylelint suppressions.json from /tools ownership. (80171)
  • Project automation: Stop flagging returning contributors as first-timers when they use hidden email addresses. (79987)

Testing

  • Add an end-to-end test for single paragraph selection on triple click. (79706)
  • Automated Testing: Configure lint:Css to report needless disables. (79788)
  • Automated Testing: Enforce dependencies checks consistently for development files. (79703)
  • Automated Testing: Enforce no-unresolved checks for test files. (79718)
  • Automated Testing: Use three-dot diff comparison for changelog checks. (79548)
  • Fix flaky “can use appender in site editor sidebar list view” end-to-end test. (80044)
  • Fix flaky ‘Activate theme’ end-to-end test. (80090)
  • Flaky tests: Fix rich text backtick undo. (80183)
  • Flaky tests: Fix widgets global inserter. (80177)
  • Flaky tests: Fix writing flow arrow navigation. (80179)
  • Icons: Fix viewBox casing assertion in wp_get_icon test for older WP. (79576)
  • Image: Use Playwright’s locator.drop for media placeholder drop test. (79733)
  • Perf tests: Wait for upload queue to settle between media-upload iterations. (79952)
  • RTC: Add RTC WebSocket tests to CI. (79757)
  • RTC: Improve stress test flakines. (79954)
  • Skip flakey collaboration end-to-end test. (79922)
  • Tests: Fix flaky ‘GIF to Video’ end-to-end test. (79758)
  • Tests: Honor waitForUploadQueueEmpty timeout in client-side media. (79783)
  • Upgrade Playwright to v1.61. (78632)
  • Fix useHomeEnd on tabs in mac testing. (80374)

Build Tooling

  • Add more workflow file static analysis with Zizmor. (71523)
  • Build: Make installed-deps check layout-agnostic and surface opt-out env var. (79687)
  • Build: Support –skip-types in npm run dev. (79736)
  • Build: Upgrade to TypeScript 7.0. (80083)
  • CI: Enforce pruned ESLint suppressions during lint. (79708)
  • Docs: Generalize the npx guidance in AGENTS.md to cover wp-scripts. (79973)
  • 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/ workflows: Extend package changelog nudge to bundled packages. (78934)
  • React 19 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.: Log warnings when polyfills are hit. (79624)
  • React 19: Patch to support legacy inert attribute values. (79475)
  • Release: Revert to 23.5rc-3. (79741)
  • Update actionlint to version 1.7.12. (79833)
  • theme: Protect design tokens CSS import. (79551)
  • Only include icon library SVGs listed as public in the Zip file published to GitHub Container Registry for wordpress-develop. (79338)
  • Release: Extract npm release lifecycle. (80190)

Data Layer

  • Backport changelog and package version updates from NPM. (79816)

Components

  • Add an editableRoot block support for native cross-block selection. (79105)

Post Editor

  • Always 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.. (74042)

Security

  • Opt in to npm v11 supply-chain security features. (79614)
  • Revert npm v11 supply-chain settings (allow-git, allow-remote, allowScripts). (79667)

npm Packages

  • Build: Fix non-breaking npm audit vulnerability alerts. (79886)

First-time contributors

The following PRs were merged by first-time contributors:

  • @bgrgicak: Backport changelog and package version updates from NPM. (79816)
  • @deepakpra: Add icon state classes to Accordion block. (74257)
  • @g-elwell: Add option to exclude current post from query block. (64916)
  • @priethor: Project automation: Stop flagging returning contributors as first-timers when they use hidden email addresses. (79987)
  • @saulirajala: Navigation Link/Submenu: Run post-status check also without Gutenberg plugin (draft/deleted links regression). (79748)
  • @SohamPatel46: Fix – Accordion: Text in a closed accordion panel cannot be found via the browser search. (74744)
  • @milindmore22: Fix: Allow icon labels to wrap with word breaks and no ellipsis. (80256)
  • @Pranjal1423: fix: Set dataviews popover hover text color. (80105)

Contributors

The following contributors merged PRs in this release:

@aagam-shah @aaronrobertshaw @adamsilverstein @aduth @alecgeatches @andrewserong @annezazu @anomiex @arthur791004 @bgrgicak @cbravobernal @ciampo @danluu @deepakpra @desrosj @dmsnell @ellatrix @enejb @fushar @g-elwell @getdave @gziolo @himanshupathak95 @huzaifaalmesbah @im3dabasia @jasmussen @jeryj @johnbillion @jonathanbossenger @jorgefilipecosta @josephscott @jsnajdr @juanfra @juanmaguitar @Mamaduka @manzoorwanijk @mcsf @milindmore22 @mirka @Mustafabharmal @noruzzamans @ntsekouras @Pranjal1423 @prasadkarmalkar @priethor @ramonjd @retrofox @rohitmathur-7 @SainathPoojary @saulirajala @scruffian @shail-mehta @shekharnwagh @shrivastavanolo @simison @sirreal @Soean @SohamPatel46 @shimotmk @t-hamano @taipeicoder @talldan @tellthemachines @tyxla @xavier-lc @youknowriad

Props to @huzaifaalmesbah for reviewing.

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