Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@wordpress/block-editor

WordPress277.2kGPL-2.0-or-later14.17.0TypeScript support: included

Generic block editor.

wordpress, gutenberg, editor, blocks

readme

Gutenberg

End-to-End Tests Static Analysis (Linting, License, Type checks...) Unit Tests Create Block React Native E2E Tests (iOS) React Native E2E Tests (Android)

Storybook Badge

lerna

Screenshot of the Gutenberg Editor, editing a post in WordPress

Welcome to the development hub for the WordPress Gutenberg project!

"Gutenberg" is a codename for a whole new paradigm in WordPress site building and publishing, that aims to revolutionize the entire publishing experience as much as Gutenberg did the printed word. Right now, the project is in the second phase of a four-phase process that will touch every piece of WordPress -- Editing, Customization, Collaboration (which includes Real-time collaboration, Asynchronous collaboration, Publishing flows, Post revisions interface, Admin design, Library), and Multilingual -- and is focused on a new editing experience, the block editor.

The block editor introduces a modular approach to pages and posts: each piece of content in the editor, from a paragraph to an image gallery to a headline, is its own block. And just like physical blocks, WordPress blocks can be added, arranged, and rearranged, allowing WordPress users to create media-rich pages in a visually intuitive way -- and without work-arounds like shortcodes or custom HTML.

The block editor first became available in December 2018, and we're still hard at work refining the experience, creating more and better blocks, and laying the groundwork for the next three phases of work. The Gutenberg plugin gives you the latest version of the block editor, so you can join us in testing bleeding-edge features, start playing with blocks, and maybe get inspired to build your own.

Check out the Keeping up with Gutenberg Index

Getting Started

Get hands on: check out the block editor live demo to play with a test instance of the editor.

Using Gutenberg

Developing for Gutenberg

Extending and customizing is at the heart of the WordPress platform, this is no different for the Gutenberg project. The editor and future products can be extended by third-party developers using plugins.

Review the Quick Start Guide for the fastest way to get started extending the block editor. See the Block Editor Handbook for extensive tutorials, documentation, and API references. Also, check the WordPress Developer Blog for great articles about block development, among other topics.

Contribute to Gutenberg

Gutenberg is an open-source project and welcomes all contributors from code to design, and from documentation to triage. The project is built by many contributors and volunteers, and we'd love your help building it.

See the Contributors Handbook for all the details on how you can contribute.

To get up and running quickly with code contribution see Getting Started With Code Contribution. Also check out the other resources available on the Code Contributions page.

In whichever way you wish to contribute please be sure to read the Contributing Guidelines first.

As with all WordPress projects, we want to ensure a welcoming environment for everyone. With that in mind, all contributors are expected to follow our Code of Conduct.

Get Involved

You can join us in the #core-editor channel in Slack, see the WordPress Slack page for signup information; it is free to join.

License

WordPress is free software, and is released under the terms of the GNU General Public License version 2 or (at your option) any later version. See LICENSE.md for complete license.



Code is Poetry.

changelog

Unreleased

14.17.0 (2025-04-11)

14.16.0 (2025-03-27)

14.15.0 (2025-03-13)

14.14.0 (2025-02-28)

14.13.0 (2025-02-12)

14.12.0 (2025-01-29)

14.11.0 (2025-01-15)

14.10.0 (2025-01-02)

14.9.0 (2024-12-11)

14.8.0 (2024-11-27)

14.7.0 (2024-11-16)

14.6.0 (2024-10-30)

14.5.0 (2024-10-16)

14.4.0 (2024-10-03)

14.3.0 (2024-09-19)

14.2.0 (2024-09-05)

14.1.0 (2024-08-21)

14.0.0 (2024-08-07)

