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

What’s new in Gutenberg 23.5? (July 1, 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.5?

Gutenberg 23.5 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. Media Editor Cropping and Cover Block Support
  2. Unified Device Preview and Resizable Editor
  3. Other notable highlights
  4. Changelog
  5. First-time contributors
  6. Contributors

Media Editor Cropping and Cover Block Support

The experimental Media editor gains several cropping improvements: a magnified crop canvas for fine adjustments (79044), crop handles that snap to source pixels (79139), and fixed keyboard resizing for locked aspect-ratio crops (79207). The Cover block now supports the Media editor modal, bringing inline cropping to cover images. (79258)

Unified Device Preview and Resizable Editor

You can now drag the editor canvas to any width, instead of being limited to the Desktop, Tablet, and Mobile presets. The device preview dropdown and the resize handles work together, so you can jump to a preset viewport or fine-tune to an exact width in between. Blocks set to show only on specific viewports respond as you resize, appearing and disappearing at their breakpoints. The preview dropdown also now holds a toggle for responsive editing, making it the central place to both preview your content across screen sizes and make viewport-specific adjustments. (75121)

Other Notable Highlights

  • Minimum WordPress version. The Gutenberg 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. now requires WordPress 6.9 or later (79196).
  • Global Styles adds text shadows. A new textShadow style adds support for configuring text shadows in Global Styles. (73320)
  • Icon block. Adds flip and rotate controls (77017) and inserts a default icon instead of an empty placeholder (79111).
  • Real-time Collaboration. Can now be disabled per post type (78984), and the code-editor cursor no longer jumps to the end on remote sync (79005).
  • ThemeProvider available as a public export. ThemeProvider is now exported directly from @wordpress/theme. (78664)

Changelog

Enhancements

  • Style Engine: Export public TypeScript types. (79079)
  • 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: Decouple discovery from a hardcoded endpoint. (79322)
  • Widget Primitives: Make @types/react an optional peer dependency. (79272)

Components

  • Add corner radius presets to ThemeProvider. (78816)
  • Autocomplete: Add Group and GroupLabel primitives. (78901)
  • Base Styles: Add wpds-var Sass helper for design token fallbacks. (78698)
  • BaseControl: add text-wrap: Pretty. (79112)
  • BoxControl: Hard deprecate 40px default size. (79419)
  • Components, DataViews: Adopt –wpds-dimension-size-* tokens. (79093)
  • ESLint, UIUI User interface, Components: Mark Tooltip from wordpress/ui as recommended. (78693)
  • Popover: Add open/close motion and fix close re-anchor. (78885)
  • Theme: Add Figma scopes to element size tokens. (79032)
  • Theme: Add disabled variants for brand and error interactive color tokens. (79124)
  • Theme: Add stroke-surface tokens for the caution tone. (79198)
  • Theme: Apply ThemeProvider styles inline (I2). (78678)
  • Theme: Differentiate –wpds-color-fg-interactive-{brand,error}-active vs resting state tokens. (79151)
  • Theme: Enforce sRGB seed-color input contract for ThemeProvider. (79148)
  • Theme: Provide design-system token defaults without a runtime <ThemeProvider>. (78664)
  • Theme: Skip serializing data-wpds-root-provider=”false” on non-root providers. (79253)
  • Theme: forward ThemeProvider cornerRadius preset to :Root for root providers. (79153)
  • UI Field.Description: add text-wrap: Pretty. (79143)
  • UI: Disable instant overlay popup transitions. (79432)
  • UI: Simplify focus ring styles. (78823)
  • UI: Use isomorphic layout effects for SSR. (79458)
  • Update @ariakit/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 0.4.29. (79055)
  • [DataViewsPicker]: DataViewsPicker.BulkActionToolbar now renders only the bulk-selection info and action buttons. (79180)
  • theme: Rename bg/fg design token groups to background/foreground. (79098)

Block Library

  • Add support for aspect ratio and related controls in viewport states. (78795)
  • Audio: Apply inert directly instead of wrapping in Disabled. (79423)
  • Classic Block: Port PHPUnit coverage for hiding it from the inserter. (79434)
  • Cover block: Add media editor modal. (79258)
  • File Block: Combine audio/video/image to file transforms. (79242)
  • File Block: Replace on-mount downloadButtonText effect with a default variation. (79236)
  • Icon Block: Add flip and rotate transformation controls. (77017)
  • Icon block: Default to coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress./info via block.jsonJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. instead of an insert-time effect. (79212)
  • Icon block: Move flip controls to toolbar group. (79192)
  • Icons block: Insert an icon by default. (79111)
  • Math format: Seed LaTeX input from the current selection. (79052)
  • Pullquote: Migrate to text-align block support. (79225)
  • Remove orphaned convertToListItems util. (79400)
  • Search block: Add opt-in support for the semantic element. (78485)
  • Tabs: Simplify layout and prune redundant block supports. (77646)
  • Try: Remove Tab (Tab list item) block. (77439)
  • Video: Apply inert directly instead of wrapping in Disabled. (79371)

Post Editor

  • Block Editor: Allow overriding disableContentOnlyForTemplateParts setting. (79191)
  • Editor: Hide cmd palette shortcut in document bar when adminadmin (and super admin) bar is shown. (79060)
  • Feature: Need to add “Show More” / “Show Less” toggle in Note. (77446)
  • Notes: Simplify ‘Show more/less’ collapse logic. (79261)
  • Rename Toolbar in editor experiment to match iteration issue. (79074)
  • 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 with picker-activity layout. (77333)
  • Style states: Use symbols for property keys to avoid clashes. (79210)
  • Integrate Resizable Editor with Device Preview and add Responsive editing. (75121)

Site Editor

  • Add xl border radius token for page shell surfaces. (78913)
  • Change ‘Identity’ nav item position. (79292)
  • Handle aria-current natively in SidebarNavigationItem. (79305)
  • Introduce isHidden prop for SidebarNavigationItem. (79352)
  • Omnipresent toolbar: Show site icon instead of dashicon if set. (79049)
  • Update spelling within the welcome tour. (53028)

Block Editor

  • Add flex vertical alignment tool to block inspector layout panel. (79426)
  • Correct behaviour of flex child fixed width and introduce max width option. (79073)
  • Global Styles: Add textShadow style support. (73320)
  • List View block support: Hide list tab when allowedBlocks is empty, with no children. (78932)
  • Pattern editing: Show root block identity when editing pattern sections. (79417)

Media

  • Media Editor Modal: Add a loading and simple error state. (79101)
  • Media Editor: Magnify the crop to fill the canvas. (79044)
  • Media Fields: Ensure the current post is always included in the initial options. (79467)
  • Media editor: Snap crop handles to source pixels. (79139)

Data Layer

  • RTC: Allow disabling collaboration by post type. (78984)
  • TextControl: Hard deprecate 40px default size. (79386)
  • View Config: Request a subset of properties with the _fields parameter. (79355)

Client Side Media

  • Media: Rename HEIC companion metadata key to source_image. (79307)
  • Upload Media: Add error 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., localized messages, and dev diagnostics. (74917)
  • Vips: Inline WASM with compact UTF-8 binary encoding instead of base64. (79188)

Dashboard

  • Boot: Run page init modules in initSinglePage. (79394)
  • Widget Dashboard: Extract into wordpress/widget-dashboard. (79268)

npm Packages

  • Grid: Prepare wordpress/grid for npm publishing as experimental 0.1.0. (79071)
  • Widget Primitives: Extract into wordpress/widget-primitives. (79134)

DataViews

  • 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. and REST Endpoint: Make them core ready. (79347)

Plugin

  • Bump minimum required WordPress version to 6.9. (79196)

Global Styles

  • Global styles revisions: Replace active text with badge. (79137)

Icons

  • Add media control and backup icons. (78987)

Block bindings

  • Block bindings : Add support to list-item. (78947)

Bug Fixes

  • Block Bindings: Preserve nested lists when binding List Item content. (79346)
  • Elements tests: Accept both md5 and sequential wp-elements-* class names. (79300)
  • Plugins API: Fix the plugin ‘render’ property validation. (79315)
  • V2 Site Editor: Fix template edit routes. (79230)
  • wp-build: Return null from getPackageInfo on resolve miss instead of throwing. (78715)

Post Editor

  • Block Fields: Fix crash resolving pattern overrides bindings. (79092)
  • DataFormPostSummary: Fix different useSelect returned values. (79478)
  • Editor: Disable saving while a non-post entity is being saved. (79069)
  • Editor: Guard PostViewLink against post types without a labels object. (79160)
  • Mark all controlled/mode block changes non-persistent. (79350)
  • Paste: move spaces out of inline formatting elements. (79637)
  • RTC: Fix code editor cursor jumping to the end on remote sync. (79005)
  • Revisions: Ignore empty []/{} 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 in the Meta diff panel. (79185)
  • Style Book: Fix crash when previewing variations for blocks without examples. (79131)

Block Library

  • Avoid dirtying related navigation entities during passive render. (79000)
  • Custom HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers.: Fix scrollbar becoming non-functional after switching tabs. (78571)
  • Gallery: Hide Navigation button type when lightbox editing is disabled. (79147)
  • Image block: Remove duplicate data-wp-bind–srcset in the lightbox overlay. (79202)
  • Image: Fix pasted images stretching when dimensions are preserved. (79067)
  • Navigation block: Fix responsive style states for typography settings. (79072)

Components

  • BoxControl: Respect a supplied placeholder via inputProps. (79466)
  • DataForm panel layout: Fix double-clicking a field row leaving the flyout stuck open. (79348)
  • DataForm: Fix panel field control overflow clipping and remove button overrides. (79275)
  • Docs: Fix typos in README files. (79331)
  • Fix: Custom HTML block preview keeps expanding when 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. uses height:100vh. (78677)

Block Editor

  • Fix potential crash from ‘useBlockToolbarPopoverProps’. (79178)
  • Fix: State styles – clear background-image when hover sets a solid background-color. (78992)
  • Grid overlays: Use canvas iframe window for viewport visibility detection. (79255)
  • RichText: Fix duplicated format wrappers when typing inside an applied format. (79091)
  • Template Part: Remove restriction on tabs / inspector fills. (79181)

Media

  • Media Editor: Fix crop canvas pinch zoom. (79332)
  • Media Editor: Keep the modal skeleton pinned in the editor flow. (79070)
  • Media editor modal: Fix keyboard resizing for locked aspect-ratio crops. (79207)

Site Editor

  • Fix admin color scheme bleeding through the mobile content scrollbar gutter. (79056)
  • Save hub button styling while saving. (79287)

Command Palette

  • Fix duplicate enqueue breaking the palette in the Site Editor. (79396)

Client Side Media

  • Vips: Bump wasm-vips to 0.0.18 for high-bit-depth AVIF decoding. (79179)

Icons

  • KSES: Allow SVG-specific presentation attributes in safe_style_css. (79172)

Style States

  • Fix responsive element styles front end output. (79135)

Data Layer

  • Core Data: Cleanup edits matching persisted record on undo/redo. (77100)

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)

Media

  • Media Fields: Avoid focus loss when detaching the current parent. (79468)

Dashboard

  • Revert H1 to “Dashboard” and fix heading hierarchy. (79251)

Components

  • UI Button: Fix loading state in forced colors. (78820)

Performance

  • Blocks: Migrate Markdown converter from showdown to marked. (77953)

Post Editor

  • Use the correct directory for recent preload improvements. (79359)

Experiments

Post Editor

  • Editor Inspector with DataForm – remove revision panel and add link. (79195)
  • al: Expand Editor Inspector: Use DataForm experiment to template parts. (79399)
  • Experimental: Expand Editor Inspector: Use DataForm experiment to templates. (76934)
  • Experimental: Preserve editor panel visibility in the DataForm post summary. (79441)

Site Editor

  • Omnipresent Toolbar: Increase top padding in 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. nav title. (79083)

Block Library

  • Unwrap Classic block 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 experiment. (78165)

Documentation

  • Clarify Core-specific steps when bumping support. (79416)
  • ConfirmDialog: Document AlertDialog as successor in Storybook. (79293)
  • Fix Small Typo in block-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. file. (79367)
  • Panel: Recommend CollapsibleCard for use outside the block inspector. (78863)
  • Storybook: Reorganize design system introduction for first touch-point usefulness. (79360)
  • Storybook: Upgrade Storybook to 10.4. (77382)
  • Theme: Add design tokens maintainer’s guide documentation. (79157)
  • Widget Primitives: Document the experiment-gated REST endpoint. (79264)
  • Widget Primitives: Make contract and story documentation host-agnostic. (79358)
  • design-system-mcp: Improve README overview and setup instructions. (79238)

