releases.shpreview

What’s new in Gutenberg 23.6? (July 22, 2026)

v23.6

“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.6?

Gutenberg 23.6 has been released and is available for download!

This release adds cropping controls to the Media editor, brings it to the Cover block, and extends responsive style states with aspect-ratio, flex-alignment, and text-shadow controls. Other changes include a minimum WordPress version bump to 6.9, Icon block transforms, and real-time collaboration improvements.

Try Gutenberg 23.6

Table of contents

  1. The Playlist and Tabs blocks are now stable
  2. Enhancements to Notes
  3. A dynamic mode for the Gallery block
  4. Icon collections and a custom icon registration API
  5. Other Notable Highlights

The Playlist and Tabs blocks are now stable

Two blocks that have lived behind the block experiments flag are now part of the default block library, and are available to everyone without enabling an experiment.

The Playlist block plays a list of audio tracks with track metadata, artwork, and the waveform and track length options. The tracklist itself is configurable: you can set the play order, and toggle the artwork, artist names, track numbers, and track length individually to suit the design of your page. For more details on where the block is headed, see the iteration issue for WordPress 7.1.

Playlist block

The Tabs block family lets you organize content into tabbed sections, following the best practices set out in the tabs pattern from the W3C ARIA Authoring Practices Guide. Each panel accepts any blocks you like, and the tab buttons come with their own color, typography, border, and spacing controls, so the navigation can be styled to match your theme. For the details, see the tracking issue that drove the block toward stabilization.

Tabs block

Enhancements to Notes

Notes continues to move toward a full commenting workflow, with two significant additions in this release.