Breaking Changes

  • URLInput: Remove deprecated __nextHasNoMarginBottom prop and promote to default behavior (#64282).
  • LineHeightControl: Remove deprecated __nextHasNoMarginBottom prop and promote to default behavior (#64281).

Enhancements

  • FontFamilyControl: Add __nextHasNoMarginBottom prop for opting into the new margin-free styles (#64280).

13.4.0 (2024-07-24)

13.3.0 (2024-07-10)

13.2.0 (2024-06-26)

13.1.0 (2024-06-15)

13.0.0 (2024-05-31)

Breaking Changes

  • Increase the minimum required Node.js version to v18.12.0 matching long-term support releases (#31270). Learn more about Node.js releases.

12.26.0 (2024-05-16)

Internal

  • Replaced classnames package with the faster and smaller clsx package (#61138).

12.25.0 (2024-05-02)

12.24.0 (2024-04-19)

12.23.0 (2024-04-03)

12.22.0 (2024-03-21)

12.21.0 (2024-03-06)

12.20.0 (2024-02-21)

12.19.0 (2024-02-09)

  • FontSizePicker: Remove deprecated __nextHasNoMarginBottom prop and promote to default behavior (#58702).

12.18.0 (2024-01-24)

  • Deprecated __experimentalRecursionProvider and __experimentalUseHasRecursion in favor of their new stable counterparts RecursionProvider and useHasRecursion.

12.17.0 (2024-01-10)

12.16.0 (2023-12-13)

12.15.0 (2023-11-29)

12.14.0 (2023-11-16)

12.13.0 (2023-11-02)

  • Deprecated the useSetting function in favor of new useSettings one that can retrieve multiple settings at once (#55337).

12.12.0 (2023-10-18)

12.11.0 (2023-10-05)

  • Deprecated CopyHandler, absorbed into WritingFlow.

12.10.0 (2023-09-20)

  • The Deprecated multiline prop on RichText will now fall back to using multiple rich text instances instead of a single multiline instance. The prop remains deprecated.

12.9.0 (2023-08-31)

Enhancements

  • Embed the ObserveTyping behavior within the BlockList component making to simplify instantiations of third-party block editors.

12.8.0 (2023-08-16)

12.7.0 (2023-08-10)

12.6.0 (2023-07-20)

12.5.0 (2023-07-05)

12.4.0 (2023-06-23)

Enhancements

  • Add HeadingLevelDropdown component for selecting H1-H6 and paragraph HTML tags from the block toolbar.

Bug Fixes

  • Fluid typography: custom font-sizes should use max viewport width (#51516).

12.3.0 (2023-06-07)

12.2.0 (2023-05-24)

12.1.0 (2023-05-10)

  • MediaPlaceholder: Remove the undocumented onHTMLDrop prop (#49673).

12.0.0 (2023-04-26)

Breaking Changes

  • Renamed utility function immutableSet to setImmutably (#50040).

11.8.0 (2023-04-12)

11.7.0 (2023-03-29)

  • ImageSizeControl: Update image size label (#49112).

11.6.0 (2023-03-15)

11.5.0 (2023-03-01)

Bug Fixes

  • SpacingSizesControl: fix white dot on thumb (#48574).

11.4.0 (2023-02-15)

Bug Fixes

  • LinkControl: fix scrollbar displayed on toggle link settings (#47986).

11.3.0 (2023-02-01)

11.2.0 (2023-01-11)

Bug Fixes

  • BlockInspector: Fix browser warning error when block is not selected (#46875).
  • Move component styles needed for iframes to content styles (#47103).
  • Block Inserter: Correctly apply style to the default inserter (#47166).
  • List View: Fix crash when the first template-parts is deleted width del key (#47227).

11.1.0 (2023-01-02)

11.0.0 (2022-12-14)

Breaking Changes

  • Updated dependencies to require React 18 (45235)

Enhancements

  • URLInput: the renderSuggestions callback prop now receives currentInputValue as a new parameter (45806).
  • Fluid typography: add configurable fluid typography settings for minimum font size to theme.json (#42489).
  • URLInput: Add __nextHasNoMarginBottom prop for opting into the new margin-free styles (46692).

Bug Fixes

  • SpacingSizesControl: Change ARIA role from region to group to avoid unwanted ARIA landmark regions (#46530).
  • FocalPointPicker: Fix layout misalignment when placed in the BlockInspector (#46631).

10.5.0 (2022-11-16)

Enhancements

  • BlockLockModal: Move Icon component out of CheckboxControl label (#45535)
  • Fluid typography: adjust font size min and max rules (#45536).

10.4.0 (2022-11-02)

Bug Fixes

  • InserterListItem: Fix dragging and dropping in Firefox. (#44631)

10.3.0 (2022-10-19)

Bug Fixes

  • FontSizePicker: Update fluid utils so that only string, floats and integers are treated as valid font sizes for the purposes of fluid typography (#44847)
  • getTypographyClassesAndStyles(): Ensure that font sizes are transformed into fluid values if fluid typography is activated (#44852)
  • BlockPopover: Ensure that padding and margin visualizers display in correct position even when scrolling past block. (#44998)

New Features

  • You can now drop files/blocks/HTML on unmodified default blocks to transform them into corresponding blocks (#44647).

10.2.0 (2022-10-05)

10.1.0 (2022-09-21)

10.0.0 (2022-09-13)

Breaking Changes

  • FontSizePicker: Deprecate bottom margin style. Add a __nextHasNoMarginBottom prop to start opting into the margin-free styles that will become the default in a future version, currently scheduled to be WordPress 6.4 (#43870).

9.8.0 (2022-08-24)

9.7.0 (2022-08-10)

9.6.0 (2022-07-27)

9.5.0 (2022-07-13)

9.4.0 (2022-06-29)

9.3.0 (2022-06-15)

Bug Fixes

  • Fix focus trap on certain input elements when navigating within a block with the left/right arrow keys (#41538).

9.2.0 (2022-06-01)

9.1.0 (2022-05-18)

9.0.0 (2022-05-04)

Breaking Changes

  • BlockNavigationDropdown is now deprecated. Use the Dropdown component from the @wordpress/components package and the ListView component from this package (#40777).
  • ListView no longer accepts the __experimentalFeatures, __experimentalPersistentListViewFeatures, __experimentalHideContainerBlockActions, and showNestedBlocks props. Passing additional undocumented props through to ListView is also now disallowed. (#40777).

8.6.0 (2022-04-21)

8.5.0 (2022-04-08)

8.4.0 (2022-03-23)

8.3.0 (2022-03-11)

8.2.0 (2022-02-23)

New Features

  • LineHeightControl: Changes internal implementation to use NumberControl, which allows enhanced interactions such as dragging to change the value. To improve consistency with other control components, the bottom margin styles on the component has been deprecated, and will be removed in a future version. To opt into this simplified margin style, set the __nextHasNoMarginBottom prop to true.

8.1.1 (2022-02-10)

Bug Fixes

  • Removed unused @wordpress/block-serialization-default-parser, css-mediaquery, memize and redux-multi dependencies (#38388).

New Features

  • List View now supports selecting and dragging multiple blocks via SHIFT clicking items in the list #38314.

8.1.0 (2022-01-27)

8.0.0 (2021-11-07)

Performance

  • Avoid re-rendering all List View items on block focus #35706. When List View is open Block focus time is 4 times faster in large posts.
  • Render fixed number of items in List View #35706. Opening List View is 13 times faster in large posts.

Breaking Changes

  • List View no longer supports the showOnlyCurrentHierarchy flag #35706. To display a subset of blocks, use the blocks parameter instead.

7.0.0 (2021-07-29)

Breaking Changes

  • Upgraded React components to work with v17.0 (#29118). There are no new features in React v17.0 as explained in the blog post.

6.2.0 (2021-07-21)

New Features

  • ButtonBlockerAppender is now ButtonBlockAppender, the original name was a typo, but is still being exported for backward compatibility.

6.1.0 (2021-05-20)

6.0.0 (2021-05-14)

Breaking Changes

5.3.0 (2021-03-17)

  • Add JustifyToolbar component abstracted out of the Navigation block so can be used elsewhere.

5.2.0 (2020-12-17)

New Features

  • Added a store definition store for the block editor namespace to use with @wordpress/data API (#26655).

5.0.0 (2020-10-06)

Breaking Changes

  • The block editor does not contain default colors, gradients, and font sizes anymore. If one wants to take advantage of these features, please explicitly pass colors, gradients, and/or settings or use the new __experimentalFeatures setting that is available.

4.0.0 (2020-05-28)

Breaking Changes

  • The block control value for InnerBlocks has been changed from __experimentalBlocks to value and is now considered a stable API.
  • Removed the utility property from the objects returned by the getInserterItems selector.

3.7.0 (2020-02-10)

New Features

  • Add new __experimentalEditorSkeleton component. This has been moved over from the @wordpress/edit-post package, where it was an internal component called EditorRegions. Its class names have thus been renamed from edit-post-editor-regions to block-editor-editor-skeleton.

3.3.0 (2019-11-14)

New Features

  • Added a label prop to URLInput. This allows the label to be set without needing to wrap the URLInput in a BaseControl.

Deprecations

  • dropZoneUIOnly prop in MediaPlaceholder component has been deprecated in favor of disableMediaButtons prop.

3.0.0 (2019-08-05)

New Features

  • Added a new allowedFormats prop to RichText to fine tune allowed formats. Deprecated the formattingControls prop in favour of this. Also added a withoutInteractiveFormatting to specifically disable format types that would insert interactive elements, which can not be nested.

Breaking Changes

  • BlockEditorProvider no longer renders a wrapping SlotFillProvider or DropZoneProvider (from @wordpress/components). For custom block editors, you should render your own as wrapping the BlockEditorProvider. A future release will include a new BlockEditor component for simple, standard usage. BlockEditorProvider will serve the simple purpose of establishing its own context for block editors.

2.2.0 (2019-06-12)

Internal

  • Refactored BlockSettingsMenu to use DropdownMenu from @wordpress/components.

2.0.0 (2019-04-16)

New Features

  • Added the addToGallery property to the MediaUpload interface. The property allows users to open the media modal in the gallery-libraryinstead of gallery-edit state.
  • Added the addToGallery property to the MediaPlaceholder component. The component passes the property to the MediaUpload component used inside the placeholder.
  • Added the isAppender property to the MediaPlaceholder component. The property changes the look of the placeholder to be adequate to scenarios where new files are added to an already existing set of files, e.g., adding files to a gallery.
  • Added the dropZoneUIOnly property to the MediaPlaceholder component. The property makes the MediaPlaceholder only render a dropzone without any other additional UI.
  • Added a cancel link to the list of buttons in the MediaPlaceholder component which appears if an onCancel handler exists.
  • Added the usage of mediaPreview for the Placeholder component to the MediaPlaceholder component.
  • Added a an onDoubleClick event handler to the MediaPlaceholder component.
  • Added a way to pass special ref property to the PlainText component.
  • The URLPopover component now passes through all unhandled props to the underlying Popover component.

Breaking Changes

  • CopyHandler will now only catch cut/copy events coming from its props.children, instead of from anywhere in the document.

Internal

  • Improved handling of blocks state references for unchanging states.
  • Updated handling of blocks state to effectively ignored programmatically-received blocks data (e.g. reusable blocks received from editor).

1.0.0 (2019-03-06)

New Features

  • Initial version.