Skip to content

wp-build: Do not remove Core's default script modules registration#75705

Merged
youknowriad merged 2 commits intoWordPress:trunkfrom
dhasilva:fix/wp-build-remove-default-scripts
Feb 24, 2026
Merged

wp-build: Do not remove Core's default script modules registration#75705
youknowriad merged 2 commits intoWordPress:trunkfrom
dhasilva:fix/wp-build-remove-default-scripts

Conversation

@dhasilva
Copy link
Copy Markdown
Contributor

@dhasilva dhasilva commented Feb 18, 2026

What?

Closes #75704

It deletes the removal of the default script modules registration

Why?

Wp-build removes WordPress Core's built-in function that registers default script modules (like @wordpress/a11y), and it assumes that Gutenberg is installed and activated to replace it with its own modules, but if Gutenberg is not activated this replacement never happens, and the import of @wordpress/a11y fails, as the specifier is not mapped.

How?

By deleting the removal entirely, as it is not necessary.

Testing Instructions

1 - Clone https://github.com/dhasilva/minimal-wp-build-test locally
2 - pnpm install and build the test plugin with pnpm run build
3 - Go to Tools > Minimal WP-Build Test
4 - Check that you see the error in the linked issue
5 - Symlink wp-build to the plugin's dependencies:

cd <your-wp-plugins-folder>/minimal-wp-build-test
rm -rf node_modules/@wordpress/build
ln -s <your-gutenberg-folder>/packages/wp-build node_modules/@wordpress/build

6 - Rebuild the test plugin: pnpm run build
7 - Check /build/modules.php, it should have the added if block.
8 - Go to Tools > Minimal WP-Build Test again
9 - Check that the page loads
10 - Activate Gutenberg
11 Go to Tools > Minimal WP-Build Test again
12 - Check that the page loads

Testing Instructions for Keyboard

Screenshots or screencast

Before After
Screenshot from 2026-02-18 20-26-27 Screenshot from 2026-02-18 20-37-43

@github-actions
Copy link
Copy Markdown

github-actions bot commented Feb 18, 2026

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: dhasilva <thehenridev@git.wordpress.org>
Co-authored-by: youknowriad <youknowriad@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@dhasilva
Copy link
Copy Markdown
Contributor Author

@youknowriad Is this the correct approach? Currently we are bypassing this issue in Jetpack with this.


if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) {
// Remove Core's default script modules registration so Gutenberg can replace them with its own.
remove_action( 'wp_default_scripts', 'wp_default_script_modules' );
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I actually wonder why this is needed at all? Can we just remove this code from here (or if it's really required in Gutenberg, we should move it to client-assets.php file since it's gutenberg specific.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assumed it was, but it seems it is not. Testing with Gutenberg installed works as long as this other fix is applied, so at first glance there seems to be no regression.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated the PR to remove it.

@dhasilva dhasilva force-pushed the fix/wp-build-remove-default-scripts branch from 5c35029 to 039975a Compare February 19, 2026 16:56
@dhasilva dhasilva changed the title wp-build: Only remove Core's default script modules registration if Gutenberg is activated wp-build: Do not remove Core's default script modules registration Feb 19, 2026
Copy link
Copy Markdown
Contributor

@youknowriad youknowriad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM but I guess the PR is blocked by the failures on trunk for now.

@dhasilva dhasilva force-pushed the fix/wp-build-remove-default-scripts branch from 039975a to 5c01525 Compare February 19, 2026 19:16
@dhasilva dhasilva force-pushed the fix/wp-build-remove-default-scripts branch from 5c01525 to c6c82ff Compare February 20, 2026 16:47
@dhasilva
Copy link
Copy Markdown
Contributor Author

Rebased, tests are passing now.

@youknowriad youknowriad merged commit 5c9cb1a into WordPress:trunk Feb 24, 2026
37 checks passed
@github-actions github-actions bot added this to the Gutenberg 22.7 milestone Feb 24, 2026
scruffian added a commit that referenced this pull request Feb 25, 2026
#75705 removed the `remove_action( 'wp_default_scripts', 'wp_default_script_modules' )`
line to fix issues with third-party plugins using wp-build without
Gutenberg activated. However, this caused a regression: since
`wp_register_script_module()` does not override existing registrations,
Gutenberg's bundled module versions are now silently ignored in favor of
Core's versions.

This is a problem for any module where Gutenberg's version differs from
Core's (e.g., modules with additional bundled dependencies like the
playlist view script module).

Fix by calling `wp_deregister_script_module()` before registering each
module. This is a more targeted approach than removing Core's entire
registration action — it allows Core to register its modules normally
while ensuring the plugin's versions take precedence.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@scruffian
Copy link
Copy Markdown
Contributor

I think this caused an issue when we want to change modules in Gutenberg: #75909

scruffian added a commit that referenced this pull request Feb 25, 2026
#75705 removed the `remove_action( 'wp_default_scripts', 'wp_default_script_modules' )`
line to fix issues with third-party plugins using wp-build without
Gutenberg activated. However, this caused a regression: since
`wp_register_script_module()` does not override existing registrations,
Gutenberg's bundled module versions are now silently ignored in favor of
Core's versions.

This is a problem for any module where Gutenberg's version differs from
Core's (e.g., modules with additional bundled dependencies like the
playlist view script module).

