Gutenberg 23.7: Editor Fixes, Gallery Changes, and Developer Updates
Gutenberg 23.7 is available now, and its most noticeable changes address editor behavior that can disrupt content work: floated blocks no longer cover sticky blocks, device previews regain fixed mobile and tablet heights, and Pullquote line-height settings render correctly in the editor. You can download the Gutenberg plugin or open a Gutenberg 23.7 demo in WordPress Playground. This release also refines the dynamic Gallery mode introduced in Gutenberg 23.6 and adds several API, accessibility, build, and testing changes for developers.
Gutenberg 23.7: Editor Fixes, Gallery Changes, and Developer Updates
Gutenberg 23.7 improves day-to-day editing details while adding new component primitives and experimental controls. Here’s what changes for site builders, block developers, and teams working with the editor packages.
Editor behavior now matches the layout you expect from the front end and inspector settings.
Several visual defects have been corrected in the Block Editor. A floated block no longer overlaps a sticky block, and the empty block appender is positioned correctly inside blocks that capture their own toolbars. Pullquote custom line-height values now apply in the editor, so the editing canvas agrees with the front end.
Mobile and tablet previews again use fixed device heights. Gutenberg 23.7 also repairs cursor placement when you forward-delete empty blocks, stops the page from scrolling when the caret moves in blocks taller than the viewport, and improves block selection with Shift+Arrow and Shift+Click.

Dynamic Gallery mode uses a clearer detach action
The dynamic Gallery mode added in Gutenberg 23.6 previously exposed a toolbar action named “Convert to images.” Gutenberg 23.7 renames that action to Detach and shows a modal that explains the result before images are detached. The conversion is also treated as one undo level.


