+ Hero fixture
+ Rsbuild, Module Federation, and Zephyr Cloud are connected.
+
+ );
+}
diff --git a/module-federation/react-rsbuild-monorepo/apps/hero/src/index.ts b/module-federation/react-rsbuild-monorepo/apps/hero/src/index.ts
new file mode 100644
index 00000000..942f4b1b
--- /dev/null
+++ b/module-federation/react-rsbuild-monorepo/apps/hero/src/index.ts
@@ -0,0 +1 @@
+export { default as Hero } from './Hero';
diff --git a/module-federation/react-rsbuild-monorepo/apps/hero/tsconfig.json b/module-federation/react-rsbuild-monorepo/apps/hero/tsconfig.json
new file mode 100644
index 00000000..33e603b9
--- /dev/null
+++ b/module-federation/react-rsbuild-monorepo/apps/hero/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "rootDir": "./src"
+ },
+ "include": ["src"]
+}
diff --git a/module-federation/react-rsbuild-monorepo/apps/host/package.json b/module-federation/react-rsbuild-monorepo/apps/host/package.json
new file mode 100644
index 00000000..2cb2ce9a
--- /dev/null
+++ b/module-federation/react-rsbuild-monorepo/apps/host/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "rsbuild-mf-monorepo-host",
+ "version": "1.0.0",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "build": "rsbuild build",
+ "dev": "rsbuild dev",
+ "typecheck": "tsc --noEmit"
+ },
+ "dependencies": {
+ "react": "19.2.7",
+ "react-dom": "19.2.7"
+ },
+ "devDependencies": {
+ "@module-federation/rsbuild-plugin": "2.8.0",
+ "@rsbuild/core": "2.1.8",
+ "@rsbuild/plugin-react": "2.1.0",
+ "@types/node": "24.5.2",
+ "@types/react": "19.2.14",
+ "@types/react-dom": "19.2.3",
+ "typescript": "6.0.3",
+ "zephyr-agent": "1.2.0",
+ "zephyr-rsbuild-plugin": "1.2.0"
+ },
+ "zephyr:dependencies": {
+ "header": "rsbuild-mf-monorepo-header@workspace:*",
+ "hero": "rsbuild-mf-monorepo-hero@workspace:*"
+ }
+}
diff --git a/module-federation/react-rsbuild-monorepo/apps/host/rsbuild.config.ts b/module-federation/react-rsbuild-monorepo/apps/host/rsbuild.config.ts
new file mode 100644
index 00000000..2bd07239
--- /dev/null
+++ b/module-federation/react-rsbuild-monorepo/apps/host/rsbuild.config.ts
@@ -0,0 +1,42 @@
+import { pluginModuleFederation } from '@module-federation/rsbuild-plugin';
+import { defineConfig } from '@rsbuild/core';
+import { pluginReact } from '@rsbuild/plugin-react';
+import { withZephyr } from 'zephyr-rsbuild-plugin';
+
+const exampleOffline = process.env['ZEPHYR_EXAMPLE_OFFLINE'] === '1';
+
+export default defineConfig({
+ source: {
+ entry: {
+ index: './src/index.ts',
+ },
+ },
+ server: {
+ port: 3000,
+ },
+ output: {
+ assetPrefix: 'auto',
+ },
+ plugins: [
+ pluginReact(),
+ pluginModuleFederation({
+ name: 'host',
+ filename: 'remoteEntry.js',
+ remotes: {
+ header: 'header@http://localhost:3001/remoteEntry.js',
+ hero: 'hero@http://localhost:3002/remoteEntry.js',
+ },
+ shared: {
+ react: {
+ singleton: true,
+ requiredVersion: '19.2.7',
+ },
+ 'react-dom': {
+ singleton: true,
+ requiredVersion: '19.2.7',
+ },
+ },
+ }),
+ ...(!exampleOffline ? [withZephyr()] : []),
+ ],
+});
diff --git a/module-federation/react-rsbuild-monorepo/apps/host/src/bootstrap.tsx b/module-federation/react-rsbuild-monorepo/apps/host/src/bootstrap.tsx
new file mode 100644
index 00000000..6226a56c
--- /dev/null
+++ b/module-federation/react-rsbuild-monorepo/apps/host/src/bootstrap.tsx
@@ -0,0 +1,17 @@
+import Header from 'header/Header';
+import Hero from 'hero/Hero';
+import { StrictMode } from 'react';
+import { createRoot } from 'react-dom/client';
+
+const rootElement = document.getElementById('root');
+
+if (!rootElement) {
+ throw new Error('Expected Rsbuild to provide #root');
+}
+
+createRoot(rootElement).render(
+