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