Skip to content

Conversation

@ScriptedAlchemy
Copy link
Member

@ScriptedAlchemy ScriptedAlchemy commented Oct 4, 2025

Summary

  • ensure async entrypoints such as Web Workers receive dedicated runtime chunks with the required federation helpers
  • harden remote runtime initialization so dynamically created runtimes do not crash when helpers are missing
  • document the worker demo updates and sync related tests, samples, and release notes

Verification

Resolves #4085.

- reassign non-initial entrypoints to their own runtime when runtimeChunk is single or object form - add worker demo and cypress assertion covering the web worker bootstrap
@changeset-bot
Copy link

changeset-bot bot commented Oct 4, 2025

🦋 Changeset detected

Latest commit: 4a375c6

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 37 packages
Name Type
@module-federation/enhanced Patch
@module-federation/modern-js Patch
@module-federation/nextjs-mf Patch
@module-federation/node Patch
@module-federation/rsbuild-plugin Patch
@module-federation/rspress-plugin Patch
@module-federation/storybook-addon Patch
@module-federation/modernjsapp Patch
remote5 Patch
remote6 Patch
website-new Patch
@module-federation/runtime Patch
@module-federation/rspack Patch
@module-federation/webpack-bundler-runtime Patch
@module-federation/sdk Patch
@module-federation/runtime-tools Patch
@module-federation/managers Patch
@module-federation/manifest Patch
@module-federation/dts-plugin Patch
@module-federation/third-party-dts-extractor Patch
@module-federation/devtools Patch
@module-federation/bridge-react Patch
@module-federation/bridge-vue3 Patch
@module-federation/bridge-shared Patch
@module-federation/bridge-react-webpack-plugin Patch
@module-federation/retry-plugin Patch
@module-federation/data-prefetch Patch
@module-federation/error-codes Patch
@module-federation/inject-external-runtime-core-plugin Patch
@module-federation/runtime-core Patch
create-module-federation Patch
@module-federation/cli Patch
@module-federation/metro Patch
@module-federation/metro-plugin-rnef Patch
@module-federation/metro-plugin-rnc-cli Patch
@module-federation/esbuild Patch
@module-federation/utilities Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@netlify
Copy link

netlify bot commented Oct 4, 2025

Deploy Preview for module-federation-docs ready!

Name Link
🔨 Latest commit 4a375c6
🔍 Latest deploy log https://app.netlify.com/projects/module-federation-docs/deploys/68fa770a9e145500088297b5
😎 Deploy Preview https://deploy-preview-4116--module-federation-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@ScriptedAlchemy
Copy link
Member Author

@codex harshly review the changes here. not completly happy with the solutions applied here. do lots of research and give review comments

@chatgpt-codex-connector
Copy link

Summary

  • Added REVIEW.md capturing three blocking concerns: the async runtime detection still ignores manually shared runtimes, runtime naming becomes non-deterministic for anonymous workers, and the remote loader now silently no-ops without the bundler runtime. REVIEW.mdL5-L12
  • Noted the remaining duplication TODO in the worker runtime test suite so it doesn’t get locked in as the expected behaviour. REVIEW.mdL14-L16

Testing

  • ⚠️ not run (review-only change)

View task →

@ScriptedAlchemy
Copy link
Member Author

@codex harshly review pr

@chatgpt-codex-connector
Copy link

Summary

  • Added REVIEW.md outlining three blocking regressions introduced by the worker runtime changes (manual shared runtimes still break, anonymous runtime naming is non-deterministic, and remote loading now silently no-ops without the bundler runtime) plus a reminder to address the duplicated worker test fixture. REVIEW.mdL1-L17

Testing

  • ⚠️ not run (documentation-only change)

View task →

@ogonkov
Copy link
Contributor

ogonkov commented Oct 6, 2025

@ScriptedAlchemy this will fix any references to modules via new URL(..., import.meta.url) syntax?

I'm asked because we use custom Worker constructor :/

@ScriptedAlchemy
Copy link
Member Author

Any chance you can send a PR or branch and modify one of our apps in /apps to replicate your needs so I can run against that app within this monorepo

