Skip to content

feat(mf): emit RSC metadata in federation manifests - #13203

Draft
ScriptedAlchemy wants to merge 110 commits into
feat/mf-layersfrom
cursor/manifest-rsc-client-data-d493
Draft

ScriptedAlchemy wants to merge 110 commits into
feat/mf-layersfrom
cursor/manifest-rsc-client-data-d493

Conversation

@ScriptedAlchemy

@ScriptedAlchemy ScriptedAlchemy commented Mar 4, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Emit rsc metadata for shared, exposes, and remotes in mf-stats.json and mf-manifest.json
  • Align shared manifest identity (name = pkgName, shareKey = federated identity) and preserve aliased remote lookup paths for manifest consumers
  • Add focused regression coverage for the manifest producer contract and remove brittle debug-only assertions from that fixture

Stack

Dependency order, bottom to top (the layers foundation has been split into four PRs):

  • #12977 feat(mf): add layer-aware shared module core
  • #14911 feat(mf): initialize ordered share scopes at runtime
  • #14912 feat(mf): support layered container exposes
  • #14913 feat(mf): emit layered federation manifest metadata
  • #13203 feat(mf): emit RSC metadata in federation manifests <- this PR
  • #13204 feat(rsbuild): add RSC federation host/remote example
  • #13208 feat(rsbuild): add RSC federation module patterns
  • #13215 feat(rsc): register federation manifest data at runtime

The RSC branches still carry the earlier, unsplit layers implementation. #13203 currently targets feat/mf-layers (#12977); integrating the refreshed foundation through #14913 and propagating it through #13204 → #13208 → #13215 remains outstanding. The list above describes the dependency order, not completed branch integration.

Layered Federation metadata also has a companion change in module-federation/core#5039. It updates the Federation wrapper and manifest reader; it does not implement RSC runtime registration.

Why This PR Exists

This PR defines the manifest producer contract that later runtime code consumes. Shared-entry identity, aliased remote lookups, and manifest-level RSC metadata belong here because they change what the manifest emits.

References

  • Focused regression: tests/rspack-test/configCases/container-1-5/manifest-rsc-references

@cursor

cursor Bot commented Mar 4, 2026

Copy link
Copy Markdown

Cursor Agent can help with this pull request. Just @cursor in comments and I'll start working on changes in this branch.
Learn more about Cursor Agents

@github-actions

github-actions Bot commented Mar 5, 2026 •

Copy link
Copy Markdown
Contributor

Rsdoctor Bundle Diff Analysis

Found 5 projects in monorepo, 0 projects with changes.

📊 Quick Summary
Project Total Size Change
react-10k 5.7 MB 0
react-1k 826.2 KB 0
react-5k 2.7 MB 0
rome 984.2 KB 0
ui-components 2.3 MB 0

Generated by Rsdoctor GitHub Action

@github-actions

github-actions Bot commented Mar 5, 2026 •

Copy link
Copy Markdown
Contributor

📦 Binary Size-limit

Comparing 5556717 to chore(ci): eco benchmark compare base optimize (#13360) by pshu

❌ Size increased by 115.00KB from 49.01MB to 49.12MB (⬆️0.23%)

@codspeed

codspeed Bot commented Mar 5, 2026 •

Copy link
Copy Markdown
Contributor

Merging this PR will not alter performance

✅ 16 untouched benchmarks
⏩ 3 skipped benchmarks1


Comparing cursor/manifest-rsc-client-data-d493 (5556717) with feat/mf-layers (dbf3131)

Open in CodSpeed

Footnotes

  1. 3 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Mar 5, 2026 •

Copy link
Copy Markdown

Deploying rspack with  Cloudflare Pages  Cloudflare Pages

Latest commit: 5556717
Status: ✅  Deploy successful!
Preview URL: https://8f2213eb.rspack-v2.pages.dev
Branch Preview URL: https://cursor-manifest-rsc-client-d.rspack-v2.pages.dev

View logs

@ScriptedAlchemy ScriptedAlchemy changed the title Manifest RSC client data feat(mf): emit RSC metadata in federation manifests Mar 5, 2026
@github-actions github-actions Bot added the release: feature release: feature related release(mr only) label Mar 5, 2026
@ScriptedAlchemy
ScriptedAlchemy force-pushed the cursor/manifest-rsc-client-data-d493 branch from 2266fc4 to d5a3b9a Compare March 6, 2026 02:11
Capture expose layer information in emitted MF stats and manifest output, and add a manifest-layers regression case to verify layered shared and expose metadata stays correct.

Made-with: Cursor
Hydrate consume handler mappings from consumes loading data so bundler-runtime keeps layer-aware share metadata in the enhanced path. Also validate multi-entry share scopes unless enhanced mode is enabled, and emit remote external metadata alongside remote runtime records.
Keep provide shared runtime entries in their original shareScope shape and mark enhanced initializeSharingData as already updated so bundler-runtime does not rebuild downgraded shared registrations from the legacy structure.
Emit consume-shared source data for shared consumers and let the runtime module reuse it when serializing consume metadata. This keeps module-output consume entries callable so layered federation consumers can initialize sharing before resolving shared react.

Made-with: Cursor
Wait for consume share scopes to finish initializing before delegating to the bundler runtime so layered shared modules resolve consistently. Remove the temporary federation debug instrumentation that was added while tracing the runtime flow.

Made-with: Cursor
Drop the temporary discovery document now that the parity investigation is captured elsewhere.

Made-with: Cursor
Reinstate legacy share-scope validation and restore the enhanced runtime metadata paths needed for layered consume and module remote resolution.

Made-with: Cursor
Preserve layer-aware shared metadata across manifest generation, used-exports optimization, and module remote runtime wiring so layered federation outputs stay correct and covered.

Made-with: Cursor
Keep layered consume scope initialization in the enhanced runtime while preserving legacy consume version-check behavior and rust lint parity.

Made-with: Cursor
…fest-rsc-client-data-d493

# Conflicts:
#	crates/rspack_plugin_mf/src/manifest/mod.rs
#	crates/rspack_plugin_mf/src/manifest/utils.rs
@ScriptedAlchemy
ScriptedAlchemy force-pushed the feat/mf-layers branch 4 times, most recently from 3a443d9 to 7d654f7 Compare July 23, 2026 01:16

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release: feature release: feature related release(mr only)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants