What’s new in Gutenberg 22.1? (18 November, 2025)

“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 Editor.

What’s New In
Gutenberg 22.1?

Gutenberg 22.1 has been released and is available for download!

This release focuses on expanding 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. capabilitiescapability capability is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on their role. For example, users who have the Author role usually have permission to edit their own posts (the “edit_posts” capability), but not permission to edit other users’ posts (the “edit_others_posts” capability)., enhancing the editor UXUX User experience, and performance improvements. New features include the new coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress./tabs block for tabbed content, enabling 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/. and CSSCSS Cascading Style Sheets. editing added to the HTML block, and image prefetching when expanding images in the editor. Other updates include many theme/color tweaks, DataViews and DataForm refinements, collaboration improvements, 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) and performance optimizations, and numerous 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. fixes and documentation updates.

New Tabs block

As the name suggests, the new Tabs block allows you to add tabbed content to your posts, pages, and templates. 

Enable the Blocks: add experimental blocks setting to test the tabs block.

HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. block updates

The HTML block now supports adding and editing CSS and JavaScript.

Other Notable Highlights

Image prefetching when expanding images in the editor

Changelog

Features

Block Library

  • New Block: core/tabs. (69789)

Enhancements

  • Routing: Add static and lazy routes support to the boot package. (72937)
  • Theme: Add new caution color ramp. (72782)
  • Theme: Lower the contrast topup value. (73155)
  • Theme: Optimize seed adjustment. (73004)

DataViews

  • Add a context menu when right-clicking on the table 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.. (73104)
  • DataForm: Add new details layout. (72355)
  • DataForm: Simplify form normalization. (72848)
  • DataForm: Card borderless layout. (72514)
  • DataViews list layout: Use regular button for primary action. (72920)
  • DataViewsPicker: Add With Modal storybook story. (72913)
  • Simplify the properties configuration. (73064)
  • Try adding table view to data picker. (72914)
  • Update actions menu structure to group primary and regular actions. (72866)

Block Library

  • Breadcrumbs: Add 404, search and paged support for archives. (72714)
  • Breadcrumbs: Add home page handling and show last item attribute. (72839)
  • Change Accordion block toolbar label to spell “Add Accordion Item”. (72981)
  • HTML Block: Add JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors./CSS editing. (73108)
  • Paragraph: Migrate to text-align block support. (73111)
  • Update/twitter to X embed icon and text. (73110)

Collaboration

  • Notes: Add form submission shortcut. (72868)
  • Notes: Add keyboard support for tree navigation. (73136)
  • Notes: Disable “Add note” button in Distraction free mode. (72954)
  • Notes: Remove the pin/unpin button from the 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. header. (72825)

Patterns

  • Hide toolbar slots for contentOnly pattern wrappers. (73182)
  • Starter content: Change alignment and copy. (72829)
  • contentOnly patterns: Mark patterns as contentOnly by adding metadata.patternName to the root block. (72988)

Components

  • Add isBusy prop to ConfirmDialog. (73041)
  • Card Component Padding System Enhancementenhancement Enhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature.. (72511)
  • TextareaControl: Add min-height to textarea. (72867)

Colors

  • ColorPicker: Support pasting whole color values. (73166)

Synced Patterns

  • Update synced pattern language from “Detach” to “Disconnect pattern”. (73105)

Extensibility

  • Term Name: Add levelOptions attribute to control available heading levels. (73005)

Write mode

  • Use color panel for contentOnly pattern editing. (71982)

Block Editor

  • BlockVariationTransforms: Refactor DropdownMenu with Menu. (71938)