Fix by calling `wp_deregister_script_module()` before registering each
module. This is a more targeted approach than removing Core's entire
registration action — it allows Core to register its modules normally
while ensuring the plugin's versions take precedence.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@scruffian scruffian added [Type] Enhancement A suggestion for improvement. [Package] wp-build /packages/wp-build [Type] Bug An existing feature does not function as intended [Type] Build Tooling Issues or PRs related to build tooling and removed [Type] Enhancement A suggestion for improvement. [Type] Bug An existing feature does not function as intended labels Mar 4, 2026
@desrosj desrosj added the Backport to WP 7.0 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Mar 4, 2026
@github-project-automation github-project-automation bot moved this to 🔎 Needs Review in WordPress 7.0 Editor Tasks Mar 4, 2026
@github-project-automation github-project-automation bot moved this from 🔎 Needs Review to ✅ Done in WordPress 7.0 Editor Tasks Mar 4, 2026
@github-actions github-actions bot removed the Backport to WP 7.0 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Mar 4, 2026
gutenbergplugin pushed a commit that referenced this pull request Mar 4, 2026
…75705)

Co-authored-by: dhasilva <thehenridev@git.wordpress.org>
Co-authored-by: youknowriad <youknowriad@git.wordpress.org>
@github-actions github-actions bot added the Backported to WP Core Pull request that has been successfully merged into WP Core label Mar 4, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 4, 2026

I just cherry-picked this PR to the wp/7.0 branch to get it included in the next release: 98ef57e

gutenbergplugin pushed a commit that referenced this pull request Mar 4, 2026
#75705 removed the `remove_action( 'wp_default_scripts', 'wp_default_script_modules' )`
line to fix issues with third-party plugins using wp-build without
Gutenberg activated. However, this caused a regression: since
`wp_register_script_module()` does not override existing registrations,
Gutenberg's bundled module versions are now silently ignored in favor of
Core's versions.

This is a problem for any module where Gutenberg's version differs from
Core's (e.g., modules with additional bundled dependencies like the
playlist view script module).

Fix by calling `wp_deregister_script_module()` before registering each
module. This is a more targeted approach than removing Core's entire
registration action — it allows Core to register its modules normally
while ensuring the plugin's versions take precedence.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
pull bot pushed a commit to tigefa4u/wordpress-develop that referenced this pull request Mar 5, 2026
CI run: WordPress#11167.

See #64595.

---

I've included a log of the Gutenberg changes with the following command:

git log --reverse --format="- %s" 022d8dd3d461f91b15c1f0410649d3ebb027207f..e499abfb843a43ac88455ca319220c5f181e1cf3 | sed 's|#\([0-9][0-9]*\)|https://github.com/WordPress/gutenberg/pull/\1|g; /github\.com\/WordPress\/gutenberg\/pull/!d' | pbcopy

- Add documentation for contentRole and listView block supports (WordPress/gutenberg#75903)
- Interactivity Router: fix back and forward navigation after refresh (WordPress/gutenberg#75927)
- Real-time collaboration: Fix disconnect dialog on navigate (WordPress/gutenberg#75886)
- Real Time Collab: Throttle syncing for inactive tabs. (WordPress/gutenberg#75843)
- Components: Specify line-height to avoid inheriting default values (WordPress/gutenberg#75880)
- Pattern Editing: Fix sibling blocks to edited pattern not being disabled (WordPress/gutenberg#75994)
- Sync connector PHP behavior with Core backport changes (WordPress/gutenberg#75968)
- Connectors: Avoid manual string concatenation (WordPress/gutenberg#75997)
- DataForm: fix field label for panel (should not be uppercase) (WordPress/gutenberg#75944)
- Views: add support for more overrides (all developer-defined config) (WordPress/gutenberg#75971)
- Use homeUrl instead of siteUrl for link badge evaluations (WordPress/gutenberg#75978)
- DataViews: Right-align `integer` and `number` fields (WordPress/gutenberg#75917)
- Navigation Link: Compare internal links by host instead of origin (WordPress/gutenberg#76015)
- Fix: Skip scaled image sideload for images below big image threshold (WordPress/gutenberg#75990)
- Client side media cherry pick for 7.0 (WordPress/gutenberg#75998)
- Show transform dropdown previews on focus as well as hover (WordPress/gutenberg#75940) (WordPress/gutenberg#75992)
- RTC: Fix syncing of emoji / surrogate pairs (WordPress/gutenberg#76049)
- [Real-time Collaboration] Fix sync issue on refresh (WordPress/gutenberg#76017)
- Real-time collaboration: Improve disconnect dialog (WordPress/gutenberg#75970)
- DataViews: Fix filter toggle flickering when there are locked or primary filters (WordPress/gutenberg#75913) (WordPress/gutenberg#76068)
- Connectors: Dynamically register providers from WP AI Client registry (WordPress/gutenberg#76014)
- PHP-only Blocks: Reflect bound attribute values in inspector controls (WordPress/gutenberg#76040)
- Fix: Set quality and strip metadata in client-side image resize (WordPress/gutenberg#76029)
- RTC: Prevent duplicate poll cycles (WordPress/gutenberg#76059)
- RTC: Fix stale CRDT document persisted on save (WordPress/gutenberg#75975)
- RTC: Disable multiple collaborators if meta boxes are present (WordPress/gutenberg#75939)
- Directly inject styles in overlay to make styles stay consistently mounted (WordPress/gutenberg#75700)
- Real-time collaboration: Fix comment syncing on site editor (WordPress/gutenberg#75746)
- Real-time Collaboration: Bug fix for CRDT user selection and add tests (WordPress/gutenberg#75075)
- RTC: Updates from backport PR (WordPress/gutenberg#75711)
- RTC: Fix undefined array_first() call in sync storage (WordPress/gutenberg#75869)
- RTC: Fix fallthrough for sync update switch statement (WordPress/gutenberg#76060)
- Real-time collaboration: Remove block client IDs from Awareness, fix "Show Template" view (WordPress/gutenberg#75590)
- RTC: Add session activity notifications (WordPress/gutenberg#76065)
- Prevent non-reproducible Sass/CSS builds. (WordPress/gutenberg#76098)
- Block toolbar and context menu: hide pattern actions in Revisions UI (WordPress/gutenberg#76066)
- Try enabling style variation transforms for blocks in contentOnly mode (WordPress/gutenberg#75761)
- Block toolbar: hide styles dropdown in Revisions UI (WordPress/gutenberg#76119)
- Image block: fix lightbox srcset size (WordPress/gutenberg#76092)
- Fix writing flow navigation for annotation style, or any other block with border radius (WordPress/gutenberg#76072)
- Image: Hide 'Set as featured image' for in-editor revisions (WordPress/gutenberg#76123)
- Connectors: Gate unavailable install actions behind install capability (WordPress/gutenberg#75980)
- build: Exclude experimental pages from Core builds (WordPress/gutenberg#76038)
- HTML & Shortcode: Disable viewport visibility support (WordPress/gutenberg#76138)
- RTC: Verify client ID to avoid awareness mutation (WordPress/gutenberg#76056)
- wp-build: Do not remove Core's default script modules registration (WordPress/gutenberg#75705)
- wp-build: Deregister script modules before re-registering (WordPress/gutenberg#75909)
- Remove `! function_exists()` checks from PHP templates (WordPress/gutenberg#76062)
- Connectors: Update page identifier to options-connectors (WordPress/gutenberg#76156)
- Connectors: Align init hook priorities with Core overrides (WordPress/gutenberg#76161)
- Icon Block: Clean up selectors config (WordPress/gutenberg#75786)
- Icons: Fix incorrect icon slug (WordPress/gutenberg#76165)
- RTC: Enable RTC by default (WordPress/gutenberg#75739)
- Rename and visibility modals: gate shortcuts behind canEditBlock to prevent triggering in revisions UI (WordPress/gutenberg#76168)
- Fix: Block style variations not rendering in Site Editor Patterns page (WordPress/gutenberg#76122)
- Client-side media processing: only use media upload provider when not in preview mode (WordPress/gutenberg#76124)
- Notes: Disable for in-editor revisions (WordPress/gutenberg#76180)
- Core Data: Support reading revision data in useEntityProp (fixes footnotes in revisions UI) (WordPress/gutenberg#76106)
- Client-side media processing: Try plumbing invalidation to the block-editor's mediaUpload onSuccess callback (WordPress/gutenberg#76173)
- Connectors: Improve responsive layout on small screens (WordPress/gutenberg#76186)
- Interactivity API: Fix router initialization race condition on Safari/Firefox (WordPress/gutenberg#76053) (WordPress/gutenberg#76191)
- Interactivity: Fix crypto.randomUUID crash in non-secure contexts (WordPress/gutenberg#76151)


git-svn-id: https://develop.svn.wordpress.org/trunk@61843 602fd350-edb4-49c9-b593-d223f7449a82
markjaquith pushed a commit to markjaquith/WordPress that referenced this pull request Mar 5, 2026
CI run: WordPress/wordpress-develop#11167.

See #64595.

---

I've included a log of the Gutenberg changes with the following command:

git log --reverse --format="- %s" 022d8dd3d461f91b15c1f0410649d3ebb027207f..e499abfb843a43ac88455ca319220c5f181e1cf3 | sed 's|#\([0-9][0-9]*\)|https://github.com/WordPress/gutenberg/pull/\1|g; /github\.com\/WordPress\/gutenberg\/pull/!d' | pbcopy

- Add documentation for contentRole and listView block supports (WordPress/gutenberg#75903)
- Interactivity Router: fix back and forward navigation after refresh (WordPress/gutenberg#75927)
- Real-time collaboration: Fix disconnect dialog on navigate (WordPress/gutenberg#75886)
- Real Time Collab: Throttle syncing for inactive tabs. (WordPress/gutenberg#75843)
- Components: Specify line-height to avoid inheriting default values (WordPress/gutenberg#75880)
- Pattern Editing: Fix sibling blocks to edited pattern not being disabled (WordPress/gutenberg#75994)
- Sync connector PHP behavior with Core backport changes (WordPress/gutenberg#75968)
- Connectors: Avoid manual string concatenation (WordPress/gutenberg#75997)
- DataForm: fix field label for panel (should not be uppercase) (WordPress/gutenberg#75944)
- Views: add support for more overrides (all developer-defined config) (WordPress/gutenberg#75971)
- Use homeUrl instead of siteUrl for link badge evaluations (WordPress/gutenberg#75978)
- DataViews: Right-align `integer` and `number` fields (WordPress/gutenberg#75917)
- Navigation Link: Compare internal links by host instead of origin (WordPress/gutenberg#76015)
- Fix: Skip scaled image sideload for images below big image threshold (WordPress/gutenberg#75990)
- Client side media cherry pick for 7.0 (WordPress/gutenberg#75998)
- Show transform dropdown previews on focus as well as hover (WordPress/gutenberg#75940) (WordPress/gutenberg#75992)
- RTC: Fix syncing of emoji / surrogate pairs (WordPress/gutenberg#76049)
- [Real-time Collaboration] Fix sync issue on refresh (WordPress/gutenberg#76017)
- Real-time collaboration: Improve disconnect dialog (WordPress/gutenberg#75970)
- DataViews: Fix filter toggle flickering when there are locked or primary filters (WordPress/gutenberg#75913) (WordPress/gutenberg#76068)
- Connectors: Dynamically register providers from WP AI Client registry (WordPress/gutenberg#76014)
- PHP-only Blocks: Reflect bound attribute values in inspector controls (WordPress/gutenberg#76040)
- Fix: Set quality and strip metadata in client-side image resize (WordPress/gutenberg#76029)
- RTC: Prevent duplicate poll cycles (WordPress/gutenberg#76059)
- RTC: Fix stale CRDT document persisted on save (WordPress/gutenberg#75975)
- RTC: Disable multiple collaborators if meta boxes are present (WordPress/gutenberg#75939)
- Directly inject styles in overlay to make styles stay consistently mounted (WordPress/gutenberg#75700)
- Real-time collaboration: Fix comment syncing on site editor (WordPress/gutenberg#75746)
- Real-time Collaboration: Bug fix for CRDT user selection and add tests (WordPress/gutenberg#75075)
- RTC: Updates from backport PR (WordPress/gutenberg#75711)
- RTC: Fix undefined array_first() call in sync storage (WordPress/gutenberg#75869)
- RTC: Fix fallthrough for sync update switch statement (WordPress/gutenberg#76060)
- Real-time collaboration: Remove block client IDs from Awareness, fix "Show Template" view (WordPress/gutenberg#75590)
- RTC: Add session activity notifications (WordPress/gutenberg#76065)
- Prevent non-reproducible Sass/CSS builds. (WordPress/gutenberg#76098)
- Block toolbar and context menu: hide pattern actions in Revisions UI (WordPress/gutenberg#76066)
- Try enabling style variation transforms for blocks in contentOnly mode (WordPress/gutenberg#75761)
- Block toolbar: hide styles dropdown in Revisions UI (WordPress/gutenberg#76119)
- Image block: fix lightbox srcset size (WordPress/gutenberg#76092)
- Fix writing flow navigation for annotation style, or any other block with border radius (WordPress/gutenberg#76072)
- Image: Hide 'Set as featured image' for in-editor revisions (WordPress/gutenberg#76123)
- Connectors: Gate unavailable install actions behind install capability (WordPress/gutenberg#75980)
- build: Exclude experimental pages from Core builds (WordPress/gutenberg#76038)
- HTML & Shortcode: Disable viewport visibility support (WordPress/gutenberg#76138)
- RTC: Verify client ID to avoid awareness mutation (WordPress/gutenberg#76056)
- wp-build: Do not remove Core's default script modules registration (WordPress/gutenberg#75705)
- wp-build: Deregister script modules before re-registering (WordPress/gutenberg#75909)
- Remove `! function_exists()` checks from PHP templates (WordPress/gutenberg#76062)
- Connectors: Update page identifier to options-connectors (WordPress/gutenberg#76156)
- Connectors: Align init hook priorities with Core overrides (WordPress/gutenberg#76161)
- Icon Block: Clean up selectors config (WordPress/gutenberg#75786)
- Icons: Fix incorrect icon slug (WordPress/gutenberg#76165)
- RTC: Enable RTC by default (WordPress/gutenberg#75739)
- Rename and visibility modals: gate shortcuts behind canEditBlock to prevent triggering in revisions UI (WordPress/gutenberg#76168)
- Fix: Block style variations not rendering in Site Editor Patterns page (WordPress/gutenberg#76122)
- Client-side media processing: only use media upload provider when not in preview mode (WordPress/gutenberg#76124)
- Notes: Disable for in-editor revisions (WordPress/gutenberg#76180)
- Core Data: Support reading revision data in useEntityProp (fixes footnotes in revisions UI) (WordPress/gutenberg#76106)
- Client-side media processing: Try plumbing invalidation to the block-editor's mediaUpload onSuccess callback (WordPress/gutenberg#76173)
- Connectors: Improve responsive layout on small screens (WordPress/gutenberg#76186)
- Interactivity API: Fix router initialization race condition on Safari/Firefox (WordPress/gutenberg#76053) (WordPress/gutenberg#76191)
- Interactivity: Fix crypto.randomUUID crash in non-secure contexts (WordPress/gutenberg#76151)

Built from https://develop.svn.wordpress.org/trunk@61843


git-svn-id: http://core.svn.wordpress.org/trunk@61130 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backported to WP Core Pull request that has been successfully merged into WP Core [Package] wp-build /packages/wp-build [Type] Build Tooling Issues or PRs related to build tooling

Projects

Development

Successfully merging this pull request may close these issues.

WP Build: Page crashes when Gutenberg is not activated

4 participants