What’s new in Gutenberg? (5 February)

More than 51 contributors participated in this exciting release.

It introduce some handy color related features to the Group and Columns block. Instead of changing the text color block by block you can now wrap a group blocks in a Group block and assign the base color to the parent block.

For consistency with the Navigation and the buttons block, the Link UI has been updated in the RichText formats.

This is also an exciting release of the block authors, we now have an official tool to scaffold blocks quickly. It’s as easy as running npm init @wordpress/block locally.

7.4 🇰🇷

Features

  • Add background color support to the Columns block. 17813
  • Add text color support for the Group block. 19181

Enhancements

  • Navigation Block:
    • Add submenu chevron indication setting. 19601
    • Save the ID to the destination entity. 18641
    • Select Parent Navigation Block after clicking “Create from all top-level pages”. 19817
    • Update Appender visibility. 19598 19846
    • Move the Link Settings panel. 19917
    • Improve the UX to add links. 19686
  • Multi-selection: don’t focus first selected block. 19762
  • Use the new link control component in the RichText link format. 19462
  • Copy: Apply sentence case formatting to panel titles. 19901
  • A11y: Add conditions and new translation strings for the BlockMover. 19757

New APIs

  • Add a new wordpress/create-block package for block scaffolding. 19773 19867
  • Add a new wordpress/icons package:
    • Introduce the package. 17055
  • Add a new wordpress/primitives package. 19781 19876

Bug Fixes

  • Prevent gallery images from creating undo levels as they load. 19937
  • FontSizePicker: Adjust Select Button size. 19479
  • Remove post title escaping. 19955
  • Fix Failure message styling in placeholders. 19673
  • Fix RTL styles for the Media Text block. 18764
  • Fix panel header styles. 19842
  • Fix the editor fixed position at the 960px breakpoint. 19970
  • Allow disabling color selection but keeping gradient support. 19925
  • Prevent crash when creating a hierarchical post without a title. 19936
  • Media & Text block: “Crop image to fill entire column” setting resets on image change. 19765
  • Prevent Alt+F10 from scrolling to the top. 19896
  • Fix clearing multi-selection with side click. 19787
  • Update hover and focus selectors for “Move to Trash” to ensure the link is always red 19974.
  • Popover component:
    • clean up requestAnimationFrame. 19771
    • fix typo causing the mobile inserter to go out of view. 19978
  • Fix bug in block multi-selection causing Rich text editing to be disabled. 19839
  • Fix useSelect React hook timing and rerendering issues. 19286
  • Core-data: do not publish outdated state to subscribers during updates. 19752
  • LinkControl component (Navigation and buttons blocks):
    • Initialize inputValue state from value prop. 19737
    • Handle submission via form handler. 19651
    • Use URL as a link when title empty. 19739
    • Prevent focus loss in edit mode toggle. 19931
    • Resolve error when value is undefined. 19856
    • Handle Popover onClose for LinkControl. 19885

Experiments

  • Add AnglePicker Component and useDragging hook. 19637
  • Add Global styles CSS variables generation mechanism. 19883
  • Allow blocks to register variations that shows-up in the inserter. 19243
  • Block Directory: Refactor the reducer by breaking out the block management actions into their own reducer. 19330

Documentation

  • Add docs for LocalAutosaveMonitor and __experimentalUpdateLocalAutosaveInterval. 19915
  • Add markdownlint script to lint docs markup. 19855
  • Add format-js detailed documentaation to wordpress/scripts package. 19946
  • Reorganize the Contributors Guide. 19853
  • Clarify when isEligible function is called. 19899
  • Typos and tweaks: 19833, 19914, 19736, 19759, 19869, 19802, 19813.

Various

  • Introduce Prettier Formatting:
    • Add the formatting script. 18048 19994
    • Format the codebase. 19963
    • Set a consistent line width. 19992
  • Automation:
    • Fix pull request merge automation errors. 19768
    • Run pull request automation on closed. 19742
    • Add a step that updates CHANGELOG files before npm releases. 19764
  • Allow Babel Stage 4 features. 19831 19065
  • Use a Link to the changelog instead of adding it inline in the plugin README. 19761
  • Use require.resolve() in wordpress/jest-preset-default config 19957.
  • Fix multi-selection intermittent e2e failure. 19865
  • Add Placeholder component to Storybook. 19734
  • Include block.json files in the plugin build output. 19786
  • Rename patterns to variations in the Block API. 19966
  • Paragraph block:
    • remove min-height. 19835
    • remove unnecessary CSS after shortcuts removal. 19821
  • Refactor ObserveTyping as function component. 19881
  • Move the is-navigate-mode classname to the WritingFlow component. 19868
  • Block: use React context to provide the selected element. 19782
  • Remove dead is-hovered selectors. 19870
  • Remove the editor dependency from the block library. 16160
  • Remove an unnecessary import from the playground. 19893
  • Refactor the RichText wrapper to use React hooks for wrapper component. 19095
  • RichText API: Limit “prefix” transformations to Paragraph blocks. 19727
  • Apply width-based modifier classes to Placeholder only when the width is known. 19825
  • Various:
  • Refactor the server-side rendering of the Navigation block. 19989 19991
  • Fix server-registered fixtures script. 19884
  • Remove the RichText is-selected class. 19822
  • Testing: Use deterministic selectors for incremented IDs. 19844

Performance Benchmark

The following benchmark compares performance for a particularly sizeable post (~ 36000 words, ~ 1000 blocks) over the last releases. Such a large post isn’t representative of the average editing experience but is adequate for spotting variations in performance.

Version Loading Time KeyPress event (typing)
Gutenberg 7.4.0 5.037s 34.54ms
Gutenberg 7.3.0 5.461s 34.63ms
WordPress 5.3 6.631s 71.553ms

#core-editor, #editor, #gutenberg