Fixed
Project:
Gutenberg
Version:
4.0.x-dev
Component:
Code
Priority:
Normal
Category:
Bug report
Assigned:
Unassigned
Reporter:
Created:
9 Oct 2026 at 13:43 UTC
Updated:
11 Oct 2026 at 18:41 UTC
Jump to comment: Most recent
Gutenberg 24 (block-library 11) ships Accordion, Tabs, Icon and Social Icons as stable blocks, and the module lets editors allow them per content type, but none of them fully works:
gutenberg/interactivity library points to js/vendor/gutenberg/interactivity/index.min.js, which no longer exists since the 23.0.1 update, so no view script that uses the Interactivity API runs (accordion, tabs, file, playlist). The accordion item preprocess also binds an action that upstream removed, and the templates rebuild the wrapper, which loses what save() wrote on it (e.g. role="group").core/tab, core/tabs-menu, core/tabs-menu-item), which upstream replaced with core/tab-list, core/tab-panels and core/tab-panel. The new child blocks aren't registered, so the block can't even be inserted./wp/v2/icons and /wp/v2/icon-collections, which the API mock doesn't handle, so the icon library is empty. The block has no saved markup and no Drupal render, so nothing shows on the page.@wordpress/latex-to-mathml with import(), and the vendor build exposes that package's global so that the editor gets an object instead of the conversion function.wp_should_skip_block_supports_serialization() shim always returns FALSE, so blocks that apply some supports to an inner element (Button, Image, Table, Separator, Icon…) get those styles on their wrapper too.interactivity library to index.js, and keep it (and fit-text-view, also lost in a regeneration) in the preserved libraries of gutenberg-dependencies.php.GutenbergFilter gives inner blocks the context of their ancestors (providesContext in block.json, with defaults), in $block['context'] and in a new block_context template variable. New hook_gutenberg_block_context_alter(), the counterpart of the render_block_context filter.core/accordion and core/accordion-item onto the saved markup. As Drupal doesn't process directives on the server, also write their initial state (aria-expanded, hidden="until-found" on closed panels, so find in page still opens them).gutenberg.blocks.yml and the always-registered child blocks, port the upstream render of core/tabs, core/tab-list and core/tab-panel (tab IDs through block context), and remove the stale vendor directories. copy-block-assets.js now removes the directories of blocks that block-library no longer ships.gutenberg.icon_registry) with the public icons of @wordpress/icons (collection "Gutenberg", copied at build:vendor time by scripts/copy-icons.js) and the collections that themes and modules declare with a new icons: key in their *.gutenberg.yml. Editor routes /editor/icon-collections and /editor/icons back the mocked REST paths, and a preprocess renders the SVG with the block's color, border, padding and width.core/social-link becomes an always-allowed child block.wp_should_skip_block_supports_serialization() from upstream.hook_gutenberg_block_context_alter(array &$context, array $block).block_context variable in gutenberg-block templates.icons: key in *.gutenberg.yml, and the gutenberg.icon_registry service.gutenberg.icon_collections, gutenberg.icons and gutenberg.icon.wp_should_skip_block_supports_serialization() now honors __experimentalSkipSerialization, so block processors no longer add skipped supports to the wrapper.None. Content saved with the experimental Tabs blocks (Gutenberg 23 and earlier) has no upstream migration and shows as unsupported blocks.
The Accordion, Tabs, Icon and Social Icons blocks now work. Themes and modules can add icon collections to the Icon block with icons: in their *.gutenberg.yml.
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #3
marcofernandes commentedComment #4
marcofernandes commented