Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
172 commits
Select commit Hold shift + click to select a range
74fedd5
chore(rsc-demo): runtime client ref discovery + MF manifest data
ScriptedAlchemy Nov 27, 2025
7ed1dcf
docs: add Option2Plan for MF-native actions
ScriptedAlchemy Nov 27, 2025
f9b51f0
chore: restore app2 action fallback (revert accidental removal)
ScriptedAlchemy Nov 27, 2025
0f3acfe
docs: enrich Option2 plan with runtime/manifest details
ScriptedAlchemy Nov 27, 2025
2181f26
chore: drop manual manifest merge (runtime is source of truth)
ScriptedAlchemy Nov 27, 2025
02520cd
fix(rsc-demo): export server MF container and merge remote manifest
ScriptedAlchemy Nov 27, 2025
f2b56b8
chore: enforce async-node + MF node runtime on server builds
ScriptedAlchemy Nov 27, 2025
a594dbb
fix(rsc-demo): http mf metadata and context guards
ScriptedAlchemy Nov 27, 2025
9644619
feat(rsc-demo): eager server action registration and share scope fixes
ScriptedAlchemy Dec 2, 2025
125fbf5
fix(rsc-demo): server action registry singleton and test improvements
ScriptedAlchemy Dec 2, 2025
baccd46
fix(rsc-demo): remove skips from HTTP forwarding tests
ScriptedAlchemy Dec 2, 2025
dbd2c15
fix(rsc-demo): http forwarding and test reliability improvements
ScriptedAlchemy Dec 2, 2025
b816818
Merge remote-tracking branch 'origin/main' into rsc-demo
ScriptedAlchemy Dec 2, 2025
e55c0b2
fix(rsc-demo): address CodeQL security alerts
ScriptedAlchemy Dec 2, 2025
74f73f8
fix(rsc-demo): address remaining CodeQL format string alerts
ScriptedAlchemy Dec 2, 2025
8ab0371
fix(rsc-demo): downgrade jsdom to 24.x for Node 18 compatibility
ScriptedAlchemy Dec 2, 2025
fa2ff3e
fix(rsc-demo): make timer sanitization explicit for CodeQL
ScriptedAlchemy Dec 2, 2025
38ca8e7
chore(rsc-demo): remove notes/.gitkeep
ScriptedAlchemy Dec 2, 2025
eeb2841
chore(rsc-demo): remove notes directory
ScriptedAlchemy Dec 2, 2025
2a29f94
chore(rsc-demo): remove debug plugin and fix flaky tests
ScriptedAlchemy Dec 2, 2025
6d9c0d1
fix(rsc-demo): fix SSR module resolution and test stability
ScriptedAlchemy Dec 3, 2025
f2e4218
chore: auto-include client refs for SSR and fix resolver
ScriptedAlchemy Dec 5, 2025
2de6c9b
chore(rsc-demo): preserve actual export names in SSR module map
ScriptedAlchemy Dec 5, 2025
a31a374
ci: add RSC E2E workflow for rsc-demo
ScriptedAlchemy Dec 5, 2025
76756e5
fix(rsc-demo): use dynamic paths in client-refs tests for CI
ScriptedAlchemy Dec 5, 2025
6459f6e
fix(rsc-demo): address CodeQL alerts and add missing deps
ScriptedAlchemy Dec 6, 2025
495f038
fix(rsc-demo): make SSR deterministic and e2e reliable
ScriptedAlchemy Dec 16, 2025
8459797
fix(rsc-demo): remove SSR fallbacks and fix e2e CI
ScriptedAlchemy Dec 16, 2025
807993e
docs(rsc-demo): clarify SSR resolver behavior
ScriptedAlchemy Dec 16, 2025
e1a2bd0
fix(rsc-demo): remove post-build SSR manifest patches
ScriptedAlchemy Dec 16, 2025
b4ca2bc
fix(rsc-demo): stop mutating ssr.js post-build
ScriptedAlchemy Dec 16, 2025
0d93848
fix(rsc-demo): remove global webpack require shim
ScriptedAlchemy Dec 16, 2025
e96c226
ci(rsc-demo): verify mf-manifest SSR registry
ScriptedAlchemy Dec 16, 2025
42dcf74
feat(rsc-demo): declarative manifest.rsc config replaces additionalDa…
ScriptedAlchemy Dec 17, 2025
9c5eae4
Merge branch 'main' into rsc-demo
ScriptedAlchemy Dec 17, 2025
8918c9e
docs(rsc-demo): clarify MF-native server actions as default
ScriptedAlchemy Dec 17, 2025
409482a
fix(rsc-demo): tighten action lookup and drop app2-remote alias
ScriptedAlchemy Dec 17, 2025
1962547
fix(rsc-demo): harden rscRuntimePlugin manifest fetching
ScriptedAlchemy Dec 17, 2025
c0389df
chore: regenerate schema
ScriptedAlchemy Dec 17, 2025
c14dcdc
Revert "chore: regenerate schema"
ScriptedAlchemy Dec 17, 2025
db44238
fix(rsc-demo): manifest remotes + SSR export retention
ScriptedAlchemy Dec 17, 2025
385aba8
fix(enhanced): regenerate schema to remove duplicate rsc key
ScriptedAlchemy Dec 17, 2025
1e27d30
chore(rsc-demo): tighten types + cleanup config
ScriptedAlchemy Dec 17, 2025
814cec9
test(rsc-demo): assert server-side federated RSC
ScriptedAlchemy Dec 17, 2025
2f113f4
fix(rsc-demo): include app1/app2 in build inputs
ScriptedAlchemy Dec 17, 2025
d79253e
fix(rsc-demo): fail hard if remote Button cannot load
ScriptedAlchemy Dec 17, 2025
390ac52
refactor(rsc-demo): move react-server-dom-webpack to packages root
ScriptedAlchemy Dec 17, 2025
798bb54
fix(rsc-demo): resolve react-server-dom-webpack loaders via exports
ScriptedAlchemy Dec 17, 2025
481ce9e
refactor(rsc-demo): reuse AutoIncludeClientComponentsPlugin
ScriptedAlchemy Dec 17, 2025
4e65cdd
docs: document RSC + Module Federation architecture
ScriptedAlchemy Dec 17, 2025
cbf505e
docs: add vendored RSDW diff summary
ScriptedAlchemy Dec 17, 2025
11302e2
docs: add vendored react-server-dom-webpack diffs
ScriptedAlchemy Dec 18, 2025
a985adf
docs: keep functional RSDW diff artifact
ScriptedAlchemy Dec 18, 2025
c28ac83
docs: link to RSC demo architecture
ScriptedAlchemy Dec 18, 2025
14c20c1
test(rsc-demo): offline federation smoke renders remote RSC
ScriptedAlchemy Dec 18, 2025
5af1efd
chore: merge main and resolve lockfile conflict
ScriptedAlchemy Dec 18, 2025
72ffed4
docs(rsc-demo): consolidate RSC+MF implementation guide
ScriptedAlchemy Dec 18, 2025
11d7775
chore(rsc-demo): remove redundant demo legal/config files
ScriptedAlchemy Dec 18, 2025
5eedfb9
style(rsc-demo): format code
ScriptedAlchemy Dec 18, 2025
c553d8a
test(rsc-demo): make build config guard whitespace-safe
ScriptedAlchemy Dec 18, 2025
78ec94a
chore(rsc-demo): replace vendored RSDW with pnpm patch
ScriptedAlchemy Dec 18, 2025
3f1bce0
fix(rsc-demo): fail fast on SSR + doc accuracy
ScriptedAlchemy Dec 19, 2025
0d897f0
chore(rsc-demo): align app2 build config layout
ScriptedAlchemy Dec 19, 2025
c66403f
chore(rsc-demo): remove unused loader options
ScriptedAlchemy Dec 19, 2025
3547545
feat(rsc-demo): auto exposeTypes + bidirectional federation
ScriptedAlchemy Dec 19, 2025
5ea8739
docs: update RSC+MF architecture notes
ScriptedAlchemy Dec 19, 2025
f6b253a
refactor(rsc-demo): manifest-driven remote action bootstrap
ScriptedAlchemy Dec 19, 2025
bb0e81f
refactor(rsc-demo): move shared-components to packages
ScriptedAlchemy Dec 19, 2025
33f460a
chore: merge main and resolve lockfile conflict
ScriptedAlchemy Dec 19, 2025
bd71208
refactor(rsc-demo): consolidate shared demo package
ScriptedAlchemy Dec 20, 2025
1bee457
chore(rsc-demo): format HostBadge
ScriptedAlchemy Dec 20, 2025
b5a64ac
refactor(rsc-demo): auto-register server actions
ScriptedAlchemy Dec 20, 2025
a225cc2
fix(rsc-demo): harden server action discovery
ScriptedAlchemy Dec 22, 2025
c708317
chore: merge main into rsc-demo
ScriptedAlchemy Dec 22, 2025
ea0e9cc
fix(rsc-demo): make MF-native actions deterministic
ScriptedAlchemy Dec 23, 2025
eaa2d4f
fix(rsc-demo): add workflow perms + harden action forwarding
ScriptedAlchemy Dec 23, 2025
31ea66c
chore: retrigger CI
ScriptedAlchemy Dec 23, 2025
84d5e1f
fix(rsc-demo): make MF-native action bootstrap manifest-driven
ScriptedAlchemy Dec 23, 2025
9226307
fix(rsc-demo): remove excessive permissions from e2e-rsc workflow
ScriptedAlchemy Dec 23, 2025
9d905ad
docs(rsc-demo): align SSR worker docs with mf-manifest.ssr.json
ScriptedAlchemy Dec 23, 2025
ce19b5b
fix(rsc-demo): make SSR manifests deterministic
ScriptedAlchemy Dec 23, 2025
9cd608f
fix(manifest): avoid disk polling for client manifest
ScriptedAlchemy Dec 23, 2025
556a941
refactor(rsc-demo): split app-shared runtime/webpack
ScriptedAlchemy Dec 25, 2025
5d0976a
refactor(rsc-demo): package app-shared
ScriptedAlchemy Dec 25, 2025
f205e72
fix(rsc-demo): remove disk fallbacks and tighten workspace allowlist
ScriptedAlchemy Dec 25, 2025
adb97e6
chore(rsc-demo): move app-shared to packages
ScriptedAlchemy Dec 25, 2025
a025a5b
chore(rsc-demo): align nx targets and dependencies
ScriptedAlchemy Dec 30, 2025
386a47c
Merge remote-tracking branch 'origin/main' into rsc-demo
ScriptedAlchemy Dec 30, 2025
0479e19
refactor(rsc-demo): centralize framework entrypoints
ScriptedAlchemy Dec 31, 2025
731c33e
feat(rsc-demo): harden MF RSC integration
ScriptedAlchemy Jan 4, 2026
e55f74c
docs: update RSC MF architecture diagram
ScriptedAlchemy Jan 4, 2026
d9d7586
refactor(rsc-demo): relocate shared packages and rename rsc tooling
ScriptedAlchemy Jan 4, 2026
2826d4e
chore(rsc-demo): stabilize rsc/mf build
ScriptedAlchemy Jan 5, 2026
7c3fd91
fix(rsbuild-plugin): remove enhanced type dependency
ScriptedAlchemy Jan 5, 2026
10c2bac
fix(rsc): correct export type paths
ScriptedAlchemy Jan 6, 2026
085b8aa
fix(rsc): stabilize runtime config merge and tests
ScriptedAlchemy Jan 6, 2026
e34707c
test(rsc-demo): align MF-native action indexing assertions
ScriptedAlchemy Jan 6, 2026
ef7ecbf
docs: update RSC MF architecture guide
ScriptedAlchemy Jan 6, 2026
d0d5111
refactor(rsc-demo): always load bidirectional host badge
ScriptedAlchemy Jan 7, 2026
00557df
refactor(rsc-demo): statically import host badge
ScriptedAlchemy Jan 7, 2026
b4d5fbd
refactor(rsc-demo): use static federated imports
ScriptedAlchemy Jan 7, 2026
32dfdee
feat(rsc-demo-patches): make RSDW layer-aware
ScriptedAlchemy Jan 9, 2026
b8e01a2
chore: merge origin/main
ScriptedAlchemy Jan 10, 2026
0e1b347
feat: vendor rsdw and update rsc demo
ScriptedAlchemy Jan 10, 2026
236f96b
update (#4373)
ScriptedAlchemy Feb 4, 2026
8172cc9
merge main into rsc-demo
ScriptedAlchemy Feb 4, 2026
57a6176
update
ScriptedAlchemy Feb 4, 2026
870106f
update
ScriptedAlchemy Feb 4, 2026
e6f1763
Merge branch 'main' into rsc-demo
ScriptedAlchemy Feb 4, 2026
69d7280
ci(module-federation): fix e2e-metro checkout depth
ScriptedAlchemy Feb 4, 2026
d761f61
chore(module-federation): restore fixture package.jsons
ScriptedAlchemy Feb 4, 2026
9ace15e
chore(module-federation): guard lint-fix from node_modules
ScriptedAlchemy Feb 4, 2026
8e3f641
fix(enhanced): stabilize tree-shaking fixtures
ScriptedAlchemy Feb 4, 2026
d1c9ffb
fix(enhanced): ensure tree-shaking fixtures include node_modules
ScriptedAlchemy Feb 4, 2026
5da78dd
Merge remote-tracking branch 'origin/main' into rsc-demo
ScriptedAlchemy Feb 4, 2026
10bdbf2
fix(enhanced): alias tree-shaking fixtures
ScriptedAlchemy Feb 4, 2026
2ab0d79
fix(enhanced): stabilize tree-shaking fixture resolution
ScriptedAlchemy Feb 4, 2026
10fef97
ci(rsc-demo): use node 20 and pnpm 10
ScriptedAlchemy Feb 4, 2026
36f709e
fix(rsc-demo): stabilize react jsx runtime resolution
ScriptedAlchemy Feb 4, 2026
1d8434a
fix(core): stabilize ci-is-affected base/head
ScriptedAlchemy Feb 4, 2026
e02b8d3
fix(rsc-demo): avoid client chunk collisions
ScriptedAlchemy Feb 4, 2026
45a214e
fix(rsc): harden demo + server actions
ScriptedAlchemy Feb 4, 2026
3357e65
fix: ssr manifest availability + hoist cleanup; harden CI scripts
ScriptedAlchemy Feb 4, 2026
1a71b06
fix: address review findings
ScriptedAlchemy Feb 4, 2026
8dc96cf
fix(rsc-demo): stabilize e2e gating and manifests
ScriptedAlchemy Feb 4, 2026
4c1a136
docs(rsc-demo): refresh RSC MF architecture
ScriptedAlchemy Feb 4, 2026
dc86543
fix(rsc): ensure MF server actions register
ScriptedAlchemy Feb 5, 2026
af015e8
docs(rsc-demo): clarify manifest-first remotes
ScriptedAlchemy Feb 5, 2026
8d41a89
Merge remote-tracking branch 'origin/main' into rsc-demo
ScriptedAlchemy Feb 6, 2026
a87db08
fix(rsc): align runtime test metadata and actionlint runner
ScriptedAlchemy Feb 6, 2026
936a477
Merge remote-tracking branch 'origin/main' into rsc-demo
ScriptedAlchemy Feb 7, 2026
ff25816
fix(core): use direct actionlint binary install instead of raven-actions
ScriptedAlchemy Feb 7, 2026
8f4b2d0
Merge remote-tracking branch 'origin/main' into HEAD
ScriptedAlchemy Feb 8, 2026
1142397
Merge branch 'main' into rsc-demo
ScriptedAlchemy Feb 9, 2026
edf5202
Merge branch 'rsc-demo' of github.com:module-federation/core into rsc…
ScriptedAlchemy Feb 9, 2026
0409f3b
fix(rsc): omit forwardedId from getIndexedRemoteAction for unprefixed…
ScriptedAlchemy Feb 9, 2026
9d989e2
Merge remote-tracking branch 'origin/main' into rsc-demo
ScriptedAlchemy Feb 9, 2026
118f0a5
fix(module-federation): align rsc runtime test expectations
ScriptedAlchemy Feb 9, 2026
9f05748
fix(rsc-demo): stabilize federated action mode assertion
ScriptedAlchemy Feb 10, 2026
9b0965d
Merge remote-tracking branch 'origin/main' into rsc-demo
ScriptedAlchemy Feb 12, 2026
0fc7e10
chore(core): add changeset coverage for pr #4247
ScriptedAlchemy Feb 12, 2026
114faf3
chore(rsc): contextualize changeset coverage for rsc demo branch
ScriptedAlchemy Feb 12, 2026
f8917bf
chore(rsc-demo): merge origin/main
ScriptedAlchemy Feb 14, 2026
6f00c32
Merge branch 'main' into rsc-demo
ScriptedAlchemy Feb 14, 2026
0cc974d
Merge remote-tracking branch 'origin/main' into rsc-demo
ScriptedAlchemy Feb 16, 2026
b83c24e
Merge origin/main into rsc-demo
ScriptedAlchemy Feb 16, 2026
554e145
Merge origin/main into rsc-demo
ScriptedAlchemy Feb 19, 2026
7a30374
Merge origin/main into rsc-demo
ScriptedAlchemy Feb 19, 2026
4a3e6aa
fix(enhanced): align rstest args and harden harness execution
ScriptedAlchemy Feb 24, 2026
86dce02
Merge remote-tracking branch 'origin/main' into rsc-demo
ScriptedAlchemy Feb 24, 2026
0995c69
fix(dts-plugin): align workspace entrypoints and RawSource typing
ScriptedAlchemy Feb 24, 2026
8b6a898
Merge branch 'main' into rsc-demo
ScriptedAlchemy Feb 25, 2026
30a485f
fix(core): sync lockfile for frozen install checks
ScriptedAlchemy Feb 25, 2026
b7dc0cf
fix(core): add publint wiring to rsc rslib config
ScriptedAlchemy Feb 25, 2026
6b68602
fix(sdk): align package.json entrypoints with actual rollup build out…
ScriptedAlchemy Feb 25, 2026
0456232
fix(enhanced): restore vm wrapper for config-case execution
ScriptedAlchemy Feb 25, 2026
1dfc468
Merge remote-tracking branch 'origin/main' into rsc-demo
ScriptedAlchemy Feb 25, 2026
5fb54f7
Merge origin/main into rsc-demo
ScriptedAlchemy Feb 26, 2026
70bdbe3
Merge branch 'main' into rsc-demo
ScriptedAlchemy Feb 26, 2026
dd1e665
Merge branch 'main' into rsc-demo
ScriptedAlchemy Feb 27, 2026
568e1d2
fix(ci): remove duplicate argv parsing in ci-is-affected
ScriptedAlchemy Feb 27, 2026
d5a9394
fix(enhanced): allow rsc field in manifest schema
ScriptedAlchemy Feb 27, 2026
01febea
fix: address review feedback for metro and rsbuild
ScriptedAlchemy Feb 27, 2026
ff6c766
Merge remote-tracking branch 'origin/main' into rsc-demo
ScriptedAlchemy Feb 27, 2026
88ebdec
chore: refresh pnpm lockfile after install
ScriptedAlchemy Feb 27, 2026
6cea43e
revert: restore ci affected script and lint-fix workflow
ScriptedAlchemy Feb 27, 2026
5ed1923
fix(rsc): stabilize manifest coordination across compilers
ScriptedAlchemy Feb 27, 2026
6be32a1
Merge main into rsc-demo
ScriptedAlchemy Feb 28, 2026
c128fd8
Merge origin/main into rsc-demo
ScriptedAlchemy Feb 28, 2026
a0cf8c0
Merge branch 'main' into rsc-demo
ScriptedAlchemy Mar 2, 2026
d3d58a1
Merge origin/main into rsc-demo
ScriptedAlchemy Mar 3, 2026
2d6719b
Merge branch 'main' into rsc-demo
ScriptedAlchemy Mar 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .changeset/rsc-demo-integration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
'@module-federation/enhanced': patch
'@module-federation/manifest': patch
'@module-federation/metro': patch
'@module-federation/node': patch
'@module-federation/react-server-dom-webpack': patch
'@module-federation/rsbuild-plugin': patch
'@module-federation/rsc': patch
'@module-federation/runtime-core': patch
'@module-federation/sdk': patch
---

Add RSC demo support and related runtime/build integrations, including RSC package wiring and react-server-dom-webpack compatibility updates.
5 changes: 5 additions & 0 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,11 @@ jobs:
uses: ./.github/workflows/e2e-router.yml
secrets: inherit

e2e-rsc:
needs: checkout-install
uses: ./.github/workflows/e2e-rsc.yml
secrets: inherit

e2e-metro:
needs:
- checkout-install
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/e2e-manifest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,9 @@ jobs:
fi

- name: E2E Test for Manifest Demo Development
if: steps.check-ci.outputs.run-e2e == 'true'
if: steps.check-ci.outputs.affected == 'true'
run: node tools/scripts/run-manifest-e2e.mjs --mode=dev

- name: E2E Test for Manifest Demo Production
if: steps.check-ci.outputs.run-e2e == 'true'
if: steps.check-ci.outputs.affected == 'true'
run: node tools/scripts/run-manifest-e2e.mjs --mode=prod
2 changes: 1 addition & 1 deletion .github/workflows/e2e-modern-ssr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ jobs:
fi

- name: E2E Test for Modern.js SSR
if: steps.check-ci.outputs.run-e2e == 'true'
if: steps.check-ci.outputs.affected == 'true'
uses: nick-fields/retry@v3
with:
max_attempts: 2
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/e2e-modern.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ jobs:
fi

- name: E2E Test for ModernJS
if: steps.check-ci.outputs.run-e2e == 'true'
if: steps.check-ci.outputs.affected == 'true'
run: npx kill-port --port 4001 && npx nx run-many --target=test:e2e --projects=modernjs --parallel=1 && npx kill-port --port 4001

- name: Kill ports
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/e2e-next-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,5 +72,5 @@ jobs:
fi

- name: E2E Test for Next.js Dev
if: steps.check-ci.outputs.run-e2e == 'true'
if: steps.check-ci.outputs.affected == 'true'
run: node tools/scripts/run-next-e2e.mjs --mode=dev
2 changes: 1 addition & 1 deletion .github/workflows/e2e-next-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,5 +69,5 @@ jobs:
fi

- name: E2E Test for Next.js Prod
if: steps.check-ci.outputs.run-e2e == 'true'
if: steps.check-ci.outputs.affected == 'true'
run: node tools/scripts/run-next-e2e.mjs --mode=prod
2 changes: 1 addition & 1 deletion .github/workflows/e2e-node.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,5 +70,5 @@ jobs:
fi

- name: E2E Node Federation
if: steps.check-ci.outputs.run-e2e == 'true'
if: steps.check-ci.outputs.affected == 'true'
run: npx nx run-many --target=serve --projects=node-local-remote,node-remote,node-dynamic-remote-new-version,node-dynamic-remote --parallel=10 & echo "done" && sleep 25 && npx nx run-many --target=serve --projects=node-host & sleep 5 && npx wait-on tcp:3333 && npx nx run node-host-e2e:test:e2e
2 changes: 1 addition & 1 deletion .github/workflows/e2e-router.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,5 +70,5 @@ jobs:
fi

- name: E2E Test for Runtime Demo
if: steps.check-ci.outputs.run-e2e == 'true'
if: steps.check-ci.outputs.affected == 'true'
run: node tools/scripts/run-router-e2e.mjs --mode=dev
87 changes: 87 additions & 0 deletions .github/workflows/e2e-rsc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# .github/workflows/e2e-rsc.yml
name: E2E RSC Demo

on:
workflow_call:

permissions:
contents: read

jobs:
e2e-rsc:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout Repository
uses: actions/checkout@v5
with:
fetch-depth: 0

- name: Cache Tool Downloads
uses: actions/cache@v4
with:
path: ~/.cache
key: ${{ runner.os }}-toolcache-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-toolcache-

- name: Set Playwright cache status
run: |
if [ -d "$HOME/.cache/ms-playwright" ] || [ -d "$HOME/.cache/Cypress" ]; then
echo "PLAYWRIGHT_CACHE_HIT=true" >> "$GITHUB_ENV"
else
echo "PLAYWRIGHT_CACHE_HIT=false" >> "$GITHUB_ENV"
fi

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: '10.28.0'

- name: Setup Node.js 20
uses: actions/setup-node@v6
with:
node-version: '20'
cache: 'pnpm'

- name: Set Nx SHA
uses: nrwl/nx-set-shas@v3

- name: Set SKIP_DEVTOOLS_POSTINSTALL environment variable
run: echo "SKIP_DEVTOOLS_POSTINSTALL=true" >> "$GITHUB_ENV"

- name: Install Dependencies
run: pnpm install

- name: Install Playwright Browsers
run: pnpm -C apps/rsc-demo/e2e exec playwright install --with-deps chromium

- name: Run Build for All Packages
run: npx nx run-many --targets=build --projects=tag:type:pkg

- name: Build RSC Demo
run: npx nx run rsc-demo:build

- name: Verify SSR Registry Source (MF Manifest)
run: |
echo "Checking mf-manifest.ssr.json additionalData.rsc.clientComponents..."
node -e "const mf=require('./apps/rsc-demo/app1/build/mf-manifest.ssr.json'); const cc=mf?.additionalData?.rsc?.clientComponents||mf?.rsc?.clientComponents||{}; if(!Object.keys(cc).length){console.error('ERROR: app1 mf-manifest.ssr.json missing rsc.clientComponents'); process.exit(1)}"
node -e "const mf=require('./apps/rsc-demo/app2/build/mf-manifest.ssr.json'); const cc=mf?.additionalData?.rsc?.clientComponents||mf?.rsc?.clientComponents||{}; if(!Object.keys(cc).length){console.error('ERROR: app2 mf-manifest.ssr.json missing rsc.clientComponents'); process.exit(1)}"
echo "SSR registry verified via mf-manifest.ssr.json in both apps"

- name: Verify Manifest Files
run: |
echo "Checking manifest files..."
test -f apps/rsc-demo/app1/build/react-client-manifest.json || (echo "ERROR: react-client-manifest.json missing in app1" && exit 1)
test -f apps/rsc-demo/app1/build/react-ssr-manifest.json || (echo "ERROR: react-ssr-manifest.json missing in app1" && exit 1)
test -f apps/rsc-demo/app1/build/react-server-actions-manifest.json || (echo "ERROR: react-server-actions-manifest.json missing in app1" && exit 1)
test -f apps/rsc-demo/app2/build/react-client-manifest.json || (echo "ERROR: react-client-manifest.json missing in app2" && exit 1)
test -f apps/rsc-demo/app2/build/react-ssr-manifest.json || (echo "ERROR: react-ssr-manifest.json missing in app2" && exit 1)
test -f apps/rsc-demo/app2/build/react-server-actions-manifest.json || (echo "ERROR: react-server-actions-manifest.json missing in app2" && exit 1)
echo "All manifest files present"

- name: Run RSC Tests (Node)
run: npx nx run rsc-demo:test:rsc

- name: Run RSC E2E Tests (Playwright)
run: npx nx run rsc-demo:test:e2e
2 changes: 1 addition & 1 deletion .github/workflows/e2e-runtime.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,5 +70,5 @@ jobs:
fi

- name: E2E Test for Runtime Demo
if: steps.check-ci.outputs.run-e2e == 'true'
if: steps.check-ci.outputs.affected == 'true'
run: npx kill-port --port 3005,3006,3007 && pnpm run app:runtime:dev & echo "done" && sleep 20 && npx nx run-many --target=test:e2e --projects=3005-runtime-host --parallel=1 && lsof -ti tcp:3005,3006,3007 | xargs kill
4 changes: 2 additions & 2 deletions .github/workflows/e2e-shared-tree-shaking.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,9 @@ jobs:
fi

- name: E2E Test for Shared Tree Shaking Demo - Mode runtime-infer
if: steps.check-ci.outputs.run-e2e == 'true'
if: steps.check-ci.outputs.affected == 'true'
run: npx kill-port --port 3001,3002 && nx run shared-tree-shaking-no-server-host:test:e2e && lsof -ti tcp:3001,3002 | xargs kill

- name: E2E Test for Shared Tree Shaking Demo - Mode server-calc
if: steps.check-ci.outputs.run-e2e == 'true'
if: steps.check-ci.outputs.affected == 'true'
run: npx kill-port --port 3001,3002,3003 && nx run shared-tree-shaking-with-server-host:test:e2e && lsof -ti tcp:3001,3002,3003 | xargs kill
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,9 @@ packages/enhanced/.unpack-cache/**
packages/enhanced/.codex/**
packages/enhanced/generated/**
**/.codex/
.pnpm-store/

# apps/rsc-demo build-generated bootstrap (server actions)
apps/rsc-demo/**/build/
apps/rsc-demo/e2e/test-results/

.pnpm-store/
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ You can consider the module federation capabilities provided by this repository

To get started with Module Federation, see the [Quick Start](https://module-federation.io/guide/start/quick-start.html).

## 🧪 React Server Components (RSC) Demo

This repo includes an experimental RSC + Module Federation reference implementation:
- Demo app: `apps/rsc-demo/`
- Architecture notes (with Mermaid diagrams): `RSC_MF_ARCHITECTURE.md`

## 🧑‍💻 Community

Come and chat with us on [Discussions](https://github.com/module-federation/universe/discussions) or [Discord](https://discord.gg/n69NnT3ACV)! The Module federation team and users are active there, and we're always looking for contributions.
Expand Down
Loading
Loading