Bug Fixes

  • Fix unresolvable typedefs in dependency-extraction-webpack-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. (72807)
  • Math format: Force LTR direction in RTL languages. (72901)
  • Math format: Remove empty format on serialise. (73143)
  • Template activation: Disallow editing/trashing of non-database templates. (72790)
  • Template activation: Inserting template through /templates should always result in active template. (72770)
  • Template activation: Redirect to ‘Create Templates’ after duplication. (72727)
  • Template activation: Skip gutenberg_get_registered_block_templates query when no slugs are left to find. (72795)
  • Theme: Fix Windows build using cross-env for environment variables. (72944)
  • block-editor: Remove types from package.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. exports. (72817)
  • 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.: Use _x() for Template Activation labels. (72928)

Collaboration

  • Block Notes: Adjust note date tooltip position. (72843)
  • Change sidebar title – Change Notes to All notes. (72885)
  • Disable Notes in Code Editor. (72859)
  • Ensure editor body fits all notes. (72811)
  • Hide add note in distraction free mode. (72835)
  • Notes: Disable or hide “Add note” button depending on block’s state. (72878)
  • Notes: Don’t hide floating sidebar while adding the note. (72968)
  • Notes: Fix ‘Add note’ form position. (72787)
  • Notes: Fix avatarAvatar An avatar is an image or illustration that specifically refers to a character that represents an online user. It’s usually a square box that appears next to the user’s name. image size in mobile layout. (73008)
  • Notes: Fix first note creation with pinned sidebar. (73164)
  • Notes: Fix selector for orderedBlockIds. (73006)
  • Notes: Fix sidebar opening logic. (72965)
  • Notes: Gracefully handle non-existing note ID references (alt). (73061)
  • Notes: Hide pinned sidebar when there are no notes. (72872)
  • Notes: Refine avatar. (72773)
  • Notes: Spotlight block when clicking add/view notes. (72870)

Block Library

  • Accordion Header, Panel: Add CSS for the default style. (73032)
  • Accordion block: Lock core/accordion iAPI store. (72977)
  • Accordion: Allow font style inheritance from button to inner text blocks. (72957)
  • Allow embeds to grow and shrink inside flex group blocks. (73109)
  • Breadcrumbs: Add fallback for posts with no title. (72869)
  • Cover Block: Show settings inspector controls in the Site Editor. (69178)
  • Fix Navigation Link block variations to show correct labels instead of generic ‘Post Link’. (72517)
  • Fix Navigation Link broken state when bound entity is deleted. (73142)
  • Fix: Hide  input popover when editing Math block as HTML. (72902)
  • Heading block: Make background padding more specific to block. (72837)
  • Increase CSS specificity of text alignment classes. (62260)
  • Math: Fixing Edit as HTML feature and code editor sync. (72910)

Block Editor

  • Add: Stretch text variations transforms. (73148)
  • Fix padding appender last block focus. (72821)
  • Fix: Don’t load fit text front end scripts on the editor. (72842)
  • Fix: Fit Text flash during the binary search on the initial enabling. (72788)
  • Fix: Fit text may not update when being grouped in a smaller container. (73021)
  • Fix: Make fit text work with the interativity 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.. (72923)
  • Update: Use a bigger max fit text font size. (73067)
  • Stretch text and stretch heading variation. (73056)

DataViews

  • DataViews Table – only output aria-label for media when item is clickable. (73034)
  • Fix DataView columns width. (72969)
  • Fix pagination. (73132)
  • Fix: DataViews modal actions in list layout. (72793)
  • Use local time in summary 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. and default render for datetime fields. (72756)
  • useFormValidity: Fix nesting levels. (72588)

Global Styles

  • Restore correct additional CSS screen layout. (73192)
  • Show Global Styles in editor only for users with the right caps. (73077)
  • Theme JSON: Fix handling of default presets at block level. (72916)

Components

  • Button: Revert disabled primary button state to its previous one. (73037)
  • CustomSelectControl: Use key to determine the selected item instead of name. (72189)
  • NumberControl: Fix crash when min prop is string and step prop contains decimal. (73107)

Post Editor

  • Editor: Fix template panel check and restore duplicate action. (72964)
  • Fix setupEditor edits not being applied when non-iterable edits are used. (73167)