Code Quality

  • Add lock-unlock route as a workspace and update dependencies. (79138)
  • CI: Disallow new dependencies in the root package.json. (78616)
  • Patterns: Add a missing gap to ‘Enable overrides’ modal. (79421)
  • Refactor npm-package-json-lint configuration and update dependencies. (79223)
  • Refactor to move ‘glob’ dependency to appropriate workspaces. (79145)
  • Refactor to rename ‘wordpress/lock-unlock’ to ‘wordpress/routes-lock-unlock’. (79163)
  • Scripts: Avoid tests getting published to npm. (79204)
  • chore: Remove wordpress/vips dependency from root. (79249)
  • chore: Remove glob from root pkg json. (79183)
  • e2e: Retry transient theme activation failures in pages spec. (79171)
  • fix: Add missing root devDependencies for WordPress packages. (79221)

Components

  • Add Emotion migration guardrails. (79442)
  • Button: Use font weight token. (79278)
  • Complete WPDS token migration for remaining borders. (79003)
  • DataForm: Align label-side gap of panel layout with regular layout. (79311)
  • Make ResizableBox children prop optional. (79370)
  • Migrate Divider to SCSS module. (79444)
  • Migrate compose package to TypeScript. (70618)
  • Popover: Align transition state styles. (79410)
  • Re-land WPDS border token migration with Emotion-safe comments. (79244)
  • Refactor Prettier configuration and update dependencies. (79219)
  • Refactor withFallbackStyles from class to function component. (78837)
  • Refactor: Move stylelint configuration and deps to tools/stylelint workspace. (79226)
  • Restore shared stylelint cursor rule. (79425)
  • Theme: Add tests for ThemeProvider and useThemeProviderStyles. (79126)
  • Theme: Drop –wpds-dimension-base from the public token surface. (79254)
  • Theme: Rename –wpds-color-stroke-focus-brand token to –wpds-color-stroke-focus. (79125)
  • Theme: Run stylelint plugin tests via the Node API. (79199)

Post Editor

  • Edit Post: Refactor MetaBoxesSection to use data 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.. (79433)
  • Edit Post: Refactor and cleanup InitPatternModal component. (79190)
  • Editor: Migrate FlatTermSelector to UI Stack component. (78659)
  • Editor: Refactor AutosaveMonitor to a function component. (79043)
  • Editor: Remove orphaned editor-help component leftovers. (79324)
  • Editor: Use Stack for post summary. (79397)
  • Fields: Move author fields for templates and template parts. (79395)
  • Validation: Add a published-dependency audit script. (79094)

Block Library

  • Blocks: Use positional sprintf placeholders in 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., comment, and search renderers. (79290)
  • Image block: Simplify metadata syncing logic by removing chained get entity calls. (79469)
  • Math format: Simplify the onClick handler and use canonical selected-text capture. (79081)
  • Navigation: Use block context to determine whether Page List is nested in Submenu. (79048)
  • Remove unused Babel optimization plugin. (79162)
  • Tabs: Pre-stabilization API cleanup and refactoring. (79337)

Data Layer

  • Core Data: Don’t use ‘useQuerySelect’ in ‘useEntityRecord(s)’ hooks. (76198)
  • Packages: Fix the published dependency surface of npm packages. (79095)

Patterns

  • Add end-to-end coverage for pattern wrapper block identity. (79462)

Media

  • Media Editor: Align crop settle state with transition completion. (79339)

Block Editor

  • Convert utility modules to TypeScript. (79323)

Site Editor

  • Patterns: Migrate modals to wordpress/ui components and fix rename input width. (79233)
  • Theme: Restore public ThemeProvider export. (79620)

Icons

  • Use snake_case file_path key in icon registry. (79100)

Tools

  • Eslint: Move deps from root into tools/eslint and packages/eslint-plugin. (79110)

Testing

  • Automated Testing: Add babel-plugin-transform-import-meta to emulate import.meta.dirname. (79362)
  • Automated Testing: Globally shim Element#getClientRects. (79353)
  • Automated Testing: Use static value for IS_GUTENBERG_PLUGIN env setup. (79201)
  • CI: Run PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher unit tests on PHP 8.4 and 8.5. (79260)
  • Components: Improve Menu unit tests performance by removing sleeps. (79295)
  • E2E: Support WordPress installs served from a subdirectory. (79166)
  • Ignore markdown linting for 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.-changelog MD files. (79392)
  • devops: Dedicated histories for different node.js versions. (79473)
  • devops: Separate environments for jest date tests. (79453)
  • wp-build: Resolve wordpress/build from __dirname in resolve-miss test. (79208)

Build Tooling

  • Build: Add GUTENBERG_CHECK_INSTALLED_DEPS env var to opt out of installed-deps check. (79068)
  • Build: Replace unmaintained release actions. (78258)
  • Build: Use GUTENBERG_TOKEN when creating the release draft. (79747)
  • Configure Flakiness.io reporting for end-to-end tests. (79173)
  • Handle WP.org SVNSVN Subversion, the popular version control system (VCS) by the Apache project, used by WordPress to manage changes to its codebase. missing 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.) warnings. (79257)
  • Remove Lighthouse 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.. (79319)
  • Remove unused build:Profile-types and component-usage-stats scripts. (79113)
  • Revert “Base Styles: Add wpds-var Sass helper for design token fallbacks”. (79429)
  • Storybook: Include playground stories and MDX in CI smoke tests. (79454)
  • design-system-mcp: Remove Storybook dependency in TypeScript types. (79132)
  • devops: Configure end-to-end report auto-upload for flakiness.io dashboard. (79411)
  • devops: Upload 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. results to flakiness dashboard. (79414)

Data Layer

  • Backport changelog and package version updates from wp/latest. (79234)

Block Editor

  • Block Supports: Relocate text and bg color controls to Typography and Background panels. (77279)

Security

  • Dependabot: Add npm entry so security update PRs can be rebased. (79076)

Various

  • View configuration endpoint: Bring back changes from core. (79438)

Components

  • Icons: Self declare color. (79320)
  • Revert “Components: Complete WPDS token migration for remaining borders”. (79243)

Plugin

  • Remove ObliviousHarmony from CODEOWNERS for packages/env. (79308)

Post Editor

  • Sync editor settings in layout effect (fixes autosave e2e). (78799)

Client Side Media

  • Reconcile feature-detection docblockdocblock (phpdoc, xref, inline docs) with implemented checks. (75851)

First-time contributors

The following PRs were merged by first-time contributors:

  • @aslushnikov: Configure Flakiness.io reporting for end-to-end tests. (79173)
  • @ishitaj34: Gallery: Hide Navigation button type when lightbox editing is disabled. (79147)
  • @lonesahilnazir: Image block: Remove duplicate data-wp-bind–srcset in the lightbox overlay. (79202)
  • @sdnunca: Plugins API: Fix the plugin ‘render’ property validation. (79315)
  • @slackticus: Build: Replace Tooling unmaintained release action (78258)

Contributors

The following contributors merged PRs in this release:

@aaronrobertshaw @adamsilverstein @adamziel @aduth @andrewserong @aslushnikov @cbravobernal @chihsuan @ciampo @CookieDarb @desrosj @dhruvikpatel18 @ellatrix @fushar @hbhalodia @himanshupathak95 @i-am-chitti @im3dabasia @ishitaj34 @jameskoster @jasmussen @jordesign @jorgefilipecosta @jsnajdr @juanfra @kushagra-goyal-14 @lonesahilnazir @Mamaduka @manzoorwanijk @maxschmeling @Mayank-Tripathi32 @mcsf @mirka @Mustafabharmal @ntsekouras @oandregal @ralucaStan @ramonjd @retrofox @rushikeshmore @SainathPoojary @saulyz @scruffian @sdnunca @shail-mehta @shekharnwagh @shimotmk @shrivastavanolo @slackticus @t-hamano @taipeicoder @talldan @tellthemachines @tyxla @USERSATOSHI

Props to @wildworks, @ramonopoly, and @akirk for reviewing and providing demo videos.

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

