What’s new in Gutenberg 23.0? (22 April)
“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.0?
Gutenberg 23.0 has been released and is available for download!
This release introduces a revisions panel for templates, template parts, and patterns (experimental), and extends the Site Editor’s Design › Identity panel with Site Title and Site Tagline fields, completing the set alongside the previously added Site Logo and Icon. Real-time collaboration gains compatibility with legacy meta boxes and a range of reliability improvements, while the block editor receives several quality-of-life refinements.
A total of 174 PRs were merged in Gutenberg 23.0, with 8 first-time contributors.
Table of contents
Editing a template, template part, or pattern now surfaces the same Revisions panel previously available only for posts and pages. When any of these entities has revisions, a Revisions row appears in the sidebar with access to review and restore prior versions, matching the behavior already in place for regular post types.
This is part of the ongoing Editor Inspector: Use DataForm experiment, which is progressively rolling out a unified DataForm-based inspector across all post types. Enable the experiment from Gutenberg → Experiments to try it in the Site Editor or while editing a template from the Post Editor. (#77008)
The Design › Identity panel — introduced in 22.8 with Site Logo and Site Icon — now also includes Site Title and Site Tagline. All four identity settings sit in a single panel, editable directly from the Site Editor without a trip to Settings → General. Because the title and tagline fields write to the same root/site entity that the Site Title and Site Tagline blocks read from, edits show up live in the editor canvas as you type. The panel uses consistent field styling across text and media controls, so the four settings read as one unified form. (#76264)
Real-time Collaboration, legacy meta box compatibility. Plugin authors can now mark individual meta boxes as RTC-compatible using a new __rtc_compatible_meta_box flag, so the presence of a legacy meta box no longer unconditionally disables collaboration. Site administrators can also apply the flag to third-party meta boxes via the existing filter_block_editor_meta_boxes hook. (#76939)
Real-time Collaboration, reliability. Concurrent edits to array-type block attributes — such as table rows — are now preserved when the array is restructured (#77164). A single corrupted sync update no longer crashes the whole poll cycle and disconnects every room (#76968). Gutenberg’s activation hook now honors the Core WP_ALLOW_COLLABORATION constant, giving hosts a reliable kill switch (#77084).
Keyboard shortcuts for moving blocks surface in tooltips. The block toolbar’s move-up / move-down tooltips now display their keyboard shortcuts. (#76992)
Spacing side controls re-order when unlinked. When link mode is off, the four side inputs are arranged in a more predictable order. (#66317)
Separator block honors the --- shortcut’s default variation. Inserting a Separator via the Markdown-style --- shortcut now applies the block’s default style variation, matching the behavior of inserting it through the inserter. (#77135)
If you had the Guidelines experiment enabled in a previous release, 23.0 renames its internal identifiers from content-guidelines / content_guideline to guidelines / guideline. The rename covers the custom post type slug, REST base, meta keys, experiment flag, and Redux store. Because the experiment flag itself is renamed, it will appear disabled after updating — you’ll need to re-enable it from Gutenberg → Experiments and re-enter any previously saved guidelines. (#77147, #77223)
wordpress/ui: Add global CSS defense module. (76783)
Admin UI: Increase page header vertical padding. (77152)
Admin UI: Update Page background color to surface-neutral. (76869)
Autocomplete: Remove getAutoCompleterUI factory pattern. (77048)
DataForm: Add min/max date range support for date and datetime fields. (77201)
DataForm: Show tooltip in edit button in panel layout. (77024)
DataForm: Support disabled controls. (77090)
FormToggle: Update disabled styles. (77208)
Media Upload Modal: Persist view configuration. (77288)
Text: Remove UA margins. (76970)
UI Text: Mark as recommended. (77044)
UI/Dialog: Add explicit margin-inline-end rule to Title. (77334)
UI: Update @base-ui/react from 1.3.0 to 1.4.0. (77308)
UI: Use Text component for Badge typography. (77295)
Use --wpds-cursor-control design token for interactive controls. (76786), (77259)
@wordpress/ui: Add Popover. (76438)
ui/AlertDialog: Better async confirm APIs, fully use base ui’s AlertDialog. (76937)
ui/Dialog: Update Header layout, refactor Title to use Text. (77161)
ui: Expose container portal prop on all overlay Popup components. (77163)
Add context for next/previous enlarge image. (76967)
Image block: Validate attachment ID exists before treating image as local. (77178)
Search Block: Ensure color settings apply to input field when button is disabled. (77219)
Tab Menu Item: Simplify active tab menu item style. (77195)
Tabs: Remove sequential numbering from new tab labels. (77321)
Use entity link title for link control preview. (77155)
Guidelines CPT: Rename from “content guidelines” to “guidelines” (slug, classes, routes). (77147), (77223)
Guidelines: Make the CPT type-aware. (77491)
Improve guideline revision UX. (76560)
Registers wp_guideline_type taxonomy. (77156)
Update actions-section and import/export workflow. (76621)
DataViews: Simplify defaultLayouts prop. (77232)
RTC: Add filterable flag for meta box RTC compatibility. (76939)
RTC: Change SyncConnectionModal to isSyncConnectionErrorHandled filter and drop IS_GUTENBERG_PLUGIN check. (76853)
Display shortcuts for moving blocks via tooltips. (76992)
Re-order spacing side controls when unlinked. (66317)
date field in templates and template parts. (77134)Backport: Improve validation and permission checks for WP_HTTP_Polling_Sync_Server. (76987)
RTC: Add optional shouldSync function to entity sync configuration. (76947)
RTC: Respect WP_ALLOW_COLLABORATION in Gutenberg for activation hook. (77084)
Calendar: Fix disabled styles. (77138)
Card: Set default foreground color on root. (77013)
Checkbox: Fix disabled styles. (77132)
DataForm: Remove text-transform from panel field labels. (77196)
DataViews: Fix compact density clipping and remove top/bottom padding. (77054)
Fix autocomplete overlapping trigger matching. (77018)
FormTokenField: Fix disabled styles. (77137)
RTC: Fix inline inserter reset on update sync. (76980)
RadioControl: Add support for disabling radio group. (77127)
Remove sandbox allow-same-origin for core/html blocks. (77212)
TextArea: Add disabled styles. (77129)
UI: Normalize render prop and ref forwarding patterns. (77160)
Cover block: Fix embed video background Error 153 in editor. (76904)
Fix overflow of highlighted white-space in Code Block. (77085)
Image block: Hide drag handles while an upload is in progress. (77121)
Paragraph: Prevent onEnter splitting of parent block when insertion of that block type is not allowed. (77291)
Post Author Biography: Preserve occurrence of white spaces. (71133)
RTC: Core/cover block minor compatibility fixes. (76916)
Search block: Match behavior of global styling for border and color with local styling (inspector controls) to remove inconsistency. (77060)
Search block: Derive ‘isSearchFieldHidden’ value. (77082)
Separator Block: Apply default block variation when inserting via --- shortcut. (77135)
Upload external media: Ensure notice only fires once. (77218)
Fix SyntaxError in Autocompleter UI when pasting matching content. (76961)
LinkPicker: Decode HTML entities in link preview title. (77170)
Prevent Enter key from inserting paragraphs in contentOnly sections. (76989)
RTC: Fix “Edit as HTML” content reset during collaboration. (77043)
Writing Flow: Fix format toolbar not appearing when selecting text from block edge. (77136)
contentOnly template lock: Fix block insertion and removal rules. (77119)
Fix numeric value clearing in preset input controls. (77139)
Core Data: Fix ‘useEntityProp’ for raw attributes. (77120)
Core Data: Fix incorrect pagination for non-paginated entities. (76406)
RTC: Fix core/table cell merging. (76913)
RTC: Fix orphaned meta causing dirty editor state. (77529)
RTC: Improve array attribute stability when structural changes occur. (77164)
getMergedItemsIds: Receive full page bigger than perPage. (77262)
Account for mu-plugins when resolving plugin.file status. (76994)
Don’t clobber third-party custom render in registerDefaultConnectors. (77116)
Hide Akismet unless already installed. (76962)
Replace speak() with notice store for state changes. (77174)
Update help text from ‘reset’ to ‘manage’. (76963)
Fields: Fix postContentInfoField when there are edits. (76901)
Fix: Restore editor canvas padding in classic themes. (76864)
RTC: Fix button flickering on retry dialog. (77234)
RTC: Predefined retry schedules for disconnect dialog, make more lenient. (76966)
Revision: Fix ‘Show changes’ button reset state. (77122)
Fix failing ‘WP_HTTP_Polling_Sync_Server’ unit test. (77025)
RTC: Fix disconnect dialog due to uneditable entity. (77242)
RTC: Isolate sync update failures to prevent full disconnect. (76968)
Fix duotone filter not applying on style variation switch. (77229)
Global Styles Revisions: Fix footer overflow. (77103)
ValidatedRangeControl: Fix aria-label rendered as [object Object]. (77042)Add missing documentation in collaboration.php. (77173)
Autocomplete: Clarify ‘isDebounced’ setting limitation. (77062)
Docs: Add README for DatePicker and TimePicker Components. (70365)
Editor: Fix ‘selectedNote’ action JSDoc. (77080)
Eslint: Suggest alternative in no-setting-ds-tokens rule. (77154)
Fix: A sentence has no ending punctuation in README.md file. (77027)
HStack, VStack: Mark as not recommended for use. (77041)
Improve CSS setup instructions in package readmes. (76975)
Storybook: Enable theming toolbar for wp-components. (77038)
Storybook: Fix “Default” cursor option in theming toolbar. (77037)
UI/Tooltip: Add usage guidelines documentation. (77158)
UI: Use Link component in details story example. (76997)
iAPI Docs: Fix typos, code errors, and inaccuracies in the documentation. (76636)
ui/docs: Add additional global css setup instructions. (77228)
Add .scss files to CSS module linting. (77140)
Block Directory: Use --wpds-cursor-control design token. (77330)
Autocomplete: Refactor useAutocomplete to use useReducer. (77020)
BoxControl: Remove unused state for icon side. (77143)
Build Tools: Update TypeScript to 6.0.2. (77010)
Button: Remove obsolete Safari + VoiceOver workaround. (77107)
Button: Remove unused Storybook stylesheet. (77031)
Dataviews: Remove unneeded ref callbacks. (77179)
Extract the autocomplete matcher into a separate function. (76957)
FormTokenField: Remove unnecessary styles. (77263)
Textarea: Remove unnecessary styles. (77221)
Theme: Rename typography tokens to use “typography” prefix. (76912)
Update React function names for better ESLint detection. (77148)
i18n: Make sprintf return FormattedText for type-safe createInterpolateElement. (76974)
ui/Card: Remove redundant margin reset from Card.Title. (77187)
ui/VisuallyHidden: Standardize composition pattern. (77190)
Block Editor store: Refactor controlledInnerBlocks to Set. (77094)
Global Styles: Move pseudo-state slicing logic into useStyle hook. (77104)
BlockMover: Remove unused disabled button props. (76993)
Extract getElementCSSRules from useBlockProps. (77327)
updateBlockListSettings: Convert state to Map, do all updates in one action. (46392)
BlockStyleVariationOverridesWithConfig: Change name and fix lint errors. (77130)
ESLint plugin: Disable jsx-a11y/heading-has-content. (77073)
Edit Post: Fix warning in ‘useMetaBoxInitialization’ hook. (77311)
RTC: Store metaboxes RTC-compatible flag on location entries. (77361)
Revisions: Simplify fetching. (77086)
Tabs: Simplify anchor handling. (77189)
TypeScript: Migrate packages/list-reusable-blocks package to TypeScript. (70518)
TypeScript: Migrate viewport package. (71118)
Remove remaining esModuleInterop usage. (77095)
Blocks: Convert blocks package to TypeScript. (76312)
Autocomplete: Fix flaky end-to-end tests. (77322)
E2E Tests: Ensure artifacts generate correctly and remove unnecessary artifacts. (77093)
Fix page.waitForFunction call arguments in e2e tests. (77300)
Guidelines: Add end-to-end tests based on the Settings page testing instructions. (77192)
Remove ‘Home’ and ‘End’ key usage from Navigation tests. (77102)
Restore original template registration tests alongside activation variants. (77068)
Tests: Auto-fix some new ‘eslint-plugin-playwright’ warnings. (77314)
Tests: Fix workspace test scripts (wp-env not found, argument forwarding). (77055), (77083)
Add iteration issue template. (77113)
Build: Fix glob ignore patterns in dot-prefixed directories. (75114)
Convert directories in test/ to workspaces. (74684)
Env: Fix loopback requests when running on non-default ports. (77057)
Fix lint-staged API documentation path. (77203)
Resolve package-lock.json inconsistency for @babel/eslint-parser. (77256)
Storybook: Fix end-to-end subpath exports and add CI build smoke test. (77034)
Refactor: Migrate bin/api-docs to tools/api-docs as workspace @wordpress/api-docs-generator. (77019)
Upgrade ESLint to v10. (76654)
Fix pre-existing lint errors across the codebase. (77002)
Remove unused catch block variables across the codebase. (76969)
The following PRs were merged by first-time contributors:
@DarkMatter-999: Fix numeric value clearing in preset input controls. (77139)
@dkotter: Update the AI plugin settings page slug we link to after activation. (77336)
@dpmehta: Search block: Match behavior of global styling for border and color with local styling (inspector controls) to remove inconsistency. (77060)
@mehrazmorshed: Fix: A sentence has no ending punctuation in README.md file. (77027)
@prachigarg19: Fix duotone filter not applying on style variation switch. (77229)
@samvaidya: Image block: Validate attachment ID exists before treating image as local. (77178)
@sandipr942: Added missing documentation in collaboration.php. (77173)
@superdav42: Connectors: Don’t clobber third-party custom render in registerDefaultConnectors. (77116)
The following contributors merged PRs in this release:
@adamsilverstein @Adi-ty @aduth @alecgeatches @andrewserong @annezazu @aswasif007 @BugReportOnWeb @CGastrell @chriszarate @ciampo @coderGtm @DAreRodz @DarkMatter-999 @dinhtungdu @dkotter @dpmehta @ellatrix @gziolo @hbhalodia @iamchughmayank @Infinite-Null @ingeniumed @jameskoster @jeryj @jorgefilipecosta @jsnajdr @kushagra-goyal-14 @madhusudhand @MaggieCabrera @Mamaduka @manzoorwanijk @mehrazmorshed @mirka @nerrad @ntsekouras @oandregal @prachigarg19 @R1shabh-Gupta @ramonjd @samvaidya @sandipr942 @scruffian @shail-mehta @Shekhar0109 @shrivastavanolo @superdav42 @Swanand01 @t-hamano @talldan @tyxla @USERSATOSHI @yashjawale @yogeshbhutkar
Fetched May 1, 2026