Package detail

@wordpress/blocks

WordPress325.6kGPL-2.0-or-later14.11.0

Block API for WordPress.

wordpress, gutenberg, blocks

readme

Gutenberg

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

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.11.0 (2025-04-11)

14.10.0 (2025-03-27)

14.9.0 (2025-03-13)

14.8.0 (2025-02-28)

14.7.0 (2025-02-12)

14.6.0 (2025-01-29)

14.5.0 (2025-01-15)

14.4.0 (2025-01-02)

14.3.0 (2024-12-11)

14.2.0 (2024-11-27)

14.1.0 (2024-11-16)

14.0.0 (2024-10-30)

Breaking changes

  • Normalize blockType.parent to be an array. While string values were never supported, they appeared to work with some unintended side-effects that have been fixed by #66250. For that reason, we've added some code that automatically migrates strings to arrays — though it still raises a warning.

13.10.0 (2024-10-16)

13.9.0 (2024-10-03)

13.8.0 (2024-09-19)

13.7.0 (2024-09-05)

13.6.0 (2024-08-21)

13.5.0 (2024-08-07)

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

  • Variables like process.env.IS_GUTENBERG_PLUGIN have been replaced by globalThis.IS_GUTENBERG_PLUGIN. Build systems using process.env should be updated (#61486).
  • Increase the minimum required Node.js version to v18.12.0 matching long-term support releases (#31270). Learn more about Node.js releases.

12.35.0 (2024-05-16)

12.34.0 (2024-05-02)

12.33.0 (2024-04-19)

12.32.0 (2024-04-03)

12.31.0 (2024-03-21)

12.30.0 (2024-03-06)

12.29.0 (2024-02-21)

12.28.0 (2024-02-09)

12.27.0 (2024-01-24)

12.26.0 (2024-01-10)

12.25.0 (2023-12-13)

12.24.0 (2023-11-29)

12.23.0 (2023-11-16)

12.22.0 (2023-11-02)

12.21.0 (2023-10-18)

12.20.0 (2023-10-05)

12.19.0 (2023-09-20)

12.18.0 (2023-08-31)

12.17.0 (2023-08-16)

12.16.0 (2023-08-10)

12.15.0 (2023-07-20)

12.14.0 (2023-07-05)

12.13.0 (2023-06-23)

12.12.0 (2023-06-07)

12.11.0 (2023-05-24)

12.10.0 (2023-05-10)

12.9.0 (2023-04-26)

12.8.0 (2023-04-12)

12.7.0 (2023-03-29)

12.6.0 (2023-03-15)

12.5.0 (2023-03-01)

12.4.0 (2023-02-15)

12.3.0 (2023-02-01)

12.2.0 (2023-01-11)

12.1.0 (2023-01-02)

12.0.0 (2022-12-14)

Breaking Changes

  • Updated dependencies to require React 18 (45235)

11.21.0 (2022-11-16)

11.20.0 (2022-11-02)

11.19.0 (2022-10-19)

11.18.0 (2022-10-05)

Deprecations

  • Deprecate non-string descriptions (#44455).

11.17.0 (2022-09-21)

11.16.0 (2022-09-13)

11.15.0 (2022-08-24)

Bug Fixes

  • Packages: Replace is-plain-obj with is-plain-object (#43511).

11.14.0 (2022-08-10)

11.13.0 (2022-07-27)

11.12.0 (2022-07-13)

Deprecations

  • withBlockContentContext is no longer used by the block editor and therefore got deprecated (#41395).

New Features

  • The shortcode transformer now accepts a transform method to allow advanced controls over the transformed result. For instance, it's now possible to define custom innerBlocks for the transformed block. (#42001)

11.11.0 (2022-06-29)

11.10.0 (2022-06-15)

11.9.0 (2022-06-01)

11.8.0 (2022-05-18)

11.7.0 (2022-05-04)

11.6.0 (2022-04-21)

11.5.0 (2022-04-08)

11.4.0 (2022-03-23)

11.3.0 (2022-03-11)

11.2.0 (2022-01-27)

11.1.0 (2021-09-09)

Bug Fixes

  • Register a block even when an invalid value provided for the icon setting (#34350).

New Features

  • The isMatch callback on block transforms now receives the block object (or block objects if isMulti is true) as its second argument.

11.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.

10.0.0 (2021-07-21)

Breaking Changes

  • The deprecated registerBlockTypeFromMetadata function was removed. Please use registerBlockType that covers the same functionality (#32030).

9.1.0 (2021-05-20)

New Features

  • registerBlockType method can be used to register a block type using the metadata loaded from block.json file (#32030).

Deprecations

  • registerBlockTypeFromMetadata was deprecated in favor of registerBlockType that support now the same functionality (#32030).

9.0.0 (2021-05-14)

Breaking Changes

New Features

  • registerBlockTypeFromMetadata method can be used to register a block type using the metadata loaded from block.json file (#30293).

8.0.0 (2021-03-17)

Breaking Changes

  • Reverted cloneBlock back to its original logic that doesn't sanitize block's attributes. #28379

7.0.0 (2021-02-01)

Breaking Changes

  • cloneBlock now sanitizes the attributes to match the same logic createBlock has. #28379

6.25.0 (2020-12-17)

New Features

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

6.13.0 (2020-04-01)

New Features

  • Blocks can now be registered with an defaultStylePicker flag in the supports setting, allowing the default style picker to be removed.

6.4.0 (2019-08-05)

Enhancements

  • Omitting attributes or keywords settings will now stub default values (an empty object or empty array, respectively).

Bug Fixes

  • The 'blocks.registerBlockType' filter is now applied to each of a block's deprecated settings as well as the block's main settings. Ensures supports settings like anchor work for deprecations.

6.3.0 (2019-05-21)

New Features

  • Added a default implementation for save setting in registerBlockType which saves no markup in the post content.
  • Added wildcard block transforms which allows for transforming all/any blocks in another block.

6.1.0 (2019-03-06)

New Features

  • Blocks' transforms will receive innerBlocks as the second argument (or an array of each block's respective innerBlocks for a multi-transform).

Bug Fixes

  • Block validation will now correctly validate character references, resolving some issues where a standalone ampersand & followed later in markup by a character reference (e.g. &) could wrongly mark a block as being invalid. (#13512)

6.0.5 (2019-01-03)

6.0.4 (2018-12-12)

6.0.3 (2018-11-30)

6.0.2 (2018-11-21)

6.0.1 (2018-11-20)

6.0.0 (2018-11-15)

Breaking Changes

  • isValidBlock has been removed. Please use isValidBlockContent instead but keep in mind that the order of params has changed.

Bug Fixes

  • The block validator is more lenient toward equivalent encoding forms.

5.3.1 (2018-11-12)

5.3.0 (2018-11-09)

New Features

  • getBlockAttributes, getBlockTransforms, getSaveContent, getSaveElement and isValidBlockContent methods can now take also block's name as the first param (#11490). Passing a block's type object continues to work as before.
  • registerBlockStyles and unregisterBlockStyles can be triggered at any moment (before or after block registration).

5.2.0 (2018-11-09)

  • Paste: Google Docs: fix nested formatting, sub, sup and del.
  • Expose @wordpress/editor to Gutenberg mobile.
  • Separate Paste Handler.

5.1.2 (2018-11-03)

5.1.1 (2018-10-30)

5.1.0 (2018-10-30)

New Features

  • isValidBlockContent function has been added (#10891).

Deprecations

  • isValidBlock function has been deprecated (#10891). Use isValidBlockContent instead.

5.0.0 (2018-10-29)

Breaking Changes

  • Attribute type coercion has been removed. Omit the source to preserve type via serialized comment demarcation.
  • setUnknownTypeHandlerName has been removed. Please use setFreeformContentHandlerName and setUnregisteredTypeHandlerName instead.
  • getUnknownTypeHandlerName has been removed. Please use getFreeformContentHandlerName and getUnregisteredTypeHandlerName instead.

New Features

  • Added a unregisterBlockStyle() function to remove a block style variation.

4.0.4 (2018-10-19)

4.0.3 (2018-10-18)

4.0.0 (2018-09-30)

Breaking Changes

  • getDefaultBlockForPostFormat has been removed.

3.0.0 (2018-09-05)

Breaking Changes

  • The isSharedBlock function is removed. Use isReusableBlock instead.
  • Change how required built-ins are polyfilled with Babel 7 (#9171). If you're using an environment that has limited or no support for ES2015+ such as lower versions of IE then using core-js or @babel/polyfill will add support for these methods.

Deprecations

  • The getDefaultBlockForPostFormat function has been deprecated.