23.2
What’s new in Gutenberg 23.2? (21 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.2?
Gutenberg 23.2 has been released and is available for download!
This release introduces an experiment for responsive global block styles with states, brings further improvements to the experimental Content Types management screens, and adds a wave of accessibility refinements to the Revisions 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 shortcode-to-block transforms, Grid component enhancements, Connectors refinements, and continued Real-time Collaboration reliability fixes.
Table of contents
- Responsive global block styles with states (experimental)
- Add motion design tokens (duration and easing) to @wordpress/theme
- Modal renders as a bottom sheet on mobile
- Other Notable Highlights
- Changelog
- Features
- Enhancements
- Bug Fixes
- Experiments
- Documentation
- Code Quality
- Tools
- Various
- First-time contributors
- Contributors
Responsive global block styles with states (experimental)
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 Dialog, Modal, and Menu/DropdownMenu.
Modal renders as a bottom sheet on mobile
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: taxonomy 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.
SelectControladded to@wordpress/ui. A newSelectControlprimitive joins the design-system package, offering a consistent select input across the editor and 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/gridpackage gains arenderResizeHandlerender 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 WCAG 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. Plugin registration now supports an
is_activecallback (#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
renderResizeHandlerender 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 API. (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)
- i18n: Add context to table header/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
Data Layer
- Widget 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-stylesas 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 CSS defenses. (78172)
- ui/Drawer: Forward
renderonDrawer.Contentto the scroll container. (77941) - ui/Drawer: Polish open/close animation, fix swipe on content padding. (77800)
- Admin UI: 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 URL 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)
defaultRenderingModevalue not respected when changed usingblock_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 sidebar. (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
slugfrom 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
useViewinto 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 core-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)
- Media editor: Replace fine-rotation slider with RotationRuler. (77906)
- Grid: Add a warning about being under development. (78022)
Dashboard
- Add
WidgetDashboard.Actionscompound. (78019) - Add an experimental
WidgetDashboardrendering engine. (77770) - Add widget inserter modal. (78033)
- Backend default layout filter. (78040)
- Dashboard experiment: Animate, customize UX. (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 migration 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
Portalsubcomponents 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 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 PHP < 8.1 check. (78137)
- Inline z-index values across Block Manager, meta 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 test. (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 translation context for “Exit pattern”. (78158)
- Remove unused reducer action types. (77880)
- Backport 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-compilerwitheslint-plugin-react-hooks. (69962) - RTC: Add regression tests for the data corruption bug due to the cursor scope issue. (77662)
Tools
Testing
- Add RTC y-websocket-server tests. (78179)
- Add
createRecordend-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
Fetched May 21, 2026

