What’s new in Gutenberg 17.4? (03 January)

“What’s new in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/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 Site Editor project (formerly called Full Site Editing).

Gutenberg 17.4. has been released and is available for download!

For this release, contributors reached a milestone for data views, increased feature parity between site and post editors, improved performance across a few areas and added functionality to current features, including List view and Style RevisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision.

With this new version, users can expect more flexibility with background images for the Group blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. and fixes to improve support for design tools for classic themes.

Table of Contents

Data Views: List of Templates stable

Screenshot of the new Template Data view

The Data Views work reaches a new milestone: stabilizing this new experience for the template screen, making it available outside the experiments flag and without the additional “Views” options. Please consider using this new experience and provide feedback! (57109)

Style revisions: Stylebook integration and pagination

Screenshot of the Styles Revisions sidebar.

Work continued evolving the usefulness of Style Revisions, with added pagination for better navigation and the integration with the Stylebook. When reviewing revisions with the Style Book, you can better understand the impact of the changes for both within the template you’re looking at and across individual blocks. (56799) (56800)

Background Images: size and repeat controls.

Screenshot of Group Block Background images settings.

This release also adds controls to the background image to adjust size and toggle repetition for the Group Block. This allows you to set the background image to “Cover” (default), or to “Contain”, keeping the aspect ratio intact, and when set to repeat it only repeats in one dimension. With the “Fixed” option, you can set a custom display width, and by selecting the repeat feature, the image repeats over the canvas size of the block. (#57005

List View: Right click access to Block Setting

Screenshot of List view left columns with a right click menu for the Block settings.

A right click on List View opens up that block’s settings menu and gives fast access and streamlines editing. 50273

Other Notable Highlights

  • The site editor received an additional sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. panel already available to post editor screens. Unification of the interface and access to the same controls for page page attributes, post taxonomies, Discussion panel, and feature image panel, gives users more confidence in learning how to use it and allows as well to streamline development in the future. (57151, 57049, 57153, 57150, 57053, 57010)
  • The support for `appearanceTools` for classic themes has been expanded and improved for default color palette handling and duotone settings. (56131)

Changelog

Full changelog available

Enhancements

Components

  • Refactor experimental dropdown menu usages to the latest version. (55625)
  • Replace TabPanel with Tabs in the Block Inspector. (56995)
  • Replace TabPanel with Tabs in the editor Global Styles color palette. (57126)
  • ToggleGroupControl: Update large button size to 32px. (57338)
  • Update ariakit version. (57325)
  • CustomSelect: Add WordPressComponentsProps. (56998)
  • Modal: Improve application of body class names. (55430)
  • Components: Replace TabPanel with Tabs in the Block Inserter. (56918)

Site Editor

  • Add Page Attributes panel. (57151)
  • Add Post Taxonomies panel. (57049)
  • Add View Link. (57153)
  • Add the Discussion panel. (57150)
  • Add the featured imageFeatured image A featured image is the main image used on your blog archive page and is pulled when the post or page is shared on social media. The image can be used to display in widget areas on your site or in a summary list of posts. panel. (57053)
  • Editor: Unify revision panel between post and site editors. (57010)
  • Social Link block: Obfuscate email address. (57384)

Design Tools

  • Background image: Add backgroundSize and repeat features. (57005)
  • Make sure theme color palette presets are output when appearance tools are enabled. (57190)
  • Move the tools panel to the left of the inspector. (55785)

Global Styles

  • Global styles revisions: Add pagination. (56799)
  • Global styles revisions: Integrate stylebook. (56800)

Bug Fixes

Components

  • DropdownMenu V2: Add fallback styles for when subgrid is not supported. (57327)
  • DropdownMenuV2: Do not collapse suffix width. (57238)
  • Fix DayButton dot position and expand the Button area. (55502)
  • Fix logic of has-text class addition in Button. (56949)
  • Palette Edit: Don’t discard colors with default name and slug. (54332)
  • PaletteEdit: Consider digits when generating kebab-cased slug. (56713)
  • RadioControl: Fully encapsulate styles. (57347)
  • Tabs: Make sure individual Tabs are linked to the correct TabPanels. (57033)
  • Text selection: Show CSSCSS Cascading Style Sheets. hack to Safari only. (57300)
  • Truncate: Improve handling of non-string children. (57261)
  • FormTokenField: Handle disabled prop on internal Button. (57187)
  • tab panel: Don’t render hidden content by default. (57046)

Block Editor

  • Exclude disabled buttons when setting initialIndex of NavigableToolbar. (57280)
  • Fix BlockSwitcher checks for showing a Dropdown menu or not. (57047)
  • Fix block lock toolbar item stealing focus when mounted with StrictMode. (57185)
  • Fix content lock UIUI User interface regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5.. (56974)
  • Fix vertical overflow when inserter is open in post and site editor. (57127)
  • Hide drop indicator where block isn’t allowed to drop. (56843)
  • InserterListItem: Use item.isDisabled to detect disabled item. (57161)
  • More settings tip: Add explicit font size. (55835)
  • Writing flow: Absorb partial multi selection dispatching. (47525)
  • Fix the block ‘edit’ property validation. (57193)

Block Library

  • Audio: Hide some controls when multi-editing blocks. (57376)
  • Disable resizing when the viewport is small and wide-aligned. (57041)
  • Gallery: Hide some controls when multi-editing blocks. (57378)
  • Image Block: Get lightbox trigger button ref via data-wp-init. (57089)
  • Image: Hide caption control when multi-editing images. (57357)
  • Video: Hide some controls when multi-editing blocks. (57375)
  • Image Block: Fix deprecation when width/height attribute is a number. (57063)

Patterns

  • Fix: Viewport width not accounted for in the Site Editor > Patterns view. (55803)
  • Override all the labels of the pattern categories taxonomyTaxonomy A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies.. (57094)
  • Pattern CategoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging.: Change show_tagcloud to false. (57212)
  • Patterns (unsynced): Prevent infinite loops due to recursive patterns. (56511)

Site Editor

  • Fix image upload bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority.. (57040)
  • Reduce clearance around the Frame in the site editor. (57023)
  • Swap Template: Show the right templates for the right post type. (57149)
  • Save Button: Fix the translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. of the Activate button. (57147)
  • SlotFill: Allow contextual SlotFillProviders. (56779)

Post Editor

  • Editor: Use visibility selector for PostTemplatePanel. (57224)
  • Fix: Code editor title width in classic theme. (56922)

Design Tools

  • Allow default duotone styles in classic themes. (57191)
  • StylesPreview: Fix endless loopLoop The Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. https://codex.wordpress.org/The_Loop. of ratio calculations when on the threshold of a scrollbar. (57090)

Interactivity APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.

  • Fix namespaces in nested interactive regions. (57029)
  • Fix Interactivity, not working on Classic Themes. (57396)

Collaborative Editing

  • Collab editing: Ensure block attributes are serializable. (57025)

AccessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility)

  • Font size picker: Fix Reset button focus loss. (57196)
  • a11yAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility): Apply focus style to revision items. (57039)
  • [a11y] Fix: Use spans instead of headings on data views table view page title. (56956)