Site Editor

  • Pages DataViews: Fix content preview field after global styles refactor. (73140)
  • Use padding appender hook in Site editor. (72598)
  • Theme: Disable bgramp tests to fix trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision. failures. (73122)

Command Palette

  • Commands:  Add edit template if user has proper caps. (73087)
  • Decode HTML entities in menu URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org. (72898)

Design Tools

  • Border Panel: Decode values so that border radius presets are properly handled in global styles. (73072)
  • Border radius presets: Support mixed values in the rangecontrol slider. (73033)

Block API

  • Classic Block: Disable lock, renaming, blockVisibility, html support. (72812)
  • Unsupported Block: Disable lock, renaming, blockVisibility support. (72857)

Commands

  • Fix: Adminadmin (and super admin) color scheme is not applied to Command Palette. (73151)

Rich Text

  • RichText: Don’t forget ref passing in Preview mode. (73062)

Synced Patterns

  • Add specific classname to block toolbar icon. (73058)

Media

  • Fix adding blocks through media tab with experimental modal. (73029)

Block Locking

  • Fix contentOnly temporary editing persisting on save (+ refactor some of the code). (72959)

Block Transforms

  • Add default transform for allowedBlocks attribute. (72814)

Block bindings

  • Hide Attributes panel for Date, Nav Link, and Nav Submenu blocks. (72712)

Accessibility

Collaboration

  • Notes: Fix block toolbar display for show icon labels. (73010)
  • Notes: Fix focus return when resolving floating note. (72994)
  • Notes: Focus action button when comment editing is cancelled or comment is updated. (72895)
  • Notes: Improve accessibility tree. (72650)

Block Library

  • Prevent Esc from executing changes in categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. and archive widgets. (72889)

Performance

  • Move PatternOverrideToolbarIndicator functionality into BlockToolbar. (72935)
  • Theme: Add caching for theme color ramp builders. (72796)
  • Theme: Generate default ramps at compile time. (72847)
  • Theme: Inline values for primitive tokens in CSS output. (72890)
  • Theme: Optimize color generating algorithm. (72883)
  • Theme: Use logarithms for contrast difference. (73097)

Block Library

  • Add Image Prefetching for Click to expand Images. (61107)
  • MathML block: Fix lazy script loading. (73099)

Block Editor

  • Reduce inspector subscriptions by not subscribing if panel is not enabled. (73013)

Collaboration

  • Notes: Return early when there are no notes. (72820)

Layout

  • Perf: Only mount SpacingVisualizers when actively visualizing. (72800)

Experiments

  • Boot Package: Add save panel and shortcut. (73170)
  • Editor: Add lazy-editor package and infrastructure. (73028)
  • Remove the posts page code from edit-site and replace it with the new route. (73165)
  • Route Registration: Add support for a routes folder to the build tool. (72950)
  • Routes build tooling: Fix watching, css and min buildling. (72952)
  • Routing Infra: Explore adding a posts route to the boot package. (72976)
  • Routing Infrastructure: Allow single routes to be added to WP-Admin separately. (73137)
  • Routing Single Page Mode: Fix fullscreen editor mode. (73169)
  • Routing: Add a post edit route to the boot demo page. (73065)
  • Routing: Add boot package. (72809)
  • Routing: Add post new and top level redirect route to the posts. (73102)
  • Routing: Allow plugins to register custom site editor like pages. (73120)
  • Template activation: Move to experiment. (73252)

Block Library

  • Disable TinyMCE: Bump needsClassicBlock further down. (72966)
  • Disable TinyMCE: Dequeue mce-view. (72972)
  • Disable TinyMCE: Handle old core/freeform syntax in editor. (72967)

Media

  • Add Upload button to experimental media modal and always allow multiple uploads. (73125)

Components

  • UIUI User interface: Implement Box component as part of new UI package. (72984)

Patterns

  • contentOnly patterns: Allow re-entry into contentOnly mode after ‘Edit contents’. (72044)