What’s new in Gutenberg 23.4? (June 17, 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.4?

Gutenberg 23.4 has been released and is available for download!

Gutenberg 23.4 brings resilient media uploads, continued media editor refinements, visual updates for the Site Editor and experimental dashboard, new Grid transforms, and developer-facing improvements for DataViews and design-system foundations and a whole lot more. Thanks to everyone who contributed to the release.

Table of contents

  1. Preparing WordPress for React 19
  2. The Site Editor follows your admin color scheme
  3. Media
  4. Columns and Gallery blocks can transform into grid layouts
  5. Other notable highlights
  6. Changelog
  7. First-time contributors
  8. Contributors

Preparing WordPress for 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

23.4 introduces a new experimental flag that can register version 19 of React runtime scripts: react, react-dom, and react-jsx-runtime. This gives developers a way to test plugins, themes, blocks, and editor integrations against the React 19 runtime before it becomes the default (#79077, #78685, #79142). To test, head to the experiments page /wp-admin/admin.php?page=experiments-wp-admin and activate the “React 19” experiment.

Registers React 19 as the bundled React version, replacing the default React 18 scripts.

Tips for testing: Although React 18 and 19 APIs are practically identical, there are some runtime incompatibilities that had to be resolved with an additional compatibility layer. When testing 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. or theme with the React 19 experiment, developers should pay close attention to any warnings and console errors. Test all custom adminadmin (and super admin) pages that your plugin registers and that use React. Test everything in the editor UIUI User interface that uses refs, ref callbacks, portals, or third-party component libraries. Review your build pipeline to check that usages of react/jsx-runtime link to the externalized WordPress script instead of bundling it.

The Site Editor follows your admin color scheme

The Site Editor sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. and page shell now follow the user’s WordPress admin color scheme instead of always using a fixed dark background. This brings the Site Editor chrome closer to the rest of the admin experience across color schemes (#78397).

Media

The media editor modal received a round of usability and design improvements. Editable attachment fields appear at the top of the details panel (#78896, #78792). The mobile toolbar has been updated to include aspect ratio control, zoom uses plus and minus buttons (#78935, #78928, #79011, #79024).

Client-side media processing introduced an upload progress snackbar 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, including batch upload counts (#77249). The upload queue will pause while offline, resuming automatically when the connection returns (#76765).

Block transforms can now target a specific variation of another block. In practice, this enables new transforms from Columns and Gallery blocks into a Grid variation, preserving content while changing the layout type (#78713).

Columns and Gallery blocks can transform into grid layouts

Other notable highlights

  • UltraHDR image support — UltraHDR JPEGs are detected during upload, originals are kept unmodified, and resized sub-sizes preserve the ISO 21496-1 gain map (#74873).
  • New Dashboard experience experiment — A new Events 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. for upcoming WordPress community events was added (#78553), as well as a responsive grid columns with container breakpoints (#78732).
  • DataViews configuration becomes filterable A new filterable 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. extracts entity view configuration out of the REST controller and into a reusable function (#78977).
  • Playlist block — Adds a visualization style selector for waveform styles, plus a track length setting (#76147, #78954).
  • Login/out block — This block can now be inserted inside the Navigation Submenu block (#75497).
  • Block transforms — For transforms, you can target a variation of another block (#78713).
  • Real time collaboration (RTC) reliability work — RTC shipped improvements including a separate document persistence endpoint, collaborator overlay rerenders, polling improvements, forbidden room handling, CRDT typing fixes, and undo manager fixes (#78891, #78636, #78811, #78748, #78756, #78864).

Changelog

Features

Post Editor

  • Show media upload progress in a snackbar. (77249)

Client Side Media

  • Revert client-side media processing plugin-only gate. (76751)

Enhancements

  • Tooltip migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies.: Boot consumers + shell-level Tooltip.Provider (5/5). (78692)
  • Tooltip migration: Fields + media-editor + media-fields + global-styles-ui (4/5). (78691)
  • Migrate the browserlintrc file to packages/postcss-plugins-preset. (78764)

Components

  • Combobox: Add primitives. (78399)
  • Compose: Support React 19 ref callback cleanups in useMergeRefs. (78685)
  • DataViewsPicker: Add a new pickerActivity layout. (78941)
  • Storybook: Enhance Theme Provider example with admin-ui Page. (78814)
  • Theme package: Add element size design tokens. (76545)
  • Theme: Drop density support from @wordpress/theme. (78741)
  • Theme: Increase stroke1 contrast target to 2.9. (77599)
  • Tooltip: Use md border radius for portaled popups. (78983)
  • UI: Update CSSCSS Cascading Style Sheets. cascade layers to use nesting. (78959)
  • UI: Update @base-ui/react to 1.5.0. (78448)

Block Library

  • Add playlist track length setting. (78954)
  • Blocks: Allow the Loginout block as an inner block in the Navigation Submenu block. (75497)
  • Hide paragraph Drop Cap and Fit Text controls when a state is selected. (78672)
  • Icons: Rename timeToRead to time. (78804)
  • Playlist Block: Add visualization style selector. (76147)
  • Try allowing transforms to a variation of another block. (78713)

Media

  • Media Editor Modal: Reorder details fields so the editable regular layout fields appear at the top. (78792)
  • Media Editor: Add aspect ratio control to mobile toolbar. (78935)
  • Media Editor: Refactor modal layout. (78896)
  • Media Editor: Replace the zoom slider with +/- buttons. (78928)
  • Media editor: Tweak paddings and margins. (79009)

Dashboard

  • Move layout settings to customize toolbar. (78738)
  • Opinionated grid columns with container breakpoints. (78732)
  • Promote WidgetRender into widget-primitives. (78821)
  • Replace grid row height controls with size presets. (78735)
  • Use Howdy greeting for page title. (78740)

Post Editor

  • UI: Tooltip.Provider — forward upstream closeDelay and timeout props. (78642)
  • Upload Media: Add retry with exponential backoff and networknetwork (versus site, blog) resilience. (76765)
  • Use search_columns=post_title for parent page selector 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/ searches. (78683)

Data Layer

  • RTC: Add separate doc persistence endpoint. (78891)
  • RTC: Re-render collaborators overlay when the block tree changes. (78636)

Collaboration

  • RTC: Prevent slower polling filters. (78811)
  • RTC: Return forbidden rooms together. (78748)

Site Editor

  • Apply the user’s admin color scheme. (78397)
  • Post list: Remove close button from Quick Edit drawer. (78730)

Block Editor

  • Changed labels to consistently use Patterns in favor of Block patterns. (56880)
  • List View: Remove redundant visibilityLabel compoutation. (78640)
  • Add React 19 as an experimental flag. (79077)

Icons

  • Maintain absolute stroke-width regardless of icon-size. (78774)

Font Library

  • Fix Update button staying active when changes are reverted. (78567)

Client Side Media

  • Extract entity view configuration into a filterable API. (78977)

New APIs

Extensibility

  • Extract entity view configuration into a filterable API. (78977)

Bug Fixes

  • Build: Document the 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. generated by the wp-build page templates. (78826)
  • Scripts: Use require.resolve for SVG webpack loaders to fix pnpm compatibility. (78777)
  • [Content Types]: Fix extra Page padding causing vertical scrollbar. (78661)
  • env: Replace extract-zip with adm-zip to fix hang on Node 24.16. (78828)
  • wp-build: Fix black flash on wp-admin pages before hydration. (78493)

Block Library

  • Common CSS: Avoid false-positive border-style on custom properties. (77476)
  • Fix playlist metadata edits recreating player. (78876)
  • Fix type of $block_instance parameter in block_core_image_render_lightbox(). (78790)
  • Paragraph: Strip stale block-support classes from className during align attribute migration. (78731)
  • Prevent font-size propagation in Navigation items causing em compounding. (77419)
  • ShortcodeShortcode A shortcode is a placeholder used within a WordPress post, page, or widget to insert a form or function generated by a plugin in a specific location on your site. block: Fix editor crash when selecting transform menu. (78770)
  • Writing flow: Delete at end of nested list item should merge into next block. (78742)
  • Image block: Don’t show crop icon while image is uploading. (79103)

Media

  • Media Editor: Fix media editor sidebar close button label. (78895)
  • Media Editor: Fix sidebar overflowing the modal between the small and medium breakpoints. (78931)
  • Media Editor: Keep crop handles operable on large images. (79011)
  • Media Editor: Remove lag when toggling the sidebar. (79024)
  • Media Editor: Small tweak to gutters. (79168)

Components

  • Button.Icon: Fix clipped icons. (78614)
  • Compose: Fix SSR crash in useMediaQuery and useViewportMatch. (78725)
  • ColorPalette: Don’t render when custom colors disabled and no colors passed. (72402)
  • ui/AlertDialog: Fix footer layout style override. (78953)

Global Styles

  • Elements: Align class name parsing with custom CSS implementation. (79023)
  • Elements: Guard against non-string className in render 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.. (78841)

Block Editor

  • Inserter: Use forwardRef for refs. (79006)
  • Preserve nested list when deleting a selection across sibling list items. (78776)

Client Side Media

  • Media: Skip cross-origin isolation on the classic-theme site editor home route. (78404)
  • Upload Media: Gate very large images out of client-side processing. (78949)

Plugin

  • Fix Gutenberg plugin assuming its directory is named “gutenberg”. (78705)
  • Fix experiments page form layout with box-sizing and width. (78910)

Data Layer

  • RTC: Fix CRDT deferred updates resulting in jumbled typing. (78756)
  • RTC: Fix Yjs undo manager to update UI state when undo stack changes. (78864)

Post Editor

  • Editor: Fix keyboard activation of the template actions preview. (78641)
  • Notes: Show default 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. in the indicator when user avatars are disabled. (78849)

Connectors screen

  • Fix: Block auto-complete for AI API Keys in Connectors. (78946)

Icons

  • Revert “Icons: Maintain absolute stroke-width regardless of icon-size (#78774)”. (78854)

Dashboard

  • Fix Add widget error on non-secure HTTPHTTP HTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. origins. (78850)

Block API

  • Block Visibility: Keep hide-everywhere working after a block opts out of visibility support. (78780)

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)

  • Boot navigation: Wrap items in a list role for valid listitem semantics. (78829)

Block Editor

  • Inserter: Fix error being thrown for spoken message when inserting default/direct block. (79004)

Block Library

  • Navigation Link: Fix duplicate block htmlHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. attributes in editor. (78973)

Patterns

  • Fix focus loss when closing the Create pattern dialog from the block toolbar. (78957)

Font Library

  • Fix focus issue when navigating. (78671)

Performance

  • Add Events widget. (78553)

Experiments

Dashboard

  • Add Events widget. (78553)
  • Event widget iteration. (78815)
  • Hello Dolly. (78648)
  • Show ghost widgets visually & allow easy removal. (78502)

Documentation

  • Added Missing Global Documentation. (78997)
  • Build: Update changelog. (78807)
  • DataViews: Add DataViews components to components manifest. (78960)
  • Docs: Auto-generate per-block API reference pages from block.jsonJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML.. (77612)
  • Docs: Fix stale, incorrect, or missing documentation. (78686)
  • Docs: Remove stale mobile references from tooling and primitives documentation. (79041)
  • Fix wordpress/data README fragment links. (78866)
  • Remove orphaned README files for deleted native-only components. (79035)

Code Quality

  • Codemods: Remove one-shot Tooltip migration codemod. (78669)
  • Docs: Fix big_image_size_threshold xrefxref (php-xref, phpdoc, inline docs) typo. (76299)
  • Format Library: Migrate to recommended @wordpress/ui components. (79059)
  • Framework: Remove invalidinvalid A resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid. stale nested npm package references. (79014)
  • Make @wordpress/nux a no-op compatibility package. (77773)
  • Remove migrated dependencies from root package.json. (78813)
  • Scripts: Remove obsolete bin/setup-local-env.sh. (78871)
  • Storybook: Declare workspace dependencies for theme example story. (78979)
  • Tools: Ban classnames via Syncpack. (79061)
  • Tools: Migrate docs/tool into tools/docs workspace. (78870)

Block Library

  • Fix sprintf format specifiers in post-date and read-more blocks. (78933)
  • Fix: Escape URLs in block render functions using esc_url(). (78912)
  • Refactor workspace configuration for Babel dependencies. (78974)
  • Revert navigation morph & playlist commits pushed directly to trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision.. (78857)
  • RichText: Remove dead native-only prop filtering. (79037)

Data Layer

  • Compose: Fully deprecate the ‘pure’ HoC. (78674)
  • Media: Move client-side media compat file to wordpress-7.1 directory. (78852)
  • Packages: Declare missing @types/react dependency. (78882)
  • Refactor: Remove jest/test deps from root package.json. (78801)
  • Remove React Native implementation, framework, and dependencies. (78747)

Post Editor

  • Editor: Refactor ‘PostPublishButton’ into function component. (78737)
  • Editor: Remove dead native guard in block removal warnings. (79039)
  • Post 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.: Upgrade diff from v4 to v8. (77992)
  • TypeScript: Migrate server-side-render package to TS. (71383)

Components

  • wordpress/theme: Deduplicate addFallbackToVar helper. (78666)
  • Navigable Container: Hoist getFocusableContext out of the component. (79029)
  • Remove dead native code branches from Platform usages. (79031)
  • refactor: Move React dependencies to workspace configuration and upda…. (78981)

Dashboard

  • Rename WidgetChrome to DashboardWidgetChrome. (78751)
  • Rename widget-types to widget-primitives and consolidate the widget contract. (78749)
  • Replace surface with host in widget contract documentation. (78778)

Block Editor

  • Refactor Inserter to a function component. (78766)
  • Rich text: Use subscribeDelegatedListener for element event listeners. (79047)

Site Editor

  • theme/ThemeProvider: Rename color.bg prop to color.background. (79007)

Tools

  • Add copilot-instructions.md file. (78584)
  • Remove orphaned mobile 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. report issue template. (79038)
  • Update AGENTS.md to mention additional pitfalls. (78718)
  • Update CODEOWNERS for tooling directories. (78874)

Build Tooling

  • Build Scripts: Fix Windows path handling in dev script. (78939)
  • CI: Remove Validate Gradle Wrapper workflow. (79030)
  • CI: Skip plugin repo release when SVNSVN Subversion, the popular version control system (VCS) by the Apache project, used by WordPress to manage changes to its codebase. 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.) already exists. (78476)
  • Lint dependency version consistency with Syncpack. (77950)
  • Release: Drop mobile-specific changelog omit rules. (79042)
  • Remove platform-docs Docusaurus site. (79034)
  • Skip including inactive or experimental routes when building for WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. (76715)
  • feat: Migrate performance results to tools release. (78761)
  • Add more React internals polyfills. (79142)

Testing

  • Abilities: Add validation tests pinning behavior for WP-specific schema keywords. (78783)
  • CI: Suppress lint:Js warnings on static checks. (79025)
  • Try omit-unchanged for compressed-size-action. (78976)
  • e2e-test-utils-playwright: Start transpiling again, but faster. (79026)

Data Layer

  • @apermo: Docs: Fix big_image_size_threshold xref typo. (76299)

First-time contributors

A call out and big welcome to first-time contributors, who merged the following PRs:

  • @apermo: Docs: Fix big_image_size_threshold xref typo. (76299)
  • @colinduwe: Changed labels to consistently use Patterns in favor of Block patterns. (56880)
  • @ekamran: Fix wordpress/data README fragment links. (78866)
  • @i-am-chitti: Tools: Migrate docs/tool into tools/docs workspace. (78870)
  • @Kgupta62: Common CSS: Avoid false-positive border-style on custom properties. (77476)
  • @macayu17: Button.Icon: Fix clipped icons. (78614)
  • @n8finchColorPalette: Don’t render when custom colors disabled and no colors passed. (72402)
  • @simondud: Fix: Block auto-complete for AI API Keys in Connectors. (78946)

Contributors

Gutenberg 23.4 was brought to you by the following contributors:

@aaronrobertshaw @adamsilverstein @aduth @alecgeatches @amitraj2203 @andrewserong @apermo @ciampo @colinduwe @desrosj @ekamran @elazzabi @ellatrix @fushar @gziolo @hbhalodia @hi0001234d @himanshupathak95 @i-am-chitti @im3dabasia @Infinite-Null @itzmekhokan @jameskoster @jasmussen @jsnajdr @juanfra @juanmaguitar @Kgupta62 @kushagra-goyal-14 @macayu17 @Mamaduka @manzoorwanijk @mikachan @mirka @Mustafabharmal @n8finch @ntsekouras @oandregal @paulopmt1 @ramonjd @retrofox @sarthaknagoshe2002 @scruffian @shail-mehta @shekharnwagh @simison @simondud @sirreal @t-hamano @talldan @tellthemachines @torounit @tyxla @USERSATOSHI @westonruter @xavier-lc @yogeshbhutkar

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

Announcing a collaborative editing outreach effort for 7.1

A new dedicated outreach effort is underway for WordPress 7.1 to ensure collaborative editing gets the collaborative testing it needs. Please join #collaborative-editing-outreach in WordPress SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/ (steps to sign up here) if you:

  • Want to use collaborative editing on a regular basis.
  • Enjoy being an early adopter.
  • Feel comfortable using the latest version of the GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ 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..
  • Have the ability to participate through the 7.1 cycle (at least until 8/18/26).

Thanks in advance for helping shape the future of this feature.

Why now?

Collaborative features require an inherently collaborative way of testing. For the 7.0 cycle, a lot of time and effort was spent with more developer oriented testing, enterprise level testing, and deterministic testing with hosts. While incredibly useful, this effort broadens the scope of testing by bringing in passionate real-world early adopters across a range of hosting environments and backgrounds. For collaborative editing to truly succeed, it’s important to go beyond just getting stability, performance, and reliability right.

In running the FSE Outreach Program, I saw how powerful it was to have a dedicated space for folks to regularly interact with those building the feature for a faster feedback loopLoop The Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. https://codex.wordpress.org/The_Loop in the right direction. After the hard decision was made to remove collaborative editing from WordPress 7.0, the aim is that ahead of 7.1 the outreach program model provides enough structure to create meaningful feedback without being too overbearing or exclusive considering the timeframe. This was first discussed in #feature-realtime-collaboration before being brought to project leadership. 

Who can join?

Anyone is welcome to join #collaborative-editing-outreach! Real Time Collaboration is included in the latest versions of Gutenberg, and can be enabled under `Settings > Writing` in the dashboard when the Gutenberg plugin is active.

It’s critical people from across different hosting environments and use cases are a part of this, from nonprofits to small businesses to newsrooms. If you have a large need for collaborative editing, enjoy sharing feedback, and are comfortable with using the latest Gutenberg plugin, this is an awesome way to contribute to the WordPress project. Test team badges will be given out at the end. 

More about the effort

The aim is to engage passionate real-world early adopters across a spread of hosting environments in a dedicated slack channel throughout the release process to ensure a tight feedback loop for both bugs and feature requests. This will take a simple form: a dedicated slack channel (#collaborative-editing-outreach) where folks can get set up with collaborative editing, share ongoing feedback, and those working on the feature can open bugs/make fixes/share improvements/etc. Compared to the FSE Outreach Program, there won’t be ongoing themed calls for testing since they would end up being very repetitive. Instead, key updates will be shared in the slack channel to help inform folks as new fixes or features are added to give feedback on them. The latest updates for collaborative editing will be delivered through the Gutenberg plugin which is why using the latest version is a requirement for this channel. As discussed here, a featured plugin isn’t currently feasible. 

Tied to this, outreach will be done to hosting companies to attempt to recruit participants for this outreach program. This is being done to help get as many different environments as possible represented. 

Currently, @amykamala, @greenshady, and I will be acting as the small crew driving this forward in the slack channel, alongside the developers and designers working on this feature. 

Questions? Comments? Concerns?

Please leave them below. Thanks for engaging.

Thank you to @amykamala @greenshady @maxschmeling for reviewing this post. 

#7-1, #collaboration, #feature-real-time-collaboration, #gutenberg, #phase-3

What’s new in Gutenberg 23.3? (03 Jun)

“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.3?

Gutenberg 23.3 has been released and is available for download!

This release ships the new modal-based media editor as the default cropping experience, advances the experimental customizable WordPress dashboard with five new widgets and significant layout polish, and upgrades the editor to ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org 19. Responsive styles now extend to individual 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. instances, and Notes blocks gain support for multiple discussion threads. Other changes include DataViews adopting @wordpress/theme design tokens, 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) refinements across 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. interface, continued Real-time Collaboration reliability fixes, and broader preload coverage for faster post editor loads.

Table of contents

Media editor modal becomes the default crop experience

The Media editor modal replaces the existing inline cropping tool in the Block Editor. The modal pattern keeps the familiar Crop button entry point, and brings freeform and aspect-ratio cropping, flip, fine-grained and snap rotation, and metadata editing into one dedicated workflow. (78653)

Experimental customizable WordPress dashboard

The experimental customizable WordPress dashboard — a 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.-based surface available for testing behind an experimental flag in the Gutenberg 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., allowing users to add, move, resize, and rearrange widgets. It introduces a complete set of widgets — Welcome, Quick Draft, Activity, Site Health, Site Preview, and more — that automatically adapt to different tile sizes. You can fully customize your dashboard by choosing which widgets to display, arranging the layout, adjusting the number of columns, and resizing each widget’s width and height. (77616)

This change is experimental; to give it a try, first go to WP-Adminadmin (and super admin) > Gutenberg > Experiments and enable “New Dashboard experience”.

Responsive styles for block instance

Responsive styles for block instances (78384) building on 23.2’s responsive Global Styles, the Block Style States 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. extends to the per-instance level (76491). Block instance responsive styles include layout styles (78543) and an Inspector that shows only the relevant settings when a style state is selected. (78280) (78658, 78763, 78670, 78709)

Other Notable Highlights

  • Real-time Collaboration improvements — Notes blocks support multiple threads (75147), better handling of oversized payloads (>16 MiB) and connection-loss states (77724), protocol-mismatch error handling (76991), fewer refresh storms when peers edit (78483), and a mobile fix for Edit/Join row actions in the post list (78597).
  • DataViews adopts @wordpress/theme design tokens (75204) — the first significant in-codebase adoption of the design tokens package. A new “Introduction” Storybook page has been added for the tokens themselves (78449).
  • Accessibility wins — Image block gains a “Mark as decorative” toggle (78064); Revisions diff markers get higher-contrast stripes and scale with user text-size preferences (78473, 78273, 78393); Breadcrumbs block hides separators from screen readers (78524).
  • Performance — Optimized block-supports CSSCSS Cascading Style Sheets. class rendering (78217), lazy-fetched user pattern categories (78568), shared window listeners across block instances (78310), shared MediaQueryList listener in useMediaQuery (78297), and broader preload coverage on edit-post load (78508, 78565).
  • Components migrations — Continued migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. of __experimentalText, __experimentalHStack, and __experimentalVStack to their stable @wordpress/ui counterparts (78155); Tooltip migration progressed across block-editor, editor, and DataViews consumers (78411, 78466, 78470).
  • React 19 upgrade (61521) — Gutenberg is now built against React 19. Most code keeps working unchanged; plugin authors using removed legacy patterns (string refs, ReactDOM.render fallbacks, defaultProps on function components) should review React’s upgrade notes.

Changelog

Features

Post Editor

  • Notes: Support multiple note threads per block. (75147)

Enhancements

Components

  • DataViews: Adopt @wordpress/theme design tokens. (75204)
  • Draggable: Scope the clone’s fallback z-index to non-slot placements. (78354)
  • Navigation: Hard deprecate component. (78529)
  • Overlays: Extend positioner slot pattern to Popover, Select, Autocomplete. (78168)
  • Tabs, TabPanel: Align styles with wp-ui. (78418)
  • Tooltip migration: Dataviews consumers (3/5). (78470)
  • UIUI User interface Button: Optimize overflow styles. (78300)
  • UI Card: Full bleed as 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. hero image and content cover. (77856)
  • Visually align Notice from @wordpress/components with Notice from @wordpress/ui. (78231)
  • [components] Draggable: Migrate clone wrapper to wp compat overlay slot. (78183)
  • [ui] Add internal wp compat overlay slot helper. (77851)
  • [ui] Autocomplete: Default portal container to the wp compat overlay slot. (78375)
  • [ui] Select: Default portal container to the wp compat overlay slot. (78372)
  • [ui] Tooltip: Default portal container to the wp compat overlay slot. (78095)
  • design-system-mcp: Add server instructions for client usage guidance. (78186)
  • design-system-mcp: Update get_components to optionally support multiple names. (78185)

Block Editor

  • Add support for layout responsive styles. (78543)
  • Add support for pseudo states on single block instances. (76491)
  • Block Inserter: Animate inserter button icon to signal open state. (78306)
  • Hide block variation selector when style state is selected. (78658)
  • Hide wrap by default in flex layout panel. (78269)
  • Integrate slug-based color selection in color panel. (78048)
  • Migrate pattern list item titles to Text from @wordpress/ui. (77656)
  • Refactor: Add extractPresetSlug as a generalized function to extract slugs. (78328)
  • Tooltip migration: Block-editor + block-directory consumers (1/5). (78411)
  • Validate additional CSS on mount. (78682)

Block Library

  • Block Style States: Show only supported inspector controls when selecting a style state. (78280)
  • Columns: Remove redundant Skip option from layout picker. (78405)
  • Hide Cover overlay controls for viewport states. (78763)
  • Hide image dimension tools when a state is selected. (78670)
  • Home Link: Add missing controls. (76672)
  • Move Layout panel into Styles tab so it sits next to Dimensions. (77922)
  • Responsive block instance styles. (78384)

Post Editor

  • Collab 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.: Swap near-identical pink for red in 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. palette. (78299)
  • Media Editor: Make the modal the default crop experience. (78653)
  • RTC: Provide PROTOCOL_MISMATCH error handling. (76991)
  • Tooltip migration: Editor + edit-post + edit-site consumers (2/5). (78466)

Media

  • Image cropper: Round zoom control values and display as percentages. (78757)
  • Media Editor Modal: Update the rotation ruler to use a vertical line marker. (78704)
  • Media Editor: Remove resize handles toggle from crop panel. (78758)

Dashboard

  • Add custom widget dashboard resize handle styling. (78236)
  • Dashboard Widgets: Adapt Quick Draft to its tile size with a recent drafts list. (78572)
  • Widget dashboard: Skip tile hover elevation while resizing. (78234)

Font Library

  • Clarify active variant state in Library tab. (78501)

Guidelines

  • Refine access policy. (78296)

Connectors

  • Restyle AI plugin callout with pastel background and beak. (78243)

Client Side Media

  • Add dimension validation to sideload endpoint. (74903)

Data Layer

  • Upgrade to React 19. (61521)

Bug Fixes

Components

  • @wordpress/ui: Compat overlay slot — viewport-sized containing block. (78441)
  • DataViews: Fix wrapper height resolution in flex layouts. (76945)
  • DataViewsPicker Table: Fix first-click row selection. (78423)
  • Fix FormTokenField validation preventing default behavior. (77181)
  • IconButton: Fix focusableWhenDisabled default. (78526)
  • Popover: Don’t close when focus moves into the @wordpress/ui compat overlay slot. (78407)
  • UI Button: Fix disabled cursor style. (78479)
  • UI: Fix item popup typography. (78403)
  • UI: Update Autocomplete clear disabled state. (78520)
  • useCopyToClipboard: Always call onSuccess callback. (78387)
  • useDialog: Handle Escape via React onKeyDown so cascade works through portals. (78433)

Block Library

  • Block/Tabs: Fix editor dirty state on reload by removing unnecessary mount-time attribute init. (78339)
  • Breadcrumbs block: Hide separator from screen readers. (78524)
  • 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. Date’ when clicking on Now in DateTimePicker on Date Block. (78284)
  • Fix Tabs block losing added tabs when the editor is reopened. (78250)
  • Fix: Discard unsaved HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. block changes on cancel. (78580)
  • Image: Preserve width/height when converting Classic blocks to blocks. (78610)
  • Navigation Link: Preserve custom labels during link updates. (77186)
  • Navigation: Restore block_core_navigation_submenu_render_submenu_icon() as deprecated shim. (78484)
  • Prevent images from appearing squished when only one dimension is set. (70575)

Post Editor

  • Editor: Disable Visual Revisions when classic 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 are present. (78249)
  • Editor: Fix Visual Revisions meta keys overlap. (78156)
  • Editor: Use _n() for revisions count aria-label. (78382)
  • Fix image upload crashes. (76707)
  • Fix: Register user-defined taxonomies after user-defined post types. (78497)
  • Fix: Show collaborators when the top toolbar is active. (78049)
  • Global styles revisions: Ensure stylebook shows revision previews. (78490)
  • Script Loader: Defer single-page admin init until DOMContentLoaded (TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. #65103). (78136)
  • Upload Media: Render srcset on the front end for client-side-media uploads. (78359)

Block Editor

  • Block Inspector: Hide Styles tab in preview mode. (78230)
  • Block Toolbar: Prevent position shifts when using mover control. (77798)
  • Fix inconsistencies in feature selector processing part 2: Pseudo block instances. (78326)
  • Fix: Properly merge schema during mergeSchemas part in getBlockContentSchemaFromTransforms. (70615)
  • List View: Place caret at end of block when selecting. (76797)
  • Reset zoom level on component unmount. (69087)
  • Unset grid span defaults with viewport states enabled. (78709)

Data Layer

  • CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Data: Avoid duplicate ID-less entity permission requests. (78262)
  • Fix: Disable collab sync when incompatible meta boxes are present. (78145)
  • RTC: Fix cursor awareness / presence 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. in nested rich text elements. (77673)
  • RTC: Fix block refresh on every update when a peer edits within the code editor. (78483)
  • RTC: Sync the content even if it’s a function. (76796)
  • Real-time Collaboration: Use minimal save payload in persistCRDTDoc. (77050)

Media

  • Media Editor Modal: Only show the crop active state when using keyboard. (78266)
  • Media Editor: Anchor cursorless zoom (slider/keyboard) at crop center. (78385)
  • Media Editor: Enforce a minimum crop size in the image editor. (78268)
  • Media Editor: Scope keyboard shortcuts to the modal. (78322)
  • Media Fields: Fix filename truncation with Tooltip. (78453)

Collaboration

  • RTC: Fix Edit/Join row action invisible on mobile in post list. (78597)
  • RTC: Fix connection lost error modal when /wp-json/wp-sync/v1/updates exceeds 16 MiB limit. (77724)

Global Styles

  • Fix block preview for responsive style states. (78538)
  • Fix inconsistencies in feature selector processing part 1: Global styles. (78276)

Client Side Media

  • Upload Media: Stop propagating -scaled to sub-size filenames. (78038)
  • VIPS: Remove dead batchResizeImage and vipsBatchResizeImage exports. (77975)

Paste

  • Keep <img> inside <a> when pasting plain-text HTML. (78015)

Testing

  • Tests: Temporarily disable REST index output-format assertions pending Core fix. (78788)

Accessibility

Post Editor

  • Image Editor: Focus return after closing image crop modal. (78711)
  • Revisions: Increase diff marker stripe contrast to 75% primary color proportion. (78473)
  • Revisions: Scale diff markers width with user text-size preference. (78273)
  • Revisions: Use CSS outline as secondary non-color indicator for diff blocks. (78393)

Block Library

  • Image block: Add “Mark as decorative” toggle for accessibility. (78064)
  • Image: Fix missing aria-label on lightbox trigger button for single images. (78426)

Performance

  • Block supports: Optimize custom CSS class rendering and parsing. (78217)
  • Fix performance tests when running against old reference commit. (78288)

Post Editor

  • Edit Post: Hoist setupEditor to run before root.render. (78581)
  • Edit Post: Consume preload cache before React mount. (78508)
  • Editor / Block Editor: Lazy-fetch user pattern categories. (78568)
  • Post Taxonomies: Drop redundant per_page: -1 from 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. queries. (78569)

Components

  • Blocks: Share window listeners across instances (block props, rich text, …). (78310)
  • Compose: Share a single change listener per MediaQueryList in useMediaQuery. (78297)
  • Compose: Simplify subscribeDelegatedListener root detection. (78492)

Data Layer

  • Core Data: Share parsed blocks cache between resolver and editor hook. (78026)
  • Edit Post Preload: Cover remaining bound GET/OPTIONS requests on load. (78565)

Commands

  • Core Abilities: Defer fetch until workflow palette opens. (78316)

Experiments

Dashboard

  • Add Quick draft widget. (78408)
  • Add chrome UI tools to widgets. (78060)
  • Add command palette commands. (78429)
  • Add dashboard Activity widget. (78552)
  • Add dashboard News widget. (78554)
  • Add dashboard Site Health widget. (78555)
  • Add dashboard Site Preview widget. (78556)
  • Add elevation to widget actionable area. (78563)
  • Add missing package file to the Site Preview widget. (78583)
  • Add Welcome dashboard widget with adaptive layout and content. (78461)
  • Add tooltip explaining disabled menu item. (78344)
  • Contain widget body within its tile to prevent page overflow. (78627)
  • Dashboard Widgets: Add content-bleed presentation variant. (78491)
  • Fix widget rendering on the masonry grid. (78645)
  • Full-size widget inserter. (78390)
  • Grid: Animate sibling tiles when layout reflows during drag or resize. (78395)
  • Grid: Animate tile removals. (78542)
  • Grid: Don’t allow resizing tile beyond min row height or column width. (78402)
  • Grid: Hide resize handles and actions while a tile is resizing. (78391)
  • Grid: Make resize overlay line solid. (78340)
  • Grid: Resize widget and snap resize-placeholder. (78389)
  • Grid: Tiled grid overlay. (78373)
  • Increase widget spacing with --wp-grid-gap. (78439)
  • Layered grid columns and visual layout model picker. (78364)
  • Layout settings drawer with grid/masonry models. (78202)
  • Migrate Layout settings drawer to DataForm. (78336)
  • Mobile improvements. (78522)
  • Per-instance widget settings drawer. (78465)
  • Polish dashboard drag preview motion, elevation, and drop exit. (78348)
  • Prevent pointer events in widget selection. (78681)
  • Quick Draft widget: Layout, empty state, and style refinements. (78601)
  • Refine widget actionable area toolbar styling. (78578)
  • Restrict widget icons to just SVGs (no Dashicons). (78440)
  • Round widget drag radius. (78292)
  • Scale widget picker previews to fill their card. (78602)
  • Seed default layout with bundled widget instances. (78622)
  • Small changes to header. (78513)
  • Tune default grid settings and starter layout. (78633)
  • Use Page hasPadding prop for content spacing. (78469)
  • Use fully-specified fast-deep-equal import. (78660)
  • Welcome widget: Add a subtle shine to the version digits. (78626)
  • Welcome widget: Draw the version number in the banner. (78611)
  • Widget Types: Declarative presentation hint (full-bleed support). (78209)
  • Widget Types: Generic attribute schemas. (78247)
  • Widgets: Declare dependencies in a per-widget package.json. (78463)

Media

  • Extract media editor crop options hook. (78263)
  • Extract media editor save hook. (78225)
  • Media Editor Modal: Add custom datetime view for the sidebar to ensure minimal display of dates. (78265)
  • Media Editor Modal: Fix unexpected tab stop on date fields in the Details sidebar. (78454)
  • Media Editor Modal: Tighten labels for crop handles toggle. (78703)
  • Media Editor Modal: Try placing the save and cancel buttons in the footer. (78708)
  • Media Editor: Harden cropper math layer against non-finite inputs. (78321)
  • Media Editor: Make zoom floor coverage-aware instead of fixed at 1x. (78222)
  • Media editor: Show live crop dimensions during gesture. (78221)
  • Refactor media editor crop state into composite reducer. (78480)

Block Library

  • Classic Block: Use get_post() in wp_declare_classic_block_necessary. (78613)
  • Media: Add undo snackbar for media editor image edits. (78425)
  • Update Classic block deprecation notice. (78445)

Post Editor

  • Add default term for taxonomies. (78233)
  • Add experiment to show admin bar in Post and Site Editor. (77964)
  • Media Editor Experiments: Tidy up by removing old pathways to the media editor experiment. (78489)

Block Editor

  • Grid: Fix immutability lint warning for React hook. (78431)
  • Grid: Visualize columns without outline. (78281)

Documentation

  • Docs: Add Workspace Development guide. (78615)
  • 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. editor migration guide for WordPress 7.0/7.1. (78401)
  • Docs: Update media editor documentation. (78617)
  • Theme: Add Tokens “Introduction” Storybook page. (78449)
  • Theme: Move token structure descriptions into tokens document. (78438)
  • UI Icon: Mark as recommended. (78365)
  • Update plugin release documentation and edit for clarity. (78537)
  • [ui] Trim verbose comments and prose around the compat overlay slot. (78356)

Code Quality

  • Migrate create-test-block.sh to @wordpress/validation-tools workspace. (78665)

Components

  • Add Badge text overflow end-to-end story. (78589)
  • DataViews: Inline z-index values. (78315)
  • Menu: Reduce flaky Space key test scope. (78246)
  • Modal: Inline header z-index. (78362)
  • Move @emotion deps out of root package.json. (78687)
  • RangeControl: Remove erroneous icon prop from web types. (78444)
  • Remove deprecated __experimentalApplyValueToSides export. (78528)
  • Routes: Enforce logical CSS properties in stylesheets. (78291)
  • Storybook: Add text overflow end-to-end stories. (78256)
  • Theme: Remove and prevent dependency grouping comments. (78573)
  • Theme: Update color space registration to avoid side effects. (77653)
  • UI Autocomplete: Fix prop types. (78450)
  • UI Tabs: Recommend component for use. (78442)
  • UI: Add Button variant states end-to-end story. (78634)

Post Editor

  • Deduplicate useGlobalStyles hook code. (78577)
  • Editor: Inline text editor toolbar z-index. (78309)
  • REST: Guard setAccessible() behind PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher < 8.1 in block-editor settings controller. (78478)
  • Use WCIcon alias for component Icon imports. (78366)
  • Use WCTooltip alias for component Tooltip imports. (78396)

Block Editor

  • Fix additional issues with block registration types. (78416)
  • Migrate __experimentalText, __experimentalHStack, and __experimentalVStack to Text and Stack. (78155)
  • Refactor: useMemo on elements and useCallback is back on resetAllFilter. (78329)
  • Simplify component ESLint rules and extend to routes/widgets. (78519)
  • Update the BlockAttribute typedef to allow for multi-type attributes. (78517)

Guidelines

  • Add data-slug attribute to settings list items. (78676)

Block Library

  • ESLint: Restrict deprecated __nextHasNoMarginBottom prop. (78579)

Media

  • Image editor: Remove unnecessary __nextHasNoMarginBottom prop. (78530)

Plugin

  • Connectors: Move from experimental to wordpress-7.0 compat. (78228)

Data Layer

  • Make RTC-related APIs private. (78097)

Tools

  • ESLint: Support private API component denylist. (78451)

Testing

  • Automated Testing: Allow console logging in all bin, scripts, tools files. (78312)
  • Automated Testing: Enable concurrency for ESLint. (78360)
  • Automated Testing: Fix and use built-in mechanism for flagging unused disables. (78313)
  • Automated Testing: Skip ESLint for bundled library code via ignore patterns. (78314)
  • e2e-test-utils-playwright: Add src to published NPM files. (78847)
  • Fix flaky end-to-end test with DataView keyboard navigation. (78503)
  • Fix flaky media upload save lock test. (78544)
  • Fix flaky navigation frontend submenu end-to-end test. (78270)
  • Fix flaky tests (publish-panel.spec.js focus assertion before panel close completed). (77893)
  • Guard PHP 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. to avoid failures on old WP versions. (78547)
  • Perf tests: Capture loading durations before stopTracing(). (78294)
  • Perf tests: Disable Playwright tracing to remove snapshot overhead. (78295)
  • Perf tests: Save Chromium traces as CI artifacts. (77974)
  • Performance Tests: Log timestamps, optimize build overhead. (78237)
  • Performance tests: Fix template click, delete pages at startup. (78193)
  • Post Editor perf test: Remove unwanted actions from timed area. (78323)
  • Preload: 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. user global styles entry for classic themes on WP 6.9. (78546)
  • RTC: Add command to run in WebSockets mode. (78363)
  • Tests: Add timezone-mock to test/unit/package.json. (78277)
  • Tests: Add post-editor preload spec. (78318)
  • Tests: Preload spec — track query strings and use an existing draft. (78343)
  • WP Editor Meta Box e2e: Wait for TinyMCE init. (78631)

Build Tooling

  • (Release): Migrate bin/plugin into @wordpress/release-tools workspace. (77695)
  • Add cherry-pick script and update release tools in package.json. (78560)
  • Build Tools: Move build scripts to @wordpress/build-scripts workspace package. (78509)
  • Build: Detect stale node_modules at build/dev time. (77995)
  • Build: Remove custom job_status output in favor of native result. (78208)
  • Dashboard: Forbid non-module stylesheets in experimental, new widgets. (78496)
  • Fix path for license type detection in license.js. (78245)
  • Improve GHCR asset publishing and expand trigger events to include pull_request. (78211)
  • Move PHP Sync Issue Generator file to @wordpress/release-tools. (78456)
  • Publishing packages: Defer pushing tags until lerna publish succeeds. (78253)
  • Refactor validation tools and update related scripts. (77522)
  • Remove commander.js file from the project. (78400)
  • Remove dependency used for counting available CPUs. (78593)
  • Several improvements to the Dependabot configuration. (78536)
  • Stylelint: Add logical properties exemptions. (78252)
  • Update browserslist. (78840)
  • Widgets: Add TypeScript project configuration. (78467)
  • wp-build: Replace getter-based exports with data properties. (78303)

First-time contributors

The following PRs were merged by first-time contributors:

  • @allilevine: DataViews: Fix wrapper height resolution in flex layouts. (76945)
  • @CookieDarb: Build: Remove custom job_status output in favor of native result. (78208)
  • @danluu: RTC: Fix connection lost error modal when /wp-json/wp-sync/v1/updates exceeds 16 MiB limit. (77724)
  • @ecairol: Navigation: Restore block_core_navigation_submenu_render_submenu_icon() as deprecated shim. (78484)
  • @Raxen001: Migrate __experimentalText, __experimentalHStack, and __experimentalVStack to Text and Stack. (78155)
  • @rushikeshmore: Components: Fix FormTokenField validation preventing default behavior. (77181)
  • @SteveJonesDev: Image block: Add “Mark as decorative” toggle for accessibility. (78064)
  • @taipeicoder: RTC: Fix Edit/Join row action invisible on mobile in post list. (78597)
  • @yyppsk: Navigation Link: Preserve custom labels during link updates. (77186)

Contributors

The following contributors merged PRs in this release:

@aagam-shah @adamsilverstein @aduth @alecgeatches @allilevine @andrewserong @chriszarate @chubes4 @ciampo @CookieDarb @danluu @DarkMatter-999 @desrosj @dhruvikpatel18 @dpmehta @ecairol @ellatrix @fushar @gziolo @himanshupathak95 @im3dabasia @Infinite-Null @ingeniumed @jameskoster @joshualip-plaudit @jsnajdr @juanfra @karmatosed @kushagra-goyal-14 @lschuyler @MaggieCabrera @Mamaduka @manzoorwanijk @Mayank-Tripathi32 @mirka @Mustafabharmal @ntsekouras @paulopmt1 @prasadkarmalkar @R1shabh-Gupta @ramonjd @Raxen001 @retrofox @rushikeshmore @scruffian @shrivastavanolo @simison @SteveJonesDev @t-hamano @taipeicoder @talldan @tellthemachines @tyxla @USERSATOSHI @westonruter @yuliyan @yyppsk

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

Media Editor Modal: call for testing

The addition of a free-form image cropper 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 has been a long-standing feature request. 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 that integrates this and other image editing features in a “Media Editor Modal” is ready for testing and feedback.

What is it?

The Media Editor Modal replaces the existing inline cropping tool in the Block Editor. The modal pattern keeps the familiar Crop button entry point, and brings freeform and aspect-ratio cropping, flip, fine-grained and snap rotation, and metadata editing into one dedicated workflow.

Under the hood, the modal consumes a coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. collection custom tools and components that will eventually live in a WordPress package. This will remove the reliance on third-party cropping libraries.

Why the change?

Image cropping in the Block Editor hasn’t changed much since its introduction. The existing inline image cropper is built on top of the react-easy-crop library. This implementation has a couple of constraints:

  • it’s limited by what’s achievable in the editor canvas and block toolbar, and
  • the library itself has a narrow set of features.

Why build our own library? Well-maintained, open sourceOpen Source Open Source denotes software for which the original source code is made freely available and may be redistributed and modified. Open Source **must be** delivered via a licensing model, see GPL. alternatives that do most of what users expect are few and far between. Furthermore, there’s a general preference for a WordPress-native surface that:

  • has all the features we want “out of the box” such as aspect ratios, freeform cropping handles, intuitive zooming, flip and rotation,
  • includes all the usability features we’d expect such as touch and keyboard support, and
  • is extensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. in ways idiomatic to the WordPress ecosystem.

There was an attempt to build a custom, editor-first cropper component, but it was abandoned. Rather than developing separate, one-off flows across blocks, the Media Editor Modal aims to provide a consistent foundation for both a new Media Library experience and various editor contexts, and also serve as platform for building more sophisticated experiences later.

How to test

If you’re familiar with the Gutenberg plugin development environment, you can check out 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. right now and enable the Media Modal experiment from the experiments page at /wp-admin/admin.php?page=experiments-wp-admin

Update: #78653 merged, which makes the modal the default experience. No requirement to enable any experiment.

The quickest way to test is via Playground. Here’s a link that loads up Playground with Gutenberg Trunk and the Media Editor Modal active:

Suggested testing flows

The steps are provided just in case you need structure. Don’t feel any need to follow any or all of them.

The important question is whether the modal is solid enough as a replacement for the Image block crop flow, and whether you notice any bugs, UXUX User experience gaps or unexpected behaviors.

Basic crop flow

  1. Open the modal from an Image block.
  2. Resize the crop area.
  3. Pan and zoom the image.
  4. Rotate or flip the image.
  5. Save.
  6. Confirm the block updates to use the edited image.

Details editing

  1. In a saved post with a title, upload or insert an image.
  2. Open the modal from the Image block.
  3. Switch to the Details tab.
  4. Confirm Author and Attached to fields are populated with your author handle and the current post’s title.
  5. Update alt text and caption.
  6. Save.
  7. Confirm the media item updates.
  8. Confirm the Image block updates when its existing alt/caption values were empty or matched the original media values.

Existing custom block values

  1. Add an Image block.
  2. Manually enter custom alt text or a custom caption in the block.
  3. Open the media editor modal.
  4. Change the attachment’s alt text or caption.
  5. Save.
  6. Confirm custom block-level values are not unexpectedly overwritten.

Keyboard

  1. Open the modal.
  2. Use Tab to move through the crop area, crop handles, toolbar controls, 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. controls, Save, Cancel, and Close.
  3. Use arrow keys to move or resize the crop area.
  4. Confirm focus is visible and does not get lost.
  5. Try undo/redo with keyboard shortcuts.
  6. Confirm Escape behaves as expected when there are unsaved changes.

Touch gestures

  1. On a touch device, open the modal from an Image block.
  2. Test drag panning, pinch zoom, and crop area handle dragging for responsiveness and smoothness.
  3. Ensure toolbar actions like rotate, flip, undo, redo, and reset are tappable.

Sharing your feedback

Comments on this post are a great way to share feedback, but if you’d like to jump into Gutenberg feel free to leave feedback on this tracking issue as it’s the main one covering current tasks for the experimental modal. We’d love to know for example:

  • Did the modal open where you expected it to?
  • Was cropping understandable without extra instruction?
  • Did anything feel slower, confusing, or broken?
  • Did the image tools, including Save and Cancel behave as you’d expect?

Out of scope

The goal is to make the basic crop/edit workflow solid first, not to ship every image editing feature. Some related work is still being explored separately, for example:

  • Manual pixel crop controls.
  • Restoring original image.
  • Improving undo/redo history states.
  • Broader image editor extensibility for image 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/or AI integration options.

Thank you for making it this far, and thanks in advance for testing.

Props to @andrewserong and @isabel_brison for helping to write this post.

#core-editor, #gutenberg, #media, #media-modal

What’s new in Gutenberg 23.2? (21 May)

“What’s new in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/…” 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.2?

Gutenberg 23.2 has been released and is available for download!

This release introduces responsive global 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. styles with states, brings further improvements to the experimental Content Types management screens, and adds a wave of 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) refinements to 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. interface. The @wordpress/ui package gains a new SelectControl and motion design tokens, while modals now render as bottom sheets on mobile. Other changes include shortcodeShortcode A shortcode is a placeholder used within a WordPress post, page, or widget to insert a form or function generated by a plugin in a specific location on your site.-to-block transforms, Grid component enhancements, Connectors refinements, and continued Real-time Collaboration reliability fixes.

Table of contents

  1. Responsive global block styles with states
  2. Add motion design tokens (duration and easing) to @wordpress/theme
  3. Modal renders as a bottom sheet on mobile
  4. Other Notable Highlights
  5. Changelog
    1. Features
    2. Enhancements
    3. Bug Fixes
    4. Experiments
    5. Documentation
    6. Code Quality
    7. Tools
    8. Various
  6. First-time contributors
  7. Contributors

Responsive global block styles with states

You can now customize how individual blocks look on different screen sizes, right from Global Styles.

Head to Global Styles → Blocks, and you’ll find a new States dropdown on each block with Tablet and Mobile options. Select a state, make your style changes, and they’ll apply only to that breakpoint.

This allows theme developers and site builders to define different block styles depending on viewport size and interaction state, paving the way for more adaptive designs managed entirely through the editor. (#77513)

Add motion design tokens (duration and easing) to wordpress/theme

Adds motion design tokens to @wordpress/theme — a set of duration and easing curve tokens for standardizing animation timing across components — and adopts them in DialogModal, and Menu/DropdownMenu.

The Modal component now adapts to narrow viewports by rendering as a bottom sheet, providing a more touch-friendly experience on phones and small tablets. (#77956)

With the new position, important actions are easier to reach with one hand.

Other Notable Highlights

  • Content Types management improvements (experimental): The experimental Content Types screens are extended with several refinements: 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. visibility fields let you control where taxonomies appear (#77835), slugs are now auto-filled from the singular label (#77938), and new term/post type count fields provide an at-a-glance view of content usage (#78157). Additional quality-of-life actions—duplicate, view, and quick-edit—round out the management experience.
  • SelectControl added to @wordpress/ui. A new SelectControl primitive joins the design-system package, offering a consistent select input across the editor and adminadmin (and super admin) surfaces. (#77809)
  • Shortcode-to-block transforms. The Embed block now recognizes [ embed ] shortcodes (#77937), and the Shortcode block offers block-specific transforms when the text matches a registered shortcode (#77944).
  • Grid component improvements. The @wordpress/grid package gains a renderResizeHandle render prop (#77811), an edit-mode overlay for DashboardGrid and DashboardLanes (#78199), document cursor lock during resize (#77813), and resize-runaway prevention near the viewport edge (#77854).
  • Revisions accessibility improvements. Diff markers now enforce a 24×24 px minimum target size per WCAGWCAG WCAG is an acronym for Web Content Accessibility Guidelines. These guidelines are helping make sure the internet is accessible to all people no matter how they would need to access the internet (screen-reader, keyboard only, etc) https://www.w3.org/TR/WCAG21/. 2.5.8 (#77671), use diagonal stripe patterns to avoid color-only distinction (#77904), and display tooltips (#77690). The revisions slider now paginates by 100 per page for better performance (#77200).
  • Real-time Collaboration reliability fixes. Title divergence between users on page refresh has been resolved (#77666), a race condition on room creation that could split the update log is fixed (#77675), and find_canonical_storage_post_id() no longer returns null incorrectly (#78053).
  • Connectors refinements. 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. registration now supports an is_active callback (#77897), settings are only auto-registered when the referenced plugin is actually installed and active (#77273), and the Connectors page works on read-only file systems (#77521).

Changelog

Features

Block Editor

  • Try responsive global block styles with states. (77513)
  • Enhance the Connectors page on the read-only file system. (77521)

Enhancements

Components

  • Add SelectControl component to wordpress/ui. (77809)
  • Add motion design tokens (duration and easing) to wordpress/theme. (76097)
  • Button: Align link variant underline with Link and ExternalLink. (77842)
  • Grid: Add renderResizeHandle render prop. (77811)
  • Grid: Add edit-mode overlay to DashboardGrid and DashboardLanes. (78199)
  • Grid: Lock document cursor during resize gesture. (77813)
  • Grid: Prevent resize runaway near viewport edge. (77854)
  • Modal: Render as a bottom sheet on mobile. (77956)
  • Select: Support placeholder prop on Trigger. (78076)
  • Use the theme gray for muted Text. (77999)
  • docgen: Automatic documentation handle for TypeScript overloads. (77558)
  • ui/Tooltip, ui/IconButton: Add positioner slot 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.. (78089)

Block Library

  • Added Translator Context for Reply. (77891)
  • Embed: Add [ embed ] shortcode transform. (77937)
  • Shortcode: Offer block-specific transforms when text matches a registered shortcode. (77944)
  • 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 table 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./footer label. (78007)

Block Editor

  • Fix the target block for copying direct insert block attributes. (77877)
  • Make Block Inserter search input sticky while scrolling. (77698)
  • i18n: Add context to scale. (76917)

Post Editor

  • Add lint rule for non-module stylesheet imports. (77984)
  • Remove root UUID dependency. (77960)

Data Layer

  • 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: Bootstrap registry into the dashboard client. (77917)
  • Widget Types: Replace bootstrap with resolver. (77847)

npm Packages

  • Build: Add widgets/ folder support to wordpress/build. (77347)
  • Taxonomy edit route: Declare @wordpress/base-styles as dependency. (77901)

Bug Fixes

Components

  • ColorPalette: Fix duplicate-key warnings and incorrect selection with identical color values. (78004)
  • ColorPicker: Fix inconsistent HEX input clearing behavior. (77912)
  • ExternalLink: Fix focus outline under wp-admin. (77935)
  • Grid: Fix keyboard activation on draggable items. (78163)
  • Grid: Render resize handle as a component. (77888)
  • Link: Fix focus outline around the new-tab icon. (77910)
  • Select: Fix disabled cursor styles. (78112)
  • Select: Hide user agent focus ring in popup. (77919)
  • TabPanel: Fix tab indicator animation. (77812)
  • Text: Fix render prop CSSCSS Cascading Style Sheets. defenses. (78172)
  • ui/Drawer: Forward render on Drawer.Content to the scroll container. (77941)
  • ui/Drawer: Polish open/close animation, fix swipe on content padding. (77800)
  • Admin UIUI User interface: Fix nested landmark in Page header. (78001)
  • UI: Use string label type for form controls. (77860)
  • ui/CollapsibleCard: Support rendering Header as a heading element. (77962)
  • Image editor: Improve media editor crop accessibility and dialog focus. (78047)

Connectors

  • Add is_active callback support to plugin registration. (77897)
  • Clarify AI plugin callout copy. (78043)
  • Fix: Only auto-register settings if the plugin the connector references is installed and active. (77273)
  • Increase the right padding of the callout for the mobile layout. (78126)

Block Library

  • Embed: Tighten raw URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org transform isMatch. (78021)
  • Fix: The buttons block shows the inserter picker when multiple allowed blocks are registered. (77858)
  • Fix: Shortcode block does not render in Navigation Overlay. (77511)

Post Editor

  • Editor: Paginate revisions slider by 100 per page. (77200)
  • Notes: Keep tall floating threads scrollable on short content. (77821)
  • defaultRenderingMode value not respected when changed using block_editor_settings_all. (77870)
  • i18n: Add context to (site) identity. (78132)
  • Site Editor: Preserve non-global editor styles in pattern previews. (77957)
  • Preserve the leading number when pasting single-line text like dates. (77949)
  • Add aria-label to the Revisions button in the Post Summary 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.. (78140)
  • Revisions diff markers: Enforce 24×24px minimum target size (WCAG 2.5.8). (77671)
  • Revisions: Add diagonal stripe patterns to diff markers to avoid color-only distinction. (77904)
  • Revisions: Add tooltip to diff marker buttons. (77690)
  • Avoid using centered text. (78125)
  • Editor: Improve revisions diff pairing performance. (77126)

Data Layer

  • RTC: Fix title divergence between users on page refresh after title update. (77666)
  • isFulfilled: Don’t change resolution state, call in resolveSelect. (78151)
  • Fix lockfile drift and missing dep from content-types consolidation. (78109)
  • Guidelines REST: Require read access for the standard route. (77843)
  • Fix popover bind hydration. (77797)

Collaboration

  • RTC: Fix find_canonical_storage_post_id() always returning null. (78053)
  • RTC: Fix race condition on room creation, which can cause a split update log. (77675)
  • Media: Guard gutenberg_delete_heic_companion_file() against non-string $metadata[‘original’]. (78128)

Experiments

  • Add first end-to-end tests for Taxonomies. (77828)
  • Add taxonomy visibility fields. (77835)
  • Add term/post type count fields in content types. (78157)
  • Auto fill slug from a singular label for taxonomies and post types. (77938)
  • Content Types: Various improvements to post type and taxonomy management, including duplicate/view/quick-edit actions, shared utility reuse, and caching and routing fixes. (77754, 77844, 77853, 77885, 77916, 78058, 78059, 78091, 78099, 78102, 78104, 78143, 78146, 78149, 77931)
  • Dashboard: Lift Suspense + error boundary into widget chrome and add a default header. (78012)
  • Grid: Add DashboardLanes masonry surface. (78107)
  • Integrate useView into content types lists. (78197)
  • Make Content Types _builtin. (78150)
  • Render badges for some content types’ fields. (78194)
  • Sync user taxonomies with post types. (77997)
  • Update view content types actions. (78159)
  • User post types REST controller. (77915)
  • Widget Types: REST endpoint and coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.-data entity. (77987)
  • Widget Types: Server-side registry, decouple wp-build pages. (77958)

Media

  • Image editor: Suppress image editor undo/redo while a crop interaction is active. (77930)
  • Image editor: Update sidebar aspect ratio and resize controls. (78046)
  • Media Editor Modal: Improve image cropper interactions (undo/redo, pan, zoom, rotation), expand keyboard shortcuts and accessibility (focus borders, landmark regions, panel headings), and fix empty metadata fields. (77782, 77826, 77863, 77871, 77875, 77878, 77898, 77899, 78078, 78189). This is an MVPMinimum Viable Product "A minimum viable product (MVP) is a product with just enough features to satisfy early customers, and to provide feedback for future product development." - WikiPedia version, and it’s ready for testing here: https://make.wordpress.org/core/2026/05/21/media-editor-modal-call-for-testing/
  • Media editor: Replace fine-rotation slider with RotationRuler. (77906)
  • Grid: Add a warning about being under development. (78022)

Dashboard

  • Add WidgetDashboard.Actions compound. (78019)
  • Add an experimental WidgetDashboard rendering engine. (77770)
  • Add widget inserter modal. (78033)
  • Backend default layout 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.. (78040)
  • Dashboard experiment: Animate, customize UXUX User experience. (78065)
  • Dashboard experiment: New sidebar icon. (78016)
  • Dashboard experiment: Remove storybook examples for now. (78020)
  • Persist layout via wordpress/preferences. (78034)
  • REST endpoint for the default layout. (78066)
  • Staging layer for in-progress layout edits. (78071)
  • Use design animation tokens. (78204)

Block Library

  • Add Classic block 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. (78090)
  • Image block: Try syncing updated metadata fields (alt and caption) from the media editor. (78139)
  • Media Editor Experiment: Add a route, based on the media editor modal, and refactor the modal components. (77994)

Documentation

  • Block Editor: Clarify logic for ‘directInsert’ inner blocks setting. (77873)
  • Design System: Add missing packages to Storybook introduction. (77504)
  • Docs: Shortcode transforms with wrapped content + rawHandler JSDoc. (78003)
  • Document how to ignore VSCode Workspace Settings. (77608)
  • RTC: Clarify WPBlockSelection type and link to duplicates in other packages. (77862)
  • Revise README for FocalPointPicker component to use object-position. (77722)
  • UI: Add component status notes to Storybook. (77988)
  • UI: Add missing Portal subcomponents to Storybook. (78108)
  • UI: Fix subcomponent story labels. (78210)
  • UI: Improve documentation for compound exports. (78212)
  • Update nvm installation script to version 0.40.4. (77996)
  • Update references to the default 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".. (77606)

Code Quality

  • Add a 1-day minimum release age to npm installs. (78191)
  • Migrate native tests to the workspace. (77425)
  • Script Modules: Guard setAccessible() calls behind the PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher < 8.1 check. (78137)
  • Inline z-index values across Block Manager, 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, pattern chooser, sticky search, layout, and Popover, and remove local z-index helper entries. (77753, 77759, 77772, 77806, 77807, 77808, 78180, 78181)

Post Editor

  • Editor: Refactor ‘PostPublishPanel’ into a function component. (78083)
  • Edit Post: Fix suppressed errors in the Layout component. (77940)
  • Notes: Separate intent from mechanics in openTheSidebar. (78039)

Components

  • Button: Align compound component metadata. (78184)
  • Fix the flaky Menu space key 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.. (77972)
  • Menu: Fix flaky keyboard focus test. (78162)
  • SlotFill: Add dependencies to updateFill effect. (77907)

Plugin

  • Fix activation warning. (77908)
  • Fonts: Move admin menu compat from experimental to WordPress-7.0. (78227)

Block Editor

  • Add translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. context for “Exit pattern”. (78158)
  • Remove unused reducer action types. (77880)
  • 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. changes in core. (78103)
  • Refactor client-side style states to use nodes. (78000)
  • Refactor accordion to use CollapsibleCard. (77903)
  • Classic Block: Use onReplace prop for migration actions. (78113)

Data Layer

  • ESLint: Replace eslint-plugin-react-compiler with eslint-plugin-react-hooks. (69962)
  • RTC: Add 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. tests for the data corruption 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. due to the cursor scope issue. (77662)

Tools

Testing

  • Add RTC y-websocket-server tests. (78179)
  • Add createRecord end-to-end request util. (78017)
  • Configure global fallbackFn for timezone-mock to handle Date subclasses. (78056)
  • Consolidate CI workflows for changelog testing. (78169)
  • E2E: Remove slash from bad embed request mock. (78200)
  • E2E: Reset preferences after navigable-toolbar tests. (78115)
  • Experiment: Add first basic user post types end-to-end tests and update taxonomy tests. (77998)
  • Fix flaky end-to-end tests for publish panel, Pages dataview keyboard navigation, homepage settings, and post content focus mode. (78054, 78063, 78082, 78084)
  • Revision: Fix failing end-to-end test. (78079)
  • Site Editor end-to-end tests: Reimplement the wait for load. (77981)
  • end-to-end tests: Use editPost and createNewPost helpers everywhere. (78170)

Build Tooling

  • Build: Update lint-staged from v10 to v16. (77963)
  • Fix: Guard require_once calls in generated PHP files against deployment race conditions. (78110)
  • Remove save-exact from .npmrc. (78196)
  • Tests: Fix argument forwarding for test: Unit workspace scripts. (77541)
  • Update TypeScript to tsgo (try 2). (77682)
  • bin/dev.mjs: Warn on stale webpack watching this checkout. (78098)
  • Upgrade and unify @types/node version. (77900)

Various

  • Update the UUID dependency. (77848)
  • Fill in end-to-end tests for client-side media processing. (75949)

Components

  • Support object values in the Select primitive. (77861)
  • Update date-fns to v4.1.0 in components and editor packages. (78057)

Block Library

  • Correct capitalization in help text for the Breadcrumbs block. (78175)

First-time contributors

The following PRs were merged by first-time contributors:

  • @369work: Update nvm installation script to version 0.40.4. (77996)
  • @andrea-sdl: Use theme gray for muted Text. (77999)
  • @danluu: RTC: Fix race condition on room creation, which can cause a split update log. (77675)
  • @vishnucmsminds: Add aria-label to the Revisions button in the Post Summary sidebar. (78140)

Contributors

The following contributors merged PRs in this release:

@369work @adamsilverstein @adithya-naik @aduth @afercia @alecgeatches @andrea-sdl @andreawetzel @andrewserong @anomiex @artpi @cbravobernal @ciampo @coderGtm @crisbusquets @danluu @desrosj @dmsnell @dpmehta @ellatrix @hbhalodia @himanshupathak95 @Infinite-Null @jameskoster @jorgefilipecosta @jsnajdr @lancewillett @Mamaduka @manzoorwanijk @mikachan @mirka @Mustafabharmal @ntsekouras @R1shabh-Gupta @ramonjd @retrofox @sarthaknagoshe2002 @scruffian @shail-mehta @simison @t-hamano @talldan @tellthemachines @timse201 @tyxla @USERSATOSHI @vishnucmsminds @vishnupprajapat @youknowriad @yuliyan

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

What’s new in Gutenberg 23.1? (07 May)

What’s new in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ 23.1? (07 May)

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

What’s New In
Gutenberg 23.1?

Gutenberg 23.1 has been released and is available for download!

This release introduces two new experiments aimed at managing content inside the editor. A Custom Taxonomies management screen lets you create and edit taxonomies from Settings, and a new Media Editor brings better image manipulation into the WordPress media flow. Outside of the editor, the @wordpress/ui package gains new compound primitives, Drawer and Autocomplete, alongside overlay polish. Other changes include an experiment to hide the classic blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. from the inserter, parallel thumbnail uploads, an early developer preview of @wordpress/grid, and a batch of real-time collaboration reliability fixes.

Faster image upload finalization

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

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

@wordpress/ui primitives

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

Two new compound primitives ship in 23.1:

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

Other polish across overlay components:

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

Other Notable Highlights

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

Changelog

Features

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

Enhancements

  • Storybook: Add global preview styles for @wordpress/ui overlays. (77451)
  • Widgets: Add widgetWidget A WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user.-types data layer. (77752)

Components

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

Post Editor

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

Block Library

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

Block Editor

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

New APIs

  • Add @wordpress/grid package. (77562)

Guidelines

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

Bug Fixes

  • Core Abilities: Export initialization promise as ready. (77254)
  • Disable Custom CSSCSS Cascading Style Sheets. command for non-block themes. (77685)
  • Grid: Fix width: 'fill' when tiles span multiple rows. (77769)
  • Tests: Connectors point to the right page. (77272)
  • PluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party.: Gutenberg Experiments: Ensure the experiment is active before outputting flags. (77728)
  • Connectors: Treat networknetwork (versus site, blog)-active plugins as active. (77661)
  • Command Palette: Fix macOs label for sites unable to determine UA via PHP. (77638)
  • Design Tools: viewport visibility — use ‘key’ instead of ‘value’ for device type. (77410)
  • Layout: Ensure layout classnames are applied to the inner blocks wrapper and not to its siblings. (77408)
  • Global Styles: Fix pseudo selector block style rendering in the editor. (76879)
  • Data Layer: Media — move image output format filtering to upload response. (75793)
  • Media Upload Modal: Fix pagination and search. (77872)

Block Library

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

Components

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

Block Editor

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

Post Editor

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

Client Side Media

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

Collaboration

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

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

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

Connectors

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

Components

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

Performance

Post Editor

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

Experiments

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

Media

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

Block Library

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

Post Editor

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

Documentation

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

Code Quality

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

Components

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

Block Library

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

Post Editor

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

Block Editor

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

Site Editor

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

Build Tooling

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

Testing

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

First-time contributors

The following PRs were merged by first-time contributors:

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

Contributors

The following contributors merged PRs in this release:

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

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

What’s new in Gutenberg 22.9? (8 April)

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

What’s New In
Gutenberg 22.9?

Gutenberg 22.9 has been released and is available for download!

This release introduces background gradients that work alongside background images in the Group 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 adds organized sections to the command palette for better action discovery (experimental). The wordpress/ui package gains a foundational component for consistent empty states, while real-time collaboration receives stability improvements for multi-user editing sessions.

A total of 131 PRs were merged in Gutenberg 22.9, with 5 first-time contributors!

Table of contents

Background gradients alongside background images

The Group block now supports background gradients through a new background.gradient block support, allowing gradients and background images to work together without conflicts. You’ll find a gradient picker in the Background panel that works independently of the existing color gradient controls, making it possible to create gradient overlays on images or combine multiple background effects.

The new background.gradient block support is available to block authors. This also lays the groundwork for eventually migrating color.gradient to background.gradient across all blocks, providing a more consistent and capable background styling system, including clipping and text gradients. (75859)

Command palette history and suggestions (experimental)

The command palette (Cmd+K/Ctrl+K) now features organized sections that make it easier to find and reuse actions. Instead of showing just a search field and search results, users see sections for Recent commands and Suggestions based on current context. This change is experimental; to give it a try, first go to WP-Adminadmin (and super admin) > Gutenberg > Experiments and enable “Workflow Palette”.

Other Notable Highlights

The wordpress/ui package adds a new EmptyState component for displaying placeholder content when sections have no data. This compound component provides flexible composition with sub-components for icons, titles, descriptions, and actions, laying groundwork for consistent empty state patterns across the interface (74719).

Real-time collaboration has received some fixes that improve the multi-user editing experience and stability. Block comments (notes) now properly sync between collaborative editors instead of requiring page refreshes to appear. In the post list, the action button correctly updates from “Join” back to “Edit” when collaboration locks expire. Behind the scenes, error recovery has been enhanced to prevent cascading failures that could previously cause memory issues during collaborative sessions. (76873, 76795, 76872, 76716)

The experimental Forms block now supports hidden input fields, filling an important gap for many applications. Hidden fields appear as selectable placeholder blocks in the editor, while remaining invisible on the frontend with values configurable through the Advanced panel. (74131)

Changelog

Enhancements

Block Editor

  • DOM: Prefer standard caretPositionFromPoint over deprecated caretRangeFromPoint. (76921)

Components

  • Add EmptyState component to wordpress/ui. (74719)
  • Admin UIUI User interface: Update Page background color. (76548)
  • Button: hide focus outline on :Active for click feedback in forced-colors mode. (76833)
  • Card: Use Text component for Title typography. (76642)
  • InputControl: Add to wordpress/ui. (76653)
  • Snackbar: Use surface-width design token for max-width. (76592)
  • Storybook: Make “introduction” top level. (76671)
  • Tabs: Add runtime validation for tab/panel mismatches. (75170)
  • Theme: Change default control cursor to pointer. (76762)
  • ThemeProvider: Add cursor prop. (76410)
  • UI/Dialog: Deprioritize close icon for initial focus. (76910)
  • UI/Dialog: Expose initialFocus and finalFocus on Dialog.Popup. (76860)
  • UI: Add AlertDialog primitive. (76847)
  • 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 from 1.2.0 to 1.3.0. (76603)

Data Layer

  • CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Data: Remove offset param from stableKey, use pagination logic. (76808)

Block Library

  • Block Supports: Add background gradient support that can combine with background images. (75859)
  • Forms Block: Add hidden input field variation. (74131)
  • Image/Site Logo: Hide crop toolbar when editMediaEntity is unavailable. (76626)
  • Login/out block: Add button block class names to the submit button. (76746)

DataViews

  • CollapsibleCard: Add HeaderDescription subcomponent. (76867)
  • Improvements to dataviews infinite scroll. (74378)

Site Editor

  • Site Editor > Pages: Move view configuration to the server. (76573)
  • Site Editor > Patterns & Parts: Generate 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. from view configuration. (76823)
  • Site Editor > Patterns: Move configuration to the server. (76734)
  • Site Editor > Quick Edit: Add form configuration to endpoint. (76953)
  • Site Editor > Templates: Move configuration to the server. (76622)

Post Editor

  • DataForm: Add compact configuration option to the datetime control. (76905)
  • Site Editor v2: Add missing menu items to navigation leaf more menu. (76804)

Connectors

  • Improve AI 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. button. (76759)

Collaboration

  • Add backportbackport A port is when code from one branch (or trunk) is merged into another branch or trunk. Some changes in WordPress point releases are the result of backporting code from trunk to the release branch. for WP_ALLOW_COLLABORATION. (76716)

Guidelines

  • Improvements to the UXUX User experience. (76383)

Icon

  • Icons: Enforce strict name validation in register method. (76079)

Commands

  • Add sections to command palette and introduce Recently used functionality. (75691)

Bug Fixes

  • wordpress/date: Recover WP timezone after third-party reload. (75831)

Block Library

  • Icon: Fix center alignment in the editor for classic themes. (76878)
  • Image block media placeholder: Remove duotone. (76721)
  • Latest Comments: Fix v1 block deprecation. (76877)
  • List Item: Disable edit as HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. support. (76897)
  • Navigation: Avoid List View changing position when navigation block saves. (76659)
  • Reduce specificity of nav link default padding so global styles apply. (76876)
  • Show fallback label in MediaControl when filename is empty. (76888)
  • Site Tagline: Fix block error when migrating deprecated textAlign attribute. (76821)

Connectors

  • Boot: Fix black area below content when sidebar is taller than page content. (76764)
  • Add Akismet as a default connector. (76828)
  • Align client 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. with server. (76737)
  • Fix button size. (76582)
  • Replace plugin.slug with plugin.file. (76909)
  • Support non-AI provider types and add JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. extensibility end-to-end test. (76722)

Block Editor

  • Block visibility badge: Use canvas 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. for viewport detection. (76889)
  • Cross Origin Isolation: Remove img from the list of elements that get mutated. (76618)
  • Fix locked content when switching to a different template without exiting ‘Edit pattern’. (76710)
  • Hide Additional CSSCSS Cascading Style Sheets. controls when block is inside contentOnly editing mode. (76512)
  • Reset blockEditingModes on RESET_BLOCKS. (76529)
  • Stop keeping stale controlled blocks after reset. (76591)

Components

  • Admin UI: Fix Page HeaderHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. not rendering with only actions and add stories. (76695)
  • Button: Restore specificity of high-contrast mode focus ring. (76719)
  • Card: Add overflow: Clip to root container. (76678)
  • Fix Color Picker Angle Reset on Gradient Type Change. (76595)
  • Storybook: Disable autodocs for Icon library. (76620)
  • compose/useDialog: Add stopPropagation() to Escape handler. (76861)
  • ui/CollapsibleCard: Do not animate focus ring. (76682)

Post Editor

  • Fix: Create custom template modal content width. (76713)
  • Reduce the added halo for selected block. (76619)
  • 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.: Add MetaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. fields diff panel to document sidebar. (76341)
  • Revisions: Fix template revisions retrieval and sorting. (76760)
  • Style Book: Fix missing styles for classic themes in stylebook route. (76843)

Collaboration

  • RTC: Fix notes not syncing between collaborative editors. (76873)
  • RTC: Fix stuck “Join” link in post list when lock expires. (76795)
  • RTC: Restore on failed request with compaction update. (76872)

Client Side Media

  • Build: Remove unused JXL WASM module from vips worker. (76639)
  • Gate client-side media processing as plugin-only. (76700)
  • vips: Ensure single instance. (76780)

CSS & Styling

  • 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.: Fix checkbox style in sidebar. (76718)

Data Layer

  • Properly resolve getTemplateId for hybrid themes. (76532)

Site Editor

  • Fix unsupported theme flash on direct URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org navigation. (76465)

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

  • ComboboxControl: Fix accessible association of help text. (76761)
  • RadioControl: Add role=”radiogroup” to fieldset. (76745)
  • ToggleGroupControl: Fix accessible association of help text. (76740)
  • ControlWithError: Connect validation messages to controls via aria-describedby. (76742)

Block Editor

  • Stretchy Text: Fix focus loss. (75092)

Experiments

Post Editor

  • Fields: Add 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. field. (76829)
  • Fields: Add sticky field. (76922)
  • Fields: Tweak excerpt field. (76903)
  • Add revisions panel. (76735)
  • Add template panel to include the existing template actions. (76539)

Guidelines

  • Refactor components and improve TypeScript typing. (76394)

Documentation

  • Abilities: Improve JSDoc for public API. (76824)
  • DOM: Document class wildcard matcher for ‘cleanNodeList’. (76920)
  • Docs: Remove Puppeteer references and update to Playwright. (76766)
  • Docs: Update PHP_CodeSniffer repository link and schema URL. (76816)
  • Storybook: Add redirect for moved introduction page. (76701)
  • Storybook: Try changing to collapsed folders. (76361)
  • UI Tooltip: Improve documentation to cover intended accessibility practices. (76705)
  • Updating versions in WordPress ahead of 7.0. (76723)
  • admin-ui: Update package README to clarify purpose and distinguish from ui package. (76943)
  • docs(create-block-interactive-template): Document available variants in README. (76831)
  • iAPI Docs: Add client-side navigation compatibility guide. (76242)

Code Quality

  • Core Abilities: Fix sideEffects flag. (76763)
  • Admin UI: Add CSS files to sideEffects array. (76609)
  • admin-ui / Breadcrumbs: Stricter items[].to prop types. (76493)
  • Refactor: Use null coalescing operator for improved readability. (76777)
  • element: Make createInterpolateElement TS/type smart. (71513)

Data Layer

  • Core Data: Optimize getRawEntityRecord selector. (76632)
  • Core Data: Remove ‘isRawAttribute’ internal util. (76806)

Block Library

  • Navigation: Add a shared helper for font sizes in Navigation Link and Navigation Submenu blocks. (74855)
  • Tab Block: Remove anchor from save function. (76511)

Site Editor

  • Simplify sidebar for Pages & Templates. (76868)

Commands

  • Fix useSelect warning in command palette. (76822)

Block Editor

  • Deprecate ‘__unstableSaveReusableBlock’ action. (76807)

Components

  • UI: Clarify public APIs and component naming, remove NoticeIntent typings. (76791)

DataViews

  • wordpress/dataviews: Migrate card layout to wordpress/ui. (76282)

Tools

  • Add TypeScript parser tests for shouldSkipReference. (76611)
  • ESLint: Add no-unmerged-classname rule. (76458)
  • create-block-interactive-template: Enhance block registration by using blocks-manifest for improved performance. (76317)

Build Tooling

  • wp-build: Hash transformed CSS for data-wp-hash dedupe key. (76743)
  • Build: Fix vips worker 404 when SCRIPT_DEBUG is true. (76657)
  • Build: Skip non-minified build for WASM-inlined workers. (76615)
  • Changelog: Add missing label-to-feature mappings. (76646)
  • React vendor script: Avoid warning on createRoot. (76825)
  • Set milestone on PRs after cherry-picking to release 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".. (76652)
  • react-dom vendor script: Remove __esModule flag. (76925)

Testing

  • Fix: Flaky RichText format end-to-end test. (76958)
  • RTC: Add end-to-end block gauntlet. (76849)
  • e2e: Add end-to-end tests for template and template part revisions. (76923)
  • end-to-end Tests: Enable client-side media processing for site editor image test. (76648)

Collaboration

  • RTC: Update post lock backport PR. (76661)

First-time contributors

The following PRs were merged by first-time contributors:

  • @jigangz: Block Library: Show fallback label in MediaControl when filename is empty. (76888)
  • @meravi: Docs: Remove Puppeteer references and update to Playwright. (76766)
  • @rodrigoprimo: Docs: Update PHP_CodeSniffer repository link and schema URL. (76816)
  • @sandipmaurya2611: Boot: Fix black area below content when sidebar is taller than page content. (76764)
  • @Vedant-Gandhi: Fix Color Picker Angle Reset on Gradient Type Change. (76595)

Contributors

The following contributors merged PRs in this release:

@aaronrobertshaw @adamsilverstein @aduth @alecgeatches @andrewserong @annezazu @aswasif007 @carolinan @CGastrell @chriszarate @ciampo@DAreRodz @dhasilva @dsas @ellatrix @epeicher @gziolo @im3dabasia @ingeniumed @jameskoster @jasmussen @jigangz @jorgefilipecosta @jsnajdr@juanmaguitar @Mamaduka @manzoorwanijk @maxschmeling @meravi @mirka @ntsekouras @oandregal @pento @ramonjd @retrofox @rodrigoprimo@sandipmaurya2611 @scruffian @senadir @sgomes @Shekhar0109 @shekharnwagh @shimotmk @SirLouen @Soean @t-hamano @talldan@tellthemachines @Vedant-Gandhi

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