Performance

Block Editor

  • Block: Combine store subscriptions. (56994)
  • Combine selectors in the ‘BackgroundImagePanelItem’ component. (57159)
  • InnerBlocks: overlay: Remove viewport size condition. (57135)
  • Prevent layout re-rendering when changing selected block. (57136)
  • Prevent re-rendering the editor headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. when the selected block changes. (57140)
  • Rewrite moving animation for better load performance. (57133)
  • Rich text: Avoid block editor subscription if not selected. (57226)
  • Try removing extra memoization for individual style panels. (57160)
  • hooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same.: Manage save props in one place. (57043)

Block Library

  • Gallery: Combine useSelect calls. (57240)
  • Image: Reduce ‘block-editor’ store subscriptions. (57358)
  • List: Avoid useSelect in block render. (57077)
  • Blocks: Simplify/optimize isUnmodifiedBlock. (56919)
  • InnerBlocks: Combine store subscriptions. (57032)

Components

  • Navigator: Use CSS animations instead of framer-motion. (56909)
  • useSelect: Only invalidate on subscribe if store changed. (57108)

Experiments

Data Views

  • Add hover style to table rows. (57058)
  • Add: See revisions template action. (57175)
  • Code Quality: Update: Reuse view revisions action on templates and pages. (57208)
  • DataViews: Add list layout to templates. (57014)
  • DataViews: Align filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. implementations. (57059)
  • DataViews: Centralize control of filter visibility in the Filters component. (57056)
  • DataViews: Close actions menu upon switching layouts. (57015)
  • DataViews: Display column header when the field is only filterable. (57051)
  • DataViews: Fix bug on operators count for table layout. (57048)
  • DataViews: Improve naming for easy identification in ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. devtools. (57385)
  • DataViews: Improve preview. (57116)
  • DataViews: Make deferredRendering prop optional. (57334)
  • DataViews: Make getItemId optional. (57308)
  • DataViews: Make filters footprint more condensed. (56983)
  • DataViews: Mark the new Templates pages as stable. (57109)
  • DataViews: Memoize onSelectionChange callback. (57390)
  • DataViews: Remove paginationInfo prop from ViewComponent. (57306)
  • DataViews: Remove reference to edit site class. (57075)
  • DataViews: Rename operatorsFromField to sanitizeOperators. (57050)
  • DataViews: Update onChangeView memoization. (57393)
  • DataViews: Update documentation. (57305)
  • DataViews: Use SelectControl for selecting a page. (57215)
  • Dataviews: Simplify pagination. (57071)
  • Fix: Empty dropdown(s) on the grid view. (57316)
  • Fix: Template list title font styles. (57027)
  • Sort order: Use Unicode characters instead of SVG icons. (56833)
  • Update: Make secondary actions trigger always visible. (57174)
  • Use default variants for Filter and View buttons. (57057)

