github WordPress/gutenberg v23.9.0-rc.1
23.9.0 RC1

pre-release5 hours ago

Changelog

Enhancements

Components

  • Admin UI: Add Navigation component and Page navigation slot. (79746)
  • Align legacy form control focus rings with WPDS. (80417)
  • Base Styles: Align input-control mixin to design system. (81357)
  • Base styles: Streamline focus ring override. (81242)
  • Calendar: Support custom root roles. (81443)
  • CollapsibleCard: Support multiple header descriptions. (81227)
  • DataViews: Pass the WordPress locale to the date/datetime calendar controls. (81592)
  • Global Styles: Allow editing duotone palettes. (81605)
  • Menu: Add UI component. (79560)
  • RadioControl: Allow individual options to be disabled. (82026)
  • SearchableChipSelect: Add grouped items support. (80989)
  • SearchableChipSelectControl: Add form control to @wordpress/ui. (80980)
  • Theme: Add color warning diagnostics workbench. (81817)
  • UI: Accept locale codes in Calendar components. (81814)
  • UI: Add Spinner component. (81358)
  • UI: Add TextareaControl component. (81359)
  • UI: Add tooltips to Calendar and RangeCalendar navigation buttons. (81983)
  • UI: Align Calendar styling with WPDS tokens. (81438)
  • UI: Collapse item-popup item sizing to default and small. (81354)
  • UI: Expose keyboard shortcut presentation utilities. (81826)
  • UI: Set Calendar text direction automatically. (81982)
  • ui/Card: Use the default neutral border. (81746)

Block Library

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

Post Editor

  • Add command: View post. (66720)
  • Command Palette: Allow commands to override the category icon. (81787)
  • Editor: Defer hierarchical term filtering and soften announcements. (81422)
  • Editor: Migrate hierarchical term selector to @wordpress/ui. (81848)
  • Editor: Refactor 'ErrorBoundary' to use the new recommended components. (81638)
  • Editor: Simplify List View sidebar shortcut handling. (81693)
  • Editor: Surface debugging details in the ErrorBoundary. (81642)
  • Editor: Use PluginSidebar in GlobalStylesSidebar. (81570)
  • Pre-publish panel: Remove the headings that repeat the panel title. (81806)

Block Editor

  • Add an inserter to the parent selector. (81532)
  • Global Styles: Expose additional elements in Typography and Colors. (80852)
  • Patterns explorer: Refactor the category sidebar to use Tabs. (81807)
  • Quick Inserter: Standardize the design of the Browse all button. (81827)
  • Writing flow: Select next block on Enter key. (63484)
  • [mini] in-between indicator: Make symmetric. (68074)

Dashboard

  • Dashboard Widgets: Let the host decide which component renders an action link. (81740)
  • Dashboard Widgets: Promote high-relevance actions into a chrome footer. (81556)
  • Dashboard Widgets: Resolve widget types without a metadata module. (81738)

Fields

  • Export the package stylesheet. (81769)

DataViews

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

Collaboration

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

Site Editor

  • Update template section description. (81613)

Global Styles

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

Font Library

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

Bug Fixes

Components

  • InputControl: Hide the value-like placeholder Safari renders in empty date and time inputs in ui and components packages. (81991)
  • Admin UI: Fix the primary color of the Fresh admin color scheme. (81618)
  • BoxControl: Update the opposite side when ALT is held on the left or right input. (81530)
  • Button: Fix alignment in loading spinner for rtl screens. (81901)
  • DataForm: Fix the datetime control sending two updates per calendar interaction. (81440)
  • DataForm: Make the panel layout edit button the real field trigger. (80689)
  • DataViews: Fix date and datetime controls selecting the adjacent day. (81498)
  • DataViews: Fix invisible sticky Actions column divider. (82055)
  • DataViews: Sync the displayed calendar month with external value changes. (81635)
  • Duotone Picker: Stop the duotone bar offering to move its control points. (81850)
  • Fix Storybook accessibility issues in stories. (81777)
  • Improve text detection for button icon-with-text. (81521)
  • InputControl: Vertically center date and time input values in Safari. (81361)
  • Menu: Close non-modal menus on iframe interaction. (81952)
  • Modal: Stop Escape key propagation on dismiss. (81785)
  • PaletteEdit: Expose palette swatches as command buttons. (82023)
  • Storybook: Handle production module load failures. (81867)
  • Theme: Improve color ramp contrast safeguards. (81185)
  • UI: Fix accessibility issues in form primitives and their stories. (81853)

Block Library

  • Accordion Heading: Route theme.json spacing to the toggle button. (81976)
  • Dynamic Gallery block: Skip transforms that expect inner blocks, e.g. Image and Grid transforms. (82009)
  • Enable blockGap spacing supports in Query loop block. (79689)
  • Fix MediaPlaceholder drag eligibility. (81431)
  • Fix playlist track toolbar insertion. (81639)
  • Fix: Accordion: Anchored hash inside the accordion throws the malformed URL console error. (81780)
  • Fix: Skip empty block markup in navigation to prevent split UL elements. (78793)
  • Fix: Term Description block skips display filters inside Terms Query. (81290)
  • Icon: Fix margin being applied twice in the editor. (81292)
  • Inner Blocks: Fix bug that caused alignment controls to show in Image blocks within a Gallery. (81606)
  • Pattern: Disable visibility support. (81866)
  • Playlist Track: Improve track upload error flows. (81878)
  • Post Template: Fix mover arrows and labels for blocks inside the grid view. (81120)
  • Preserve layout and style attributes on Column transform. (81855)
  • Rename the media editor toolbar button to 'Edit image'. (81705)

Post Editor

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

Block Editor

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

Global Styles

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

URL

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

Data Layer

  • Core Data: Stop storing NaN pagination totals for unpaginated endpoints. (82059)
  • Core Data: Validate the parsed-blocks cache against registered block types. (81809)

Env

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

Boot

  • Restore centered snackbar notices. (81995)

Element

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

Collaboration

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

wp-build

  • Build Package: Use Core's boot module when a plugin has none. (81761)

Font Library

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

Media

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

Site Editor

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

DOM

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

Media Utils

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

Parsing

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

Paste

  • Fix: Stop stripping spaces inside inline HTML elements on paste. (76696)

Accessibility

Post Editor

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

Block Editor

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

Block Library

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

Media

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

Performance

Post Editor

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

Global Styles

  • Try caching gutenberg_get_global_styles. (81889)

Components

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

Experiments

Site Editor

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

Media

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

Post Editor

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

Dashboard

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

Documentation

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

Code Quality

  • Docs: Align @PARAM tag columns in test/ docblocks. (81905)

Components

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

Block Library

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

Post Editor

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

Data Layer

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

Block Editor

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

Dashboard

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

Media

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

Fields

  • Migrate last remaining JS file to TS. (81808)

Boot

  • Migrate styles to CSS Modules. (81756)

Layout

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

Private APIs

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

Global Styles

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

Tools

Build Tooling

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

Testing

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

Data Layer

  • Update 23.8 release changes on trunk. (81485)

ESLint plugin

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

First-time contributors

The following PRs were merged by first-time contributors:

Contributors

The following contributors merged PRs in this release:

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

Don't miss a new gutenberg release

NewReleases is sending notifications on new releases.