ScriptedAlchemy and others added 8 commits October 6, 2025 15:52
- Add comprehensive test for webpack worker compilation with Module Federation - Test verifies worker syntax new Worker(new URL()) compiles correctly - Validates federated modules (React, ComponentA) are accessible in worker context - Tests both CommonJS (async-node) and ESM (node14) module outputs - Provides URL to test scope via moduleScope for Node.js targets - All 10 tests pass successfully (5 tests × 2 builds)
Added beforeEach hook to reset React version to '0.1.2' before running worker tests. This prevents test contamination from other container tests (like 1-container-full) that set React version to '3.2.1' and cause the worker test to fail with unexpected version mismatches. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
… cross-context relocation Enhanced runtime chunk detection and federation runtime injection to properly support worker threads. Added safeguards to prevent runtime module relocation between different execution contexts (main thread vs workers). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
…ker demo - Enable runtimeChunk in webpack config to ensure bundler runtime is available - Update WorkerDemo to use WorkerWrapper instead of module worker - This fixes the 'bundler runtime is required to load remote chunk' error in workers
ScriptedAlchemy and others added 13 commits October 14, 2025 16:07
…tion fix Added and updated tests to verify the stage 40 fix for EmbedFederationRuntimeModule: - Updated FederationRuntimePluginWorkerRuntime.test.ts to verify runtime module execution order in worker bundles (EmbedFederation appears AFTER StartupChunkDependencies) - Updated FederationRuntimePluginHostRuntime.test.ts to add test for main bundle generation with correct runtime module order - Created HoistContainerReferencesPlugin.test.ts with 13 comprehensive tests covering: - Plugin application and hook registration - Runtime chunk detection - Module hoisting for container entries, federation runtime, and worker runtime - Chunk cleanup - getAllReferencedModules helper function with various traversal types - Updated RemoteRuntimeModule.test.ts to include defensive initialization lines All 632 tests passing. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
…rder Refactored both FederationRuntimePlugin compiler-unit tests to use programmatic webpack execution instead of spawning webpack-cli: - FederationRuntimePluginHostRuntime.test.ts: - Removed swc-loader dependency by using plain JavaScript - Changed to use programmatic webpack API (runWebpack helper) - Adjusted first test to expect successful build (not error) - Changed second test to use development mode to preserve markers - Updated assertions to check for actual functional code - FederationRuntimePluginWorkerRuntime.test.ts: - Fixed ROOT path calculation (was off by one level) All tests now pass successfully. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Fixed FederationRuntimePluginWorkerRuntime.test.ts by: - Removed `plugin._options.remotes = {}` which was causing module resolution errors - Fixed collectInfrastructureErrors to handle non-iterable entries properly - Simplified error checking to log errors for debugging The test was failing because it removed all remotes, but the source code imports from remote1 modules (WebpackSvg, WebpackPng, useCustomRemoteHook). The build now succeeds by keeping the remotes configuration intact. All 73 container tests now pass.
Fixed Next.js e2e tests failing with "__webpack_require__.f is undefined" by changing the execution order in EmbedFederationRuntimeModule: **Before:** 1. Require federation entry 2. Call prevStartup() **After:** 1. Call prevStartup() - initializes webpack runtime handlers 2. Require federation entry - handlers are now available The federation entry imports modules that depend on webpack runtime handlers like __webpack_require__.f.consumes. By calling prevStartup first, we ensure all these handlers are registered before the federation entry is required. This fixes the error: "Cannot read properties of undefined (reading 'consumes')" at __webpack_require__.f.consumes Also changed stage from 40 to 30 to run earlier in the initialization sequence while still being after StartupChunkDependenciesRuntimeModule (stage 20).
Changes: - Simplified EmbedFederationRuntimeModule to load federation entry at STAGE_NORMAL - Removed stub bundlerRuntime approach (caused merging issues with prevFederation) - Updated Cypress configs to use CI env variable for retry logic (0 locally, 2-3 in CI) - Created run-next-e2e.mjs script for local Next.js e2e testing - Added RUNTIME_INIT_FIX.md documentation explaining the stage ordering issue - Deleted unused ChildCompilationRuntimePlugin.ts Known Issue: Next.js SSR still has 500 errors during page rendering. The federation entry loads correctly in client bundles but server bundles may need investigation. 🤖 Generated with Claude Code https://claude.com/claude-code Co-Authored-By: Claude <noreply@anthropic.com>
…tialization Fixes worker runtime initialization while maintaining Next.js compatibility by detecting chunk loading type and applying appropriate runtime module stages. - JSONP chunks (Next.js): STAGE_ATTACH (10) - loads inside startup hook - Worker chunks (import-scripts): STAGE_BASIC (5) - loads immediately before RemoteRuntimeModule - Follows webpack's pattern from JsonpChunkLoadingPlugin for chunk type detection - Adds comprehensive unit tests for stage selection logic Resolves initialization timing issues where bundlerRuntime was undefined when RemoteRuntimeModule tried to access it in worker environments. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
… pattern Updates FederationRuntimePluginWorkerRuntime test to reflect the new implementation where worker chunks use immediate execution (stage 5) instead of startup hook wrapper pattern. - Removes checks for old startup hook pattern (prevStartup wrapper) - Verifies federation runtime module is present - Validates federation entry is loaded regardless of execution pattern 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
@ScriptedAlchemy
Copy link
Member Author

@codex review pr deeply

@chatgpt-codex-connector
Copy link

Codex Review: Didn't find any major issues. 👍

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting

@ScriptedAlchemy ScriptedAlchemy changed the title Fix worker runtime chunk regressing web worker builds Enhance Web Worker federation runtime support Oct 21, 2025
ScriptedAlchemy and others added 7 commits October 21, 2025 15:39
Remove RUNTIME_INIT_FIX.md as it's internal documentation that shouldn't be in the codebase. The changeset documentation is sufficient for release notes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Adds defensive checks for bundlerRuntime existence before calling remotes() in RemoteRuntimeModule. This prevents TypeError when HMR chunks (like react-refresh-webpack-plugin vendors) are loaded that don't have the federation runtime injected. Fixes blob-based worker HMR scenario reported in issue #4085 where bundlerRuntime.remotes would be undefined in dynamically loaded chunks. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Removes the id-token: write permission requirement that was causing workflow validation errors due to permission restrictions in called workflows. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

3 participants