Inline notes let you attach a note to a specific text selection rather than to a whole block. Select part of a paragraph, add a note, and the highlight stays anchored to that text as you keep editing around it. A single block can carry multiple inline notes, sorted by the order they appear in the block, and none of the highlighting shows up in the published post. (#78218)

Inline notes

@mention autocomplete makes it possible to direct a note at a specific person. Typing @ inside a note opens an inline, keyboard-navigable list of users; selecting one inserts a mention chip that links to the user’s author page and carries the mentioned user’s ID. (#79604)

@mention autocomplete

A dynamic mode for the Gallery block

The Gallery block can now display media dynamically instead of only the images you pick by hand. The new Dynamic Gallery variation shows all media currently attached to the post, in both the editor and on the frontend.

Rather than being a separate block, it is a variation of the Gallery block, so you can move between the two without losing your settings: start a Dynamic Gallery from the block placeholder, and switch it to a regular gallery whenever you want to edit the list of images by hand. (#78796)

Icon collections and a custom icon registration API

Icons can now be registered by plugins and themes, and are organized into collections.

Alongside the default core icons, the API has been extended and utility functions added so that you can publish an icon set of your own as a collection. Icons are shared data for the whole site, available in both the editor and on the frontend. (#77260)

The icon picker has been updated to match. A new Collections tab lists collections in the sidebar — like the Pattern Explorer — so you can browse and search within one set rather than scrolling a single combined list. The collection containing the currently selected icon is opened by default, and icons load asynchronously to keep the UI responsive when a large number of them are registered. (79681) (#78332)

Other Notable Highlights

  • Customizable viewport sizes. Tablet and mobile preview widths can now be set in theme.json, so device previews can match your theme’s actual breakpoints. (#79104)
  • The admin bar is shown by default in both the Post Editor and the Site Editor. (#79197)
  • Apply Globally is now selective. When applying a block’s styles globally, you can choose which style properties to apply instead of applying all of them. (#79839)
  • New block support for the Custom HTML block. innerContent support for static inner blocks has been added and adopted by the HTML block. (#79115)
  • Background gradient support has been added to the Accordion, Post Content, Pullquote, Quote, and Verse blocks. (#79840, #79842, #79841, #79843, #79391)
  • The Post Editor is now always iframed, aligning its rendering with the Site Editor. (#74042)

Changelog

Features

Post Editor
  • Allow setting viewport tablet and mobile values in theme.json. (79104)
  • Experimental: Expand DataForm inspector to patterns. (79452)
  • Notes: Add @mention autocomplete. (79604)
  • Notes: Inline (partial-text) notes via hybrid marker + strip-on-render approach. (78218)
  • Show the admin bar in the Post and Site Editor by default. (79197)
Block Editor
  • Share block-bindings context assembly between call sites. (79855)
Data Layer
  • Blocks: Add innerContent support for static inner blocks, adopt it in the HTML block. (79115)
Components
  • DataViews: Add a richtext control backed by a private RichTextControl shell in wordpress/components. (78471)
Block Library
  • Icons: Add PHP method(s) for rendering inline SVG icons from the registry. (78332)

Enhancements

  • CSS: Follow-up fixes to split_selector_list(). (79723)
  • Document widget relevance, help. (80007)
  • Expose widget category through the build pipeline and REST API. (79638)
  • Omnibar: Move the ‘site icon in admin bar’ feature from experiment to 7.1 compat. (79807)
  • Scripts: Make ‘test-e2e’ run Playwright and remove Puppeteer. (80058)
  • Site Editor v2 experiment: Hide admin bar in distraction-free mode. (79937)
  • Widget Dashboard: Remove layout-settings editing. (79903)
  • Widget Dashboard: Reserve paint space for tile focus rings. (79990)
  • Widget Primitives: Add WidgetAttributeField for typed attribute schemas. (79544)
  • Widgets: Add a declarative help metadata field, surfaced as a header infotip. (79830)
  • Widgets: Add attribute relevance and inline editing in the tile toolbar. (79735)
  • Widgets: Translate title, description, and keywords server-side. (79701)
Block Library
  • Accordion block: Add background gradient support. (79840)
  • Add ariaLabel supports for Tab List Block. (79948)
  • Add icon state classes to Accordion block. (74257)
  • Add layout and block spacing support to Latest Posts block. (77989)
  • Add option to exclude current post from query block. (64916)
  • Animated GIF to video conversion (via mediabunny). (78410)
  • Classic block: Remove migration notice and restore inserter availability. (79894)
  • Cover: Allow restricting video embed providers. (80092)
  • File Block: Deduplicate the file to audio/video/image transforms. (80158)
  • GIF to video conversion: Make it opt-in. Switching via block transforms. (80072)
  • Generalize playlist block wording. (80071)
  • Icons: Filter the icon library picker by collection. (79681)
  • Make the Playlist blocks stable. (80203)
  • Move styles into specific waveform styles dropdown area. (80060)
  • Playlist Block: Add artwork to play button. (79938)
  • Playlist Block: Add waveform and waveform background color options. (80065)
  • Playlist: Seek value text localization. (79834)
  • Playlist: Update waveform player dependency. (79825)
  • Post Content block: Add background gradient support. (79842)
  • Pullquote block: Add background gradient support. (79841)
  • Quote block: Add background gradient support. (79843)
  • Responsive editing: Hide block toolbar slots when editing a responsive style state. (79998)
  • Second click or space/enter keypress on playing track pauses it. (80066)
  • Stabilize Tabs block. (80163)
  • Tabs: Combine and cleanup toolbar controls. (79537)
  • Tabs: RichText handlers for adding/removing tabs. (79583)
  • Tabs: Wrap tab list onto multiple lines by default. (80097)
  • Term Name: Migrate to textAlign block support. (76581)
  • Use playlist icon for Playlist block. (80174)
  • Verse block: Add background gradient support. (79391)
  • Icon block: Show text and background color controls by default. (80251)
  • Tab List: Add toolbar buttons to reorder tabs. (80107)
Components
  • Base Styles: Make Sass token fallbacks self-contained. (79651)
  • Base Styles: Reapply wpds-var Sass helper. (79470)
  • BorderBoxControl: Hard deprecate 40px default size. (79420)
  • BorderControl: Hard deprecate 40px default size. (79418)
  • Button: Align focus styles with design system. (78646)
  • Checkbox: Add form primitive to wordpress/ui. (80039)
  • ComboboxControl: Hard deprecate 40px default size. (79636)
  • Components/Button: Don’t use box-shadow for secondary buttons. (79982)
  • CustomSelectControl: Hard deprecate 40px default size. (79796)
  • DS: Name font weight tokens by intent. (80093)
  • FontSizePicker: Hard deprecate 40px default size. (79481)
  • FormFileUpload: Hard deprecate 40px default size. (79655)
  • FormTokenField: Hard deprecate 40px default size. (79720)
  • InputControl: Hard deprecate 40px default size. (79962)
  • NumberControl: Hard deprecate 40px default size. (79861)
  • Packages: Update Ariakit to 0.4.32. (79860)
  • Radio: Hard deprecate 40px default size. (79657)
  • RangeControl: Hard deprecate 40px default size. (79590)
  • SelectControl: Hard deprecate 40px default size. (79797)
  • Theme: Remove elevation tokens. (80099)
  • Theme: Restrict seed colors to opaque values. (79773)
  • ToggleGroupControl: Hard deprecate 40px default size. (79656)
  • TreeSelect: Hard deprecate 40px default size. (79550)
  • UI: Add LinkButton. (78944)
  • UI: Add Skeleton component. (79671)
  • UI: Update @base-ui/react to 1.6.0. (79408)
  • UnitControl: Hard deprecate 40px default size. (79721)
  • theme: Validate npm publish surface. (79552)
  • ui/IconButton: Restore default tooltip delay. (79505)
  • DataViews: Add shift-click range selection. (80046)
Post Editor
  • Commands: Add toggle for content-only pattern/template part editing. (78383)
  • Commands: Suggest pattern editing toggle for selected patterns. (79566)
  • Editor: Preload the view configuration form request for the DataForm inspector. (79910)
  • Media Inserter: Add pagination to core media inserter categories. (80038)
  • Media Inserter: Allow core media categories to subscribe to changes. (79921)
  • Notes: Add a “Resolved” divider above resolved notes. (80019)
  • Notes: Remove snackbar when resolving or reopening a note. (80017)
  • Preview dropdown: Simplify viewport style state descriptions. (80146)
  • RTC: Remove collaboration notification defaults filter. (79771)
  • Rename ‘Responsive editing’ toggle to ‘Responsive styles’. (80241)
  • Responsive style states: Update responsive editing help text and avoid showing desktop badge. (79615)
  • Restore responsive editing viewport dropdown copy changes. (79999)
  • View config: Add better post type default form. (79625)
  • Visual revisions: Label autosaves in the revisions timeline. (79950)
  • Visual revisions: Make the autosave notice work with the visual revisions UI. (79947)
  • [RTC] Add granular collaboration control. (79184)
  • Notes: Remove “Add note” from the inline styles dropdown. (80531)
  • Device preview dropdown: Use active color for device icon when responsive styles are active. (80346)
  • Editor: Allow selecting which block styles to apply globally. (79839)
  • Notes: Add placeholders to the RichText fields. (80296)
  • Notes: Increase contrast between avatar border colors. (80285)
Block Editor
  • Add contrast checking for viewport and pseudo states. (80223)
  • Block variations: Support innerContent for the Custom HTML block. (79659)
  • Block visibility: Add theme json opt out. (76559)
  • Classic Block: Remove conversion from BlockInvalidWarning. (79500)
  • Color popover: Move contrast warning notice to the bottom. (79512)
  • Enable text alignment to be set by viewport state. (80037)
  • FontAppearanceControl: Hard deprecate 40px default size. (79635)
  • FontFamilyControl: Hard deprecate 40px default size. (79593)
  • Grid: Add option to stretch columns with auto-fit for better layout flexibility. (79356)
  • LetterSpacingControl: Hard deprecate 40px default size. (79533)
  • LineHeightControl: Hard deprecate 40px default size. (79589)
  • Media Inserter: Guard attach, detach, and invalidate behind a ! isExternalResource check. (79978)
  • Pattern editing: Fade blocks outside the edited pattern in List View. (73997)
  • Responsive editing: Add a Tooltip to the viewport / states badge. (80080)
  • Reflect inherited Global Styles values in block inspector controls. (80481)
Icons
  • Add “sites” icon. (80094)
  • Add APIs for collection and icon registration. (77260)
  • Add Playlist icon. (80168)
  • Add repeat all icon. (79698)
  • Icons Registry: Allow digits and underscores in icon slugs. (79623)
Dashboard
  • Widget Dashboard: Anchor settings drawer to the right and toggle it from the gear. (79683)
  • Widget Dashboard: Refactor tile header and toolbar chrome. (79639)
  • Widget Primitives: Add a field type registry for widget attributes. (80148)
  • Widget inserter: More accurate widget previews. (79517)
  • Widgets: Auto-save inline attribute edits. (79808)
Plugin
  • Experiments: Move screen under Settings, drop top-level Gutenberg menu and Demo page. (79456)
  • Release: Harden all npm package release paths. (79905)
  • Release: Harden latest npm metadata publishing. (79904)
  • Release: Make npm publishing rerunnable. (80187)
  • Global Styles: Limit the inherited value treatment to the Gutenberg plugin. (80555)
Site Editor
  • Theme: Fill semantic token state gaps. (79770)
  • Theme: Make wordpress/theme ESM only. (80063)
Data Layer
  • Icons: Add an icon collections REST endpoint and tighten name rules. (79686)
  • Packages: Widen React peer dependency support to include React 19. (80024)
  • Client Side Media: Honor image_strip_meta and image_max_bit_depth on the client upload path. (80218)
Global Styles
  • Migrate color palette tabs to wordpress/ui. (79281)
  • Show skeleton placeholder while previews load. (79849)
DataViews
  • View Config: Add version handling. (79809)
Design Tools
  • Global Styles: Match block panel order to the block inspector. (79794)
Extensibility
  • Guidelines: Add Blocks as a registry scope. (79709)
Media
  • Media Editor: Use new Tabs component from the ui package, and its minimal variant. (79664)
Connectors screen
  • Connectors: Add application password settings UI. (79403)
Client Side Media
  • Media: Return the filtered wp_editor_set_quality value in the upload response. (78420)

Bug Fixes

  • Abilities: Support URI schema format. (79555)
  • Command Palette: Show the search icon on desktop as well. (79881)
  • Fix: DataForm inspector shows raw “auto-draft” status for new posts. (79914)
  • Media: Fix fatal error from narrowed create_item_from_url() visibility. (79972)
  • Site Editor: Update default theme color from fresh to modern. (79814)
  • design-system-mcp: Use fixed version for alpha MCP server. (80061)
  • lintstaged: Avoid appending filenames to the prelint:Js command. (79800)
  • Core Abilities: Restore the ready promise and lazy-load via dynamic import. (79155)
Block Library
  • Add translation comment to waveform styles. (80112)
  • Block position: Allow options dropdown to flip. (79798)
  • Blocks: Rename _gutenberg_apply_content_filters() to _wp_apply_content_filters(). (80191)
  • Cover Block: Fix unsaveable state when clearing an embed video background. (80184)
  • Enable default gap processing on Gallery block. (79984)
  • File Block: Changed the context for fetching the media. (80085)
  • Fix – Accordion: Text in a closed accordion panel cannot be found via the browser search. (74744)
  • Fix and permit unitless zeros used in CSS calc functions. (79786)
  • Fix global gap styles for Gallery block. (80030)
  • Fix playlist artwork removal on track switch. (80025)
  • Fix playlist waveform artist rendering. (80104)
  • GIF block variation: Remove icons from “Display as” toolbar buttons and only show when block can be inserted. (79985)
  • Icon block: When the default icon is unregistered, nothing is displayed. (80166)
  • Latest Posts: Parse blocks in full content display. (74866)
  • Make playlist pause button visually match play button. (80217)
  • Navigation Link/Submenu: Run post-status check also without Gutenberg plugin (draft/deleted links regression). (79748)
  • Navigation Link: Fix “[object Object]” in link preview for untitled entities. (79616)
  • PHP-Only blocks: Forward current post ID to server render. (78909)
  • Playlist block: Avoid laggy layout shift when changing tracks. (79497)
  • Playlist: Fix flashing track state when adding new track. (80076)
  • Playlist: Show album art thumbnails. (79942)
  • Playlist: Use PlainText v2 to avoid HTML entities. (80068)
  • Remove Playlist border radius support. (79753)
  • Responsive editing: Apply crop dimensions to image block placeholder. (80162)
  • Select tab panel when caret moves into tab. (79558)
  • Tab List: Fix render inline formatting on frontend. (79554)
  • Tabs: Fix active tab switching from a stale inner-block selection. (79981)
  • Tabs: Fix dirty editor state on mount caused by tab-list sync. (79540)
  • Tabs: Fix rich text label comparison when syncing the list. (79582)
  • Tabs: Prevent tab list from moving focus during revision navigation. (79730)
  • Tabs: Remove redundant block selection from Add/Remove tab actions. (79571)
  • Fix crashes when manipulating locked blocks. (80509)
  • Playlist: Fix playback of tracks served without CORS headers. (80533)
  • Fix default aspect ratio for lazy loaded Featured image. (80386)
  • Fix playlist block styling. (80312)
  • Fix: Allow icon labels to wrap with word breaks and no ellipsis. (80256)
  • Hide color controls for Navigation and Social Icons when viewport sta…. (80289)
  • Playlist: Fix track insertion. (80200)
  • Try fixing responsive layout in Nav block. (80305)
  • Media: Remove the redundant __heicUploadSupport flag (#80452). (80486)
Components
  • Autocomplete: Use regular weight for result items. (80196)
  • BorderBoxControl: Fix unlink button positioning after View Emotion migration. (79967)
  • Button: Fix corner artifacts by using background-clip: Border-box. (79524)
  • Button: Fix focus ring for link. (79837)
  • Button: Hide Core focus ring when button as link is pressed. (80082)
  • DataViews: Fix infinite-scroll jump on async page loads. (79546)
  • Divider: Restore lower border specificity. (79534)
  • ExternalLink: Stop setting default rel. (79743)
  • IconButton: Use length zero for inline padding. (79722)
  • Panel: Fix focus style for toggle button. (80064)
  • SandBox: Inject resize script into head to stop it leaking as text. (79920)
  • Storybook: Scope documentation theme providers. (79496)
  • Tabs: Fix stale overflow fade as content settles on load. (79856)
  • Theme: Fix token story swatch accessibility. (79960)
  • UI: Restore Link focus styles. (80091)
  • useMergeRefs: Apply ref changes after out-of-render attachment. (80133)
  • ContentEditableControl: Fix invalid label association with contenteditable div. (80441)
  • Backport ColorPicker cursor shaking fix to WordPress 7.1. (80435)
  • DataViews: Fix the list layout ignoring some settings when groupBy is set. (80255)
  • DataViews: Fix the unintended gap between list layout items when groupBy is set. (80254)
  • UI: Backport compat overlay fixes to WordPress 7.1. (80322)
  • fix: Set dataviews popover hover text color. (80105)
Block Editor
  • DimensionControl: Include styles in stylesheet. (79916)
  • Editor: Use the DS focus color for all sidebar elements. (80087)
  • Fix clipped/doubled focus outline on inserter block list items. (79845)
  • Fix unsetting values in viewport states for grid and constrained layouts. (79520)
  • HTML Block: Preserve innerContent when transforming to group, columns. (79887)
  • Move inspector controls styles slot back to previous position. (80111)
  • Render the selected static inner block synchronously. (79726)
  • Rich text: Cut through the record instead of execCommand. (80155)
  • Writing flow: Fix selection end mapping at block boundaries. (80126)
  • useTypingObserver: Capture the window reference for cleanup. (78772)
  • Global Styles: Resolve per-level heading element styles in block inspector controls. (80495)
  • Redirect editing events to extension handlers under editableRoot. (80287)
  • Writing flow: Fully select the items when a selection extends down into a nested item. (80492)
Post Editor
  • Editor: Render back button as proper , which cleans up custom CSS. (79862)
  • Editor: Render post preview action as a menu item. (80195)
  • Fix clipped focus ring on the document bar. (80084)
  • Image: Sideload external images on the server when uploading to the library. (79409)
  • Notes: Allow canceling the autocompleter popover with Escape without dismissing the note form. (80224)
  • Device type preview: Fix collapsing to content height. (80553)
  • Notes: Align floating threads with their inline marker. (79877)
  • Wrap notices in ThemeProvider with 0 corner radius. (80557)
  • Autocompleters: Don’t pre-encode mention search terms. (80377)
  • Editor: Disable canvas resizing while zoomed out. (80391)
  • Fix upload snackbar stuck in uploading state on server-side uploads. (80345)
  • Notes: Finish WPDS treatment for mention chips. (80300)
  • Responsive styles: Open inspector sidebar when toggling. (80307)
  • Responsive styles: Use viewport dropdown to control states for in-editor global styles sidebar. (80339)
  • Fix upload snackbar double-counting a single HEIC upload in Safari. (80436)
  • Editor: Restore fixed device preview height for mobile and tablet. (80466)
Site Editor
  • Editor: Fix regression and restore the back button focus ring. (80029)
  • Editor: Render mobile back button as proper and remove custom CSS. (80032)
  • Editor: restore the behavior of only showing back button focus ring on :Focus-visible. (80114)
  • Style Book: Pass site editor settings to StyleBookPreview on the styles route. (80035)
Media
  • Experimental Media Modal: Ensure selection is properly cleared between open/close. (79731)
  • Media Modals: Invalidate attachment caches when closing the modal. (79844)
  • Media editor modal: Balance top padding for sidebar controls. (79660)
Client Side Media
  • Apply and correct EXIF orientation for client side sub-sizes. (79384)
  • Media: Backport client-side media improvements from WordPress core backports. (79603)
  • Vips: Preserve bit depth of high-bit-depth AVIF in sub-sizes. (79556)
Icons
  • Playlist icon: Fix bug with missing viewbox. (80180)
  • Store the sanitized SVG content when registering an icon. (80508)
Block API
  • Block Supports: Ensure that custom CSS is output after the block library styles. (80062)
Guidelines
  • Render block icons like the editor so every icon displays correctly. (79738)
Collaboration
  • RTC: Fix autosave update with no content. (79591)
  • Notes: Arm the mention kses allowance on REST note creation. (80221)
Style States
  • Style Engine: Preserve important gradient declarations. (79568)
  • Hide block style variations when state is enabled in global styles. (80341)
Data Layer
  • RTC: Fix undo / redo breakage when plug-in with metabox is loaded. (79510)
Connectors screen
  • Prevent overscroll bounce for stage and inspector surfaces. (78587)
Global Styles
  • Block Supports: Handle nested array block gap values properly. (80464)
  • Style Book: Restore live global styles updates on the styles route. (80459)

Accessibility

Media
  • Media editor: Address accessibility review feedback. (79966)
Post Editor
  • Editor: Move focus to revisions slider when entering revisions mode. (79691)
  • Replaces the title attributes used by revision inline diff annotations with aria-describedby. (80440)
  • Revisions: Specify block level diff status via aria-label. (77779)
Components
  • A11y: Replace local aria-live regions with speak(). (79600)
Block Library
  • Focus first tab when adding Tabs block. (79507)

Performance

  • CI: Avoid full-history checkout for the root-dependencies check. (79489)
Block Library
  • Latest Posts: Fix slow category selection with large category lists. (80198)
Data Layer
  • RTC: Only apply CRDT updates synchronously when collaborating. (79991)
Block API
  • Block Supports: Prevent Additional CSS duplication inside Query Loop. (78282)
Global Styles
  • prepend_to_selector: Optimized with str_replace(). (76556)

Experiments

  • Move long intro to content. (79578)
  • Shorten the page name. (79579)
Post Editor
  • Add PluginPostStatusInfo in DataForm post summary. (79586)
  • Media Inserter: Try adding a simple Attachments category with attach and detach behaviour. (79336)
Guidelines
  • Knowledge: Dissolve the Guidelines singleton into per-scope rows. (79263)
  • Knowledge: Rename the Guidelines CPT storage primitive to Knowledge. (79149)
Block Library
  • Dynamic Gallery Block: Attempt a dynamic mode of the gallery block. (78796)

Documentation

  • Add missing docblocks to client-assets.php. (80135)
  • Added Missing Global Documentation. (79827)
  • Backfill unreleased changelog entries for the widget packages. (79909)
  • Badge: Update storybook with “don’t use icons” example. (79585)
  • Components: Add missing descriptions for design system components. (79460)
  • Components: Document CSS module class composition. (79490)
  • Components: Link recommended UI component. (80127)
  • Design system MCP: Document Codex CLI prerequisite for MCP setup. (79917)
  • Docs: Add a widget anatomy doc and lighten the widget system doc. (79435)
  • Docs: Add image hosting guidance to the documentation contributors guide. (79574)
  • Docs: Add missing since, param, and return tags in REST API compat file. (80079)
  • Docs: Clarify release recovery steps. (79884)
  • Fix typo in inline comment in collaboration.php. (80147)
  • Packages: Backport UI and theme release changelogs. (79690)
  • Polish package changelog cleanup. (79826)
  • Theme: Clarify focus token naming documentation. (79764)
  • Theme: Correct documented default background seed. (80237)
  • Theme: Document and test build plugin transform boundaries. (80088)
  • Theme: Document ramp memoization contract. (79459)
  • Theme: Document token naming grammar. (79769)
  • Theme: Remove experimental package messaging. (80049)
  • Theme: Update design token format links. (80052)
  • Theme: Use token reference as documentation source. (79829)
  • ThemeProvider: Document wrapper customization scope. (79763)
  • Updating image urls. (79529)
  • WP Build: Improve documentation for routes. (79688)
  • stylelint-config: Enable token fallback rule. (79768)
  • theme: Clarify package documentation. (79961)

Code Quality

  • Added Missing Global Documentation. (80033)
  • Backport Changelog: Link Core PR #12007 for #75793. (78786)
  • Base Styles: Disallow direct var(–wpds-*) usage. (79424)
  • Build: Move typescript and rimraf out of the root package.json. (80086)
  • CODEOWNERS: Add ownership for widget dashboard areas. (79484)
  • Code Modernization: Use str_starts_with() in WP_Theme_JSON and WP_Duotone. (79519)
  • Dedupe lockfile. (79618)
  • Dependencies: Fix bin resolution, type mismatch, and missing dependencies. (79806)
  • Deprecate @wordpress/reusable-blocks public APIs. (79805)
  • Duotone: Use HTML API class_list for duotone wrapper class handling. (79531)
  • E2E: Ban uuid package via ESLint, use crypto.randomUUID() instead. (79673)
  • Jest: Add missing clsx dev dependency. (79677)
  • Lint-staged: Match lint:Css file globs. (79918)
  • Notes: Simplify inline-note marker stripping to match core backport (#78218 follow-up). (79670)
  • Theme: Use public design token stylesheet imports. (80050)
  • Update webpack to 5.108.1. (79633)
  • Upgrade browserslist to ^4.28.4. (79630)
  • Use null coalescing operator instead of isset() ternaries. (79946)
  • stylelint-config: Convert configuration to ESM. (79755)
  • wp-build: Allow wordpress/theme 1.x peer versions. (80089)
  • Release: Resolve commander from the test file in the release CLI test. (80357)
Block Library
  • Blocks package: Stabilize cloneSanitizedBlock and sanitizeBlockAttributes. (79928)
  • Blocks: Rename _wp_apply_content_filters() to _wp_apply_block_content_filters(). (80225)
  • Button: Fix suppressed ESLint errors. (79944)
  • Dedupe @testing-library/dom to a single 10.4.1 in the lockfile. (79631)
  • Embed: Refactor ‘EmbedPlaceholder’ to use recommended components. (79759)
  • Fix linting of waveform test. (80124)
  • Heading: Fix ESLint warnings. (79694)
  • Icons: Unify collection-scoping route param on collection and validate description. (80113)
  • List: Fix suppressed ESLint errors. (79983)
  • Media Editor: Remove inline cropper (follow-up to #78653). (78654)
  • Playlist: Simplify block track state. (79448)
  • Playlist: Simplify waveform metadata updates. (80193)
  • Remove redundant @jest-environment jsdom pragmas from unit tests. (79672)
  • Remove redundant parentheses around assignments. (79516)
  • Replace obsolete View primitive with plain div. (79767)
  • Stylelint: Enforce class naming for all stylesheets. (79900)
  • Tabs: Remove editor-only block context. (79848)
  • Tabs: Remove unnecessary callback memoization. (79567)
  • Use modern PHP string functions instead of strpos/substr. (79927)
  • Misc fixes for WordPress-Develop 7.0 merges. (80444)
  • Playlist: Update since tags to 7.1.0. (80317)
Components
  • Declare @types/node explicitly and harden no-unsafe-wp-apis. (79626)
  • FocalPointPicker: Complete __next40pxDefaultSize cleanup. (79487)
  • Jest: Mock CSS module class names. (79535)
  • Migrate Flex to SCSS module. (79450)
  • Migrate Spacer to SCSS module. (79449)
  • Migrate Surface to SCSS module. (79445)
  • Migrate Theme away from Emotion. (79447)
  • Migrate Truncate to SCSS module. (79446)
  • Migrate View away from Emotion. (79443)
  • QueryControls: Complete __next40pxDefaultSize cleanup. (79485)
  • Remove unused FocalPointPicker style.scss. (79902)
  • SearchControl: Complete __next40pxDefaultSize cleanup. (79538)
  • Stylelint: Enforce module class naming in UI packages. (79504)
  • Stylelint: Lint all CSS file extensions. (79957)
  • Theme: Cover display contents wrapper focus behavior. (80056)
  • Tools: Restrict layout effect imports in UI and theme. (79476)
  • Update @terrazzo/* to 2.4.0 and regenerate design tokens. (79627)
  • Update stylelint to 16.26.1. (79648)
  • RichTextControl: Replace DOM focus tracking with a single React-tree focus boundary. (80324)
Block Editor
  • Media Inserter: Omit page arg from requests for the first set of results. (80219)
  • Rich Text: Move RichTextShortcut and RichTextInputEvent into wordpress/rich-text. (79828)
  • Rich text: Synchronize the selection before events that consume it. (80151)
  • Simplify layout panel selector getter. (80176)
  • Subscribe to selectionchange permanently in rich text. (79712)
  • TextIndentControl: Remove unnecessary __next40pxDefaultSize prop. (79597)
  • Typewriter: Remove the block selection gate. (80130)
  • Use core/registered-block in reducer tests. (79522)
Post Editor
  • Declare undeclared workspace dependencies. (79684)
  • Editor: saveDirtyEntities: Don’t allow onSave to filter records. (79850)
  • Observe typing on the writing flow node. (80131)
  • Style Book: Migrate to Tabs from wordpress/ui. (80040)
  • Notes: Render @ mentions as span chips and narrow the kses class allowance. (80528)
  • Notes: Replace blur-deselect bookkeeping with useFocusOutside. (80222)
Icons
  • Add Storybook React Vite dev dependency. (79506)
  • Icons Registry test: Fix trigger_error suppression on WP < 7.0. (79607)
  • Validate SVG icons include currentColor. (79751)
  • Backport from Core: Improve icon name unit tests. (80552)
Design Tools
  • Block Style Variations: Simplify block style variation selector regex. (79924)
  • Block Supports: Guard elements hover rendering against missing hover selector. (79511)
Plugin
  • Move icon tests out of phpunit/experimental. (79695)
  • Move real-time collaboration compat code to wordpress-7.1. (79863)
  • Icons: Fix collection unregister not removing icons after core added its own registry. (80292)
Guidelines
  • Guidelines end-to-end Tests: Wait for boot to load copy page. (79663)
  • Use str_starts_with() in is_block_meta_key(). (79491)
DataViews
  • Sync changes from core for view-config version handling. (80170)
Widgets Editor
  • Edit Widgets: Remove unused customizer-edit-widgets-initializer style.scss. (79915)
Client Side Media
  • Vips: Add positional-crop test for high-bit-depth AVIF. (79880)
  • Vips/upload-media: Consolidate optional params into options objects. (80330)
Data Layer
  • Packages: Backport package release metadata. (79702)
Patterns
  • Pattern editing: Use section block selector for pattern display identity. (79565)
Global Styles
  • Reject non-string custom CSS in the REST controller. (80338)

Tools

  • CODEOWNERS: Exclude eslint suppressions.json from /tools ownership. (80125)
  • CODEOWNERS: Exclude stylelint suppressions.json from /tools ownership. (80171)
  • Project automation: Stop flagging returning contributors as first-timers when they use hidden email addresses. (79987)
Testing
  • Add an end-to-end test for single paragraph selection on triple click. (79706)
  • Automated Testing: Configure lint:Css to report needless disables. (79788)
  • Automated Testing: Enforce dependencies checks consistently for development files. (79703)
  • Automated Testing: Enforce no-unresolved checks for test files. (79718)
  • Automated Testing: Use three-dot diff comparison for changelog checks. (79548)
  • Fix flaky “can use appender in site editor sidebar list view” end-to-end test. (80044)
  • Fix flaky ‘Activate theme’ end-to-end test. (80090)
  • Flaky tests: Fix rich text backtick undo. (80183)
  • Flaky tests: Fix widgets global inserter. (80177)
  • Flaky tests: Fix writing flow arrow navigation. (80179)
  • Icons: Fix viewBox casing assertion in wp_get_icon test for older WP. (79576)
  • Image: Use Playwright’s locator.drop for media placeholder drop test. (79733)
  • Perf tests: Wait for upload queue to settle between media-upload iterations. (79952)
  • RTC: Add RTC WebSocket tests to CI. (79757)
  • RTC: Improve stress test flakines. (79954)
  • Skip flakey collaboration end-to-end test. (79922)
  • Tests: Fix flaky ‘GIF to Video’ end-to-end test. (79758)
  • Tests: Honor waitForUploadQueueEmpty timeout in client-side media. (79783)
  • Upgrade Playwright to v1.61. (78632)
  • Fix useHomeEnd on tabs in mac testing. (80374)
Build Tooling
  • Add more workflow file static analysis with Zizmor. (71523)
  • Build: Make installed-deps check layout-agnostic and surface opt-out env var. (79687)
  • Build: Support –skip-types in npm run dev. (79736)
  • Build: Upgrade to TypeScript 7.0. (80083)
  • CI: Enforce pruned ESLint suppressions during lint. (79708)
  • Docs: Generalize the npx guidance in AGENTS.md to cover wp-scripts. (79973)
  • Github workflows: Extend package changelog nudge to bundled packages. (78934)
  • React 19 patch: Log warnings when polyfills are hit. (79624)
  • React 19: Patch to support legacy inert attribute values. (79475)
  • Release: Revert to 23.5rc-3. (79741)
  • Update actionlint to version 1.7.12. (79833)
  • theme: Protect design tokens CSS import. (79551)
  • Only include icon library SVGs listed as public in the Zip file published to GitHub Container Registry for wordpress-develop. (79338)
  • Release: Extract npm release lifecycle. (80190)
Data Layer
  • Backport changelog and package version updates from NPM. (79816)
Components
  • Add an editableRoot block support for native cross-block selection. (79105)
Post Editor

Security

  • Opt in to npm v11 supply-chain security features. (79614)
  • Revert npm v11 supply-chain settings (allow-git, allow-remote, allowScripts). (79667)
npm Packages
  • Build: Fix non-breaking npm audit vulnerability alerts. (79886)

First-time contributors

The following PRs were merged by first-time contributors:

  • @bgrgicak: Backport changelog and package version updates from NPM. (79816)
  • @deepakpra: Add icon state classes to Accordion block. (74257)
  • @g-elwell: Add option to exclude current post from query block. (64916)
  • @priethor: Project automation: Stop flagging returning contributors as first-timers when they use hidden email addresses. (79987)
  • @saulirajala: Navigation Link/Submenu: Run post-status check also without Gutenberg plugin (draft/deleted links regression). (79748)
  • @SohamPatel46: Fix – Accordion: Text in a closed accordion panel cannot be found via the browser search. (74744)
  • @milindmore22: Fix: Allow icon labels to wrap with word breaks and no ellipsis. (80256)
  • @Pranjal1423: fix: Set dataviews popover hover text color. (80105)

Contributors

The following contributors merged PRs in this release:

@aagam-shah @aaronrobertshaw @adamsilverstein @aduth @alecgeatches @andrewserong @annezazu @anomiex @arthur791004 @bgrgicak @cbravobernal @ciampo @danluu @deepakpra @desrosj @dmsnell @ellatrix @enejb @fushar @g-elwell @getdave @gziolo @himanshupathak95 @huzaifaalmesbah @im3dabasia @jasmussen @jeryj @johnbillion @jonathanbossenger @jorgefilipecosta @josephscott @jsnajdr @juanfra @juanmaguitar @Mamaduka @manzoorwanijk @mcsf @milindmore22 @mirka @Mustafabharmal @noruzzamans @ntsekouras @Pranjal1423 @prasadkarmalkar @priethor @ramonjd @retrofox @rohitmathur-7 @SainathPoojary @saulirajala @scruffian @shail-mehta @shekharnwagh @shrivastavanolo @simison @sirreal @Soean @SohamPatel46 @shimotmk @t-hamano @taipeicoder @talldan @tellthemachines @tyxla @xavier-lc @youknowriad

Props to @huzaifaalmesbah for reviewing.

#block-editor #core-editor #gutenberg #gutenberg-new

Fetched July 22, 2026