Three feature changes worth testing
Global Styles inheritance is now an experimental opt-in feature. Enable it from the Gutenberg Experiments settings page; when active, inherited Global Styles values are reflected in block inspector controls.
The Math block now uses ValidatedTextareaControl for LaTeX input. Parse errors wait until the field loses focus for the first time, instead of appearing on every keystroke, and screen readers no longer receive a per-keystroke error announcement.
Combobox, Select, and SelectControl now provide Group and GroupLabel subcomponents. These primitives give grouped choices a consistent composition model across the item-popup component families.
Enhancements across the editor packages
The release adds focus-ring color overrides through outset-ring__focus base styles. The Widget Dashboard now measures header fit and documents its chrome, while Widget Primitives ship as a script module.
Component updates include fixed-width search fields in DataViews and Font Library to prevent layout shifts, Shift+Click range selection in DataViewsPicker table, grid, and activity layouts, and a sandbox prop for the sandbox component. Number inputs hide native spin controls, SearchControl only renders a suffix when present, and the UI package adds Autocomplete.Row.
The Block Library adds end-to-end user-story coverage for Table of Contents alongside the Math input update. Post Editor gains a responsiveEditingEnabled setting that can hide the Responsive styles option, and Font Library navigation-page select sizing now matches DataViews.
Real-time collaboration (RTC) disables Quick Edit while a post is being edited. Global Styles extracts shared preset management from shadows and font sizes.
Bug fixes that affect plugins, blocks, and editorial workflows
At the data and rendering layer, Gutenberg updates view-configuration API versioning; rejects shape-mismatched view-config merges; defines empty-array behavior; removes nulls from appended members; and handles unmatched closing tags safely in createInterpolateElement. render_block_core_video() now accounts for a non-lowercase VIDEO tag.
Block Library fixes cover exiting Cover and Accordion with Enter, preserving an ordered List type on indent, showing a crop loading state in Media Editor, removing the redundant __heicUploadSupport flag, and restoring Navigation’s “Add block” option inside template parts. Other corrections shorten the Playlist toolbar label, add translation context to Query Loop’s “Offset” label, and remove a stray closing tag from Tumblr Social Link markup.
Block Editor fixes remove a duplicate focus ring from the background-image control, ensure color presets with the same hex value commit and display correctly, and resolve link-element styles in inspector controls for blocks that are links. RTC controlled-block synchronization no longer intercepts undo, while RichText no longer applies an input transform without onReplace and no longer crashes when files are pasted.
Post Editor now leaves undo to the browser in fields with their own undo behavior. Meta box headings match Gutenberg panels; block-level notes capture their target before saving, register the inline note format at import time, report saves consistently, and synchronize sidebar selection to the inline marker under the caret. The post-lock modal no longer wrongly reports that someone else took over for a locked-out viewer, notices use ThemeProvider with zero corner radius, and iOS removes its jumping hack and adds typewriter behavior.
Component fixes stop DataForm card and details validation from stealing focus, correct the root .prettierrc.js override, preserve GradientPicker identity by selecting presets via slug, fix Storybook’s Emotion jsxImportSource, and migrate ToolsPanel styles to an SCSS Module. Client-side media decodes only the first frame when creating still outputs from long animated GIFs, preventing upload hangs; media templates no longer force crossorigin on IMG tags; and wp-build synchronizes page-template preload fields with core-data.
Collaboration changes detach core’s mention kses filter in the baseline strip test and compact RTC data during serialization. The Media REST API backports the sideload-from-URL-path upload-size check. Theme JSON uses :Where() to level block-level preset class specificity, and the data layer preserves collaborators’ unsaved edits when another user saves.
Accessibility and performance changes
Alignment controls receive improved prop handling, and Navigation updates aria-expanded when users hover a submenu inside an overlay. Autocomplete also references its suggestion list through aria-controls and aria-haspopup.
For editor performance, Rich Text reads the contentEditable attribute in ownsSelection to avoid a forced layout, and Gutenberg includes a fix for a typing-performance regression. FlatTermSelector avoids unnecessary term refetches, while Core Data moves EntitiesSavedState out of the editor.
Experimental dashboard and Global Styles work
Dashboard Widgets now sanitize action and help-link href values. The Global Styles inheritance interface is explicitly placed behind the Gutenberg experiment flag.
Developer-facing maintenance and code-quality changes
Documentation now includes nvm use instructions in AGENTS.md, progressive discovery guidance for agent instructions and skills, missing global documentation in table-of-contents/index.php, and missing file- and class-level docblocks for WP_Icon_Collections_Registry. It also clarifies agent-guidance discovery, getBlock behavior with inner block controllers, backporting to WordPress core, view-configuration filter callback return values, iframe guidance for Gutenberg 23.6, admin color-scheme Storybook examples, dialog-versus-drawer guidance, server-side view-configuration filters, and inline URL documentation.
Code quality work adds missing non-recommended components to the ESLint denylist, updates webpack-dev-server to ^5.2.1, fixes changelog checks for forked pull requests, and refactors Interactivity API directives into self-registering modules. RTC adopts array_any() for newer-compaction polling checks and str_contains() in WP_Sync_Config; Storybook builds resolve specifiers as URL-style strings; and tools resolve dependencies independently from the node_modules layout.
Component maintenance uses the shared focus-ring mixin for ExternalLink, makes useSelectionProps layout agnostic, and migrates Disabled, FormTokenField, and SearchControl to SCSS Modules. Dependencies move to date-fns 4.4.0 and Color.js 0.7.1; the colorjs.io update removes a workaround; Storybook uses arrays for child components; and published theme packages disallow src.
The Block Library guards against attribute values that throw errors, makes editableRoot a private block setting rather than a public support, includes WordPress-Develop 7.0 merge fixes, uses null coalescing for Page List’s parentPageID, removes and lints against redundant @jest-environment jsdom, removes unnecessary __next40pxDefaultSize props, changes Table of Contents to str_contains(), and removes the default paragraph from the Tabs tab-panel template.
Further refactoring deduplicates duotone utilities into global-styles-engine, reduces duplicate preset utilities, and converts URLInput to a function component. Post Editor validates that SVG icons include viewBox and cancels an in-flight note hover highlight when focus leaves a thread. The data layer updates memize to 2.1.1, Global Styles renames unit-test files and drops the .spec.js suffix, Site Editor replaces Theme usage in the canvas loader with CSS, and collaboration moves its real-time code to lib/experimental/collaboration.
Build, release, and test tooling
Release tooling updates the release-form screenshot for GitHub’s new Release label UI and requires a working GitHub CLI for cherry-picking. Build tooling adds an independent React 18 vendor package, handles paths containing spaces in the development script, skips polymorphism prop typings on intersections, includes extracted styles in the DependencyExtractionWebpackPlugin asset-version hash, and adds a React 19 end-to-end compatibility test for the boolean inert attribute.
The build also resolves Prettier explicitly for isolated layouts, removes Emotion as Storybook’s JSX import source, prevents an infinite WP Build worker loop, and improves preflight npm-access checks. Test updates fix Jest’s TypeScript declaration ignore pattern, upgrade Jest to v30 with breaking changes, limit Flakiness.io to the canonical Gutenberg repository, correct a zero-millisecond Selecting blocks performance metric, repair an RTC deleted-user multisite test, and add Site Editor end-to-end coverage for view-configuration extensibility.
How to evaluate Gutenberg 23.7
Start by testing dynamic Gallery detachment and its one-step undo behavior on content that uses the new mode. If you maintain custom blocks, check floated and sticky layouts, toolbar-capturing blocks, Pullquote line height, responsive preview behavior, rich-text selection, and paste handling. For component libraries, test grouped Select controls and review any code affected by the view-configuration, Global Styles inheritance, React, Jest, or package dependency changes.
References / Sources
Emma Richardson
UI/UX designer and frontend developer. React and the modern JavaScript ecosystem are my expertise. Passionate about user experience and accessibility.
All posts