Documentation

  • Add PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher function prefixing documentation. (72525)
  • Fix typo in README.md comment. (72879)
  • Tabs: Improve PHP documentation. (72834)
  • Theme: Fix ThemeProvider documentation for accurate color prop. (72943)
  • Update DataViews readme to add more info on the picker component. (72992)

Code Quality

Block Library

  • Breadcrumb: Some code quality improvements. (72873)
  • Remove old polyfills for server block definitions. (72827)

Collaboration

  • Notes: Remove unnecessary useCallback from keyboard navigation handler. (73152)

Block bindings

  • Untangle sources code. (72739)

Components

  • Handle label fallback for dropdownMenu. (70951)

Tools

  • PR enforcer workflow: Use regex to filter labels starting with [Type]. (72672)

Testing

  • Add end-to-end test for DataViews pagination. (73134)
  • Add initial CSS logical properties enforcement (CSS modules). (72758)
  • Automated testing: Add tests to ensure pagination data when fetching intermediate results. (71613)
  • Block Bindings: 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. coverage for sources. (72799)
  • Enable no-unused-disable ESLint Comments plugin rule. (72940)
  • Improve the readability of the comment sharing manual cherry pick steps. (72887)
  • Increase memory limit for macOS CI runner. (72980)
  • Remove e2e-test-utils package and deprecated test configuration. (72880)
  • Scripts: Add default linting for ESM & CJS file extension variations. (72801)
  • Switch default ESLint resolver to improve handling for modern exports semantics. (72893)
  • Test across OS and Node.js version for commits to trunk. (72946)
  • Tests: Try fixing “should refresh the page when stylesheet loading fails” end-to-end test. (72783)
  • end-to-end Tests: Fix some flaky tests. (73159)
  • eslint-plugin: Disable redundant import rules for TypeScript files. (72884)

Build Tooling

  • Upgrade TypeScript to 5.9. (72995)
  • Build v2: Fix build failure on Windows. (72960)
  • Build: Bundle CSS in package transpilation phase. (72805)
  • Build: Inline CSS modules stylesheet content. (72673)
  • Build: Remove typechecking from precommit 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.. (72955)
  • Pin full-length commit SHA for 3rd-party actions. (72855)
  • Theme: Fix build issues. (72919)
  • Theme: Update precomputed color ramps script for Node.js v20.10 compatibility. (72971)
  • Try regenerating package lock. (72991)
  • Update package-lock.json. (72996)
  • wp-build: Update package detection to ignore empty folders. (72941)

Components

  • Change types export to declaration file. (72979)

Post Editor

  • Editor: Change the name of the ‘Plugins’ menu group. (72826)

First-time contributors

The following PRs were merged by first-time contributors:

  • @okawayasuno: Math format: Force LTR direction in RTL languages. (72901)
  • @PaulREnglish: Fix setupEditor edits not being applied when non-iterable edits are used. (73167)
  • @pranvinit: Cover Block: Show settings inspector controls in the Site Editor. (69178)

Contributors

The following contributors merged PRs in this release:

@aaronrobertshaw @adamsilverstein @aduth @andreawetzel @andrewserong @annezazu @arthur791004 @DAreRodz @desrosj @dhruvang21 @ellatrix @getdave @gigitux @hbhalodia @im3dabasia @jeryj @joedolson @jorgefilipecosta @joshualip-plaudit @jsnajdr @juanfra @karthick-murugan @Mamaduka @manzoorwanijk @mcsf @mikachan @mtias @ntsekouras @oandregal @ockham @okawayasuno @PaulREnglish @pranvinit @priethor @ramonjd @rcrdortiz @roseg43 @sethrubenstein @shimotmk @sidharthpandita1 @SirLouen @Soean @stokesman @sunyatasattva @t-hamano @Takshil-Kunadia @talldan @tellthemachines @tyxla @youknowriad

Props @cbravobernal peer review.