Patterns

  • Fix broken undo history stack for Pattern Overrides. (57088)
  • Fix unsaved pattern not reflecting on pattern overrides. (57148)
  • [Pattern Overrides] Use a single checkbox to turn on pattern overrides for all allowed attributes. (57009)

List View

  • Allow right-click to open block settings dropdown, add editor setting. (50273)

Documentation

  • Add new section on markup representation of a block. (57230)
  • Added additional explanations to attributes and supports sections. (57120)
  • Added documentation for the text-decoration-control component. (57184)
  • CardHeader used instead of CardFooter. (45585)
  • Components: Update TypeScript-related tips in Contributing Guide. (57267)
  • Doc: Block Wrapper – enclose HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.), use correct keyword supports not support. (56906)
  • Docs/getting started readme. (57223)
  • Docs: Add a new “Build your first block” tutorial to the Getting Started section of the BEH. (56931)
  • Docs: Fundamentals block development/block in the editor — add page to manifest (toc). (57179)
  • Docs: Fundamentals of Block Development – block in the editor. (56488)
  • Enforce heading sentence case throughout the BEH. (57143)
  • Fix grammar and typos in the Block Development Environment doc. (57123)
  • Fix incorrect links in ToggleGroupControl docs. (57236)
  • Fix: Typo on footnotes docs. (57348)
  • Fixes heading hierarchy in block filters. (57239)
  • Minor heading to improve readability and reference. (57102)
  • Platform Docs: Fix missing link. (57145)
  • Remove Radix UI-related documentation. (57336)
  • Remove links to excalidraw diagrams from images. (56980)
  • Remove the “How to use JavaScriptJavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com/. in the Block Editor” documentation. (57166)
  • Remove unnecessary TOCs from documentation. (57087)
  • Restore descriptions for deprecated button props. (37690)
  • Small heading fix. (57098)
  • Snackbar: Remove __unstableHTML prop from TS. (57218)
  • Update block toolbar and settings sidebar image. (57203)
  • fix: Updated the link for “Building a custom block editor”. (57319)

Code Quality

  • Add missing block/theme jsonJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. $schema property. (57201)
  • Add missing period in block descriptions. (57131)
  • Fix code style in Gutenberg_HTML_Tag_Processor_6_5. (57030)
  • Font size picker: Use Button API for keeping focus on reset. (57221)
  • Mobile: Fix getPxFromCssUnit circular dependency. (57045)

Block Editor

  • Editor: Move the ExcerptExcerpt An excerpt is the description of the blog post or page that will by default show on the blog archive page, in search results (SERPs), and on social media. With an SEO plugin, the excerpt may also be in that plugin’s metabox. panel to the editor package. (57096)
  • Refactor useCanContextualToolbarShow for simplicity and clarity. (56914)
  • Remove unnecessary isDisabled option on useShortcut for BlockToolbarPopover. (56907)
  • Replace block variation buttons with ToggleGroupControl. (45654)
  • Replace isSmall prop #53560. (53599)
  • Several little refactors. (57107)
  • useBlockTypesState: Divide useSelect call into two. (57163)
  • useInputRules: Remove unneeded check for inputRule. (57164)

Components

  • Adding unit tests for useCompositeState to Composite component. (56645)
  • Delete experimental radix-ui based DropdownMenu component. (55626)
  • GradientPicker: Use index while iterating over gradient entries to avoid React “duplicated key” warning. (57361)
  • TabPanel: Refactor unit tests to @ariakit/test. (57302)
  • Tabs: Update styling to more closely match previous implementation. (57275)
  • ToggleGroupControl: Fix snapshots. (57367)
  • Move kebabCase() function from block-editor package and mark it as a private API. (56758)

Block Library

  • Gallery Block: Remove unused attributes property in ShortcodeShortcode A shortcode is a placeholder used within a WordPress post, page, or widget to insert a form or function generated by a plugin in a specific location on your site. transformation. (57356)
  • Remove cruft in Button block editor styles. (30950)
  • Tag Cloud: Replace ‘withSelect’ HoC with ‘useSelect’. (57194)

Global Styles

  • Global styles revisions: Refactor sticky pagination footer to use CSS. (57294)
  • Relocate revisions from fill to sidebar component. (57034)
  • Simplify the conditions in GlobalStylesEditorCanvasContainerLink. (57144)

List View

  • Editor: Move and unify the inserter and list view states. (57158)
  • Editor: Unify the list view shortcut registration and definition. (57200)
  • ListView: Replace prop drilldown by a stable ref in store. (57198)

Typography

  • Font Library: Consolidate existing API rest endpoints. (57282)
  • Quality: Replace wpKebabCase function with kebabCase function from components package. (57038)

Site Editor

  • Editor: Move the panel visibility state from the edit-post to the editor package. (57012)
  • Remove isResizing variable from layout component as it is always false. (57119)
  • Allow disabling and enabling comments. (57205)
  • Add basic test coverage for Navigation MenuNavigation Menu A theme feature introduced with Version 3.0. WordPress includes an easy to use mechanism for giving various control options to get users to click from one place to another on a site. editing mode. (56871)
  • Fix flaky Navigation focus mode test. (57016)

PluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party

  • Implement proposal to remove the WordPress-Docs ruleset. (56982)
  • i18ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.: Make menu and title labels in Gutenberg plugin translatable. (43500)

Modules API

  • Refactor, tests, and final dependencies array structure. (57231)

Tools

  • Dependency Extraction Webpack Plugin: Fix test issues. (57332)

Testing

  • Add an end-to-end test to check image upload working in site editor. (57086)
  • Components: Add unit testunit test Code written to test a small piece of code or functionality within a larger application. Everything from themes to WordPress core have a series of unit tests. Also see regression. __experimentalExpandOnFocus unit tests for FormTokenField. (57122)
  • Global styles revisions e2e: Tidy up selectors to open revisions panel. (57146)
  • Migrate ‘Comments Form’ end-to-end tests to Playwright. (57337)
  • Migrate Site Editor ‘settings sidebar’ end-to-end tests to Playwright. (57392)
  • Migrate remaining ‘block switcher’ end-to-end tests to Playwright. (57381)
  • e2e: Try to fix flaky font-library test. (57092)

Build Tooling

  • DependencyExtractionWebpackPlugin: Drop webpack4 and node<18. (57303)
  • Disable webpack perf hints when compiling packages. (57155)
  • Update to Node.js 20.x. (56331)

First time contributors

The following PRs were merged by first time contributors:

Contributors

The following contributors merged PRs in this release:@andrewhayward @andrewserong @anton-vlasenko @arthur791004 @atachibana @bacoords @BenjaminZekavica @brookewp @c4rl0sbr4v0 @chad1008 @ciampo @colorful-tones @DAreRodz @dcalhoun @ddryo @derekblank @desrosj @dotslashbit @ellatrix @fluiddot @geriux @getdave @glendaviesnz @gvgvgvijayan @jameskoster @jasmussen @jeryj @jorgefilipecosta @jsnajdr @juanmaguitar @kevin940726 @koen12344 @kurudrive @luisherranz @Mamaduka @matiasbenedetto @mcsf @mhimon @mirka @ndiego @ntsekouras @oandregal @ockham @ramonjd @richtabor @SiobhyB @sirreal @stokesman @t-hamano @tellthemachines @TimBroddin @youknowriad @yuliyan


Props to @annezazu for co-writing, and @saxonfletcher for for designing assets for this post. 

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