diff --git a/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/package.json b/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/package.json
new file mode 100644
index 00000000..a2ad61c6
--- /dev/null
+++ b/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/package.json
@@ -0,0 +1,8 @@
+{
+ "name": "xyd-fixture-rt-9-vite-lib-react-types-resilience",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "build": "vite build"
+ }
+}
diff --git a/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/src/CardWrapper.tsx b/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/src/CardWrapper.tsx
new file mode 100644
index 00000000..5bade1da
--- /dev/null
+++ b/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/src/CardWrapper.tsx
@@ -0,0 +1,31 @@
+import React from "react";
+
+interface CardWrapperProps {
+ /** Card title */
+ title: string;
+
+ /** Card content — React types that typia cannot resolve */
+ children: React.ReactNode;
+
+ /** Optional icon element */
+ icon?: React.ReactElement;
+
+ /** Optional footer element */
+ footer?: React.ReactNode;
+
+ /** Whether the card has a border */
+ bordered?: boolean;
+}
+
+export function CardWrapper({ title, children, icon, footer, bordered }: CardWrapperProps) {
+ return (
+
+
+ {icon && {icon}}
+
{title}
+
+
{children}
+ {footer &&
{footer}
}
+
+ );
+}
diff --git a/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/src/StatusBadge.tsx b/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/src/StatusBadge.tsx
new file mode 100644
index 00000000..2ec7f1d4
--- /dev/null
+++ b/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/src/StatusBadge.tsx
@@ -0,0 +1,21 @@
+interface StatusBadgeProps {
+ /** Current status label */
+ label: string;
+
+ /** Visual variant */
+ variant: "success" | "warning" | "error" | "info";
+
+ /** Size of the badge */
+ size?: "small" | "medium" | "large";
+
+ /** Whether the badge should pulse */
+ animated?: boolean;
+}
+
+export function StatusBadge({ label, variant, size = "medium", animated }: StatusBadgeProps) {
+ return (
+
+ {label}
+
+ );
+}
diff --git a/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/src/index.ts b/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/src/index.ts
new file mode 100644
index 00000000..448dbaeb
--- /dev/null
+++ b/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/src/index.ts
@@ -0,0 +1,2 @@
+export { StatusBadge } from "./StatusBadge";
+export { CardWrapper } from "./CardWrapper";
diff --git a/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/tsconfig.json b/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/tsconfig.json
new file mode 100644
index 00000000..9f8bc05b
--- /dev/null
+++ b/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "compilerOptions": {
+ "outDir": "./dist",
+ "jsx": "react-jsx",
+ "skipLibCheck": true,
+ "module": "ESNext",
+ "moduleResolution": "bundler",
+ "target": "ES2020",
+ "strict": true
+ },
+ "include": ["src/**/*.ts", "src/**/*.tsx"]
+}
diff --git a/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/vite.config.ts b/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/vite.config.ts
new file mode 100644
index 00000000..a683fe16
--- /dev/null
+++ b/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/input/vite.config.ts
@@ -0,0 +1,21 @@
+import {defineConfig} from 'vite';
+import react from '@vitejs/plugin-react';
+import {xydSourceReactRuntime} from '@xyd-js/source-react-runtime';
+
+export default defineConfig({
+ plugins: [
+ xydSourceReactRuntime(),
+ react(),
+ ],
+ build: {
+ lib: {
+ entry: 'src/index.ts',
+ formats: ['es'],
+ fileName: 'index',
+ },
+ rollupOptions: {
+ external: ['react', 'react/jsx-runtime', 'react/jsx-dev-runtime', 'react-dom'],
+ },
+ minify: false,
+ },
+});
diff --git a/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/output.js b/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/output.js
new file mode 100644
index 00000000..de11d6f6
--- /dev/null
+++ b/packages/xyd-source-react-runtime/__fixtures__/-2.vite-lib.react-types-resilience/output.js
@@ -0,0 +1,15 @@
+// === index.js ===
+import { jsx, jsxs } from "react/jsx-runtime";
+function StatusBadge({ label, variant, size = "medium", animated }) {
+ return jsx("span", { className: `badge badge-${variant} badge-${size} ${animated ? "pulse" : ""}`, children: label });
+}
+StatusBadge.__xydUniform = JSON.parse('{"title":"StatusBadge","canonical":"","description":"","definitions":[{"title":"Props","properties":[{"name":"label","type":"string","description":"Current status label","meta":[{"name":"required","value":"true"}]},{"name":"variant","type":"$xor","description":"Visual variant","properties":[{"name":"variant","type":"object","description":"","meta":[{"name":"required","value":"true"}]},{"name":"variant","type":"object","description":"","meta":[{"name":"required","value":"true"}]},{"name":"variant","type":"object","description":"","meta":[{"name":"required","value":"true"}]},{"name":"variant","type":"object","description":"","meta":[{"name":"required","value":"true"}]}],"meta":[{"name":"required","value":"true"}]},{"name":"size","type":"$xor","description":"Size of the badge","properties":[{"name":"size","type":"object","description":"","meta":[]},{"name":"size","type":"object","description":"","meta":[]},{"name":"size","type":"object","description":"","meta":[]}],"meta":[]},{"name":"animated","type":"boolean","description":"Whether the badge should pulse","meta":[]}],"meta":[{"name":"type","value":"parameters"}]}],"examples":{"groups":[]}}');
+function CardWrapper({ title, children, icon, footer, bordered }) {
+ return jsxs("div", { className: `card ${bordered ? "bordered" : ""}`, children: [jsxs("div", { className: "card-header", children: [icon && jsx("span", { className: "card-icon", children: icon }), jsx("h3", { children: title })] }), jsx("div", { className: "card-body", children }), footer && jsx("div", { className: "card-footer", children: footer })] });
+}
+CardWrapper.__xydUniform = JSON.parse('{"title":"CardWrapper","canonical":"","description":"","definitions":[{"title":"Props","properties":[{"name":"title","type":"string","description":"Card title","meta":[{"name":"required","value":"true"}]},{"name":"children","type":"ReactNode","description":"Card content — React types that typia cannot resolve","meta":[{"name":"required","value":"true"}]},{"name":"icon","type":"ReactElement> | undefined","description":"Optional icon element","meta":[]},{"name":"footer","type":"ReactNode","description":"Optional footer element","meta":[]},{"name":"bordered","type":"boolean","description":"Whether the card has a border","meta":[]}],"meta":[{"name":"type","value":"parameters"}]}],"examples":{"groups":[]}}');
+export {
+ CardWrapper,
+ StatusBadge
+};
+
diff --git a/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/index.html b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/index.html
new file mode 100644
index 00000000..fd01349d
--- /dev/null
+++ b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+ Main App
+
+
+
+
+
+
diff --git a/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/package.json b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/package.json
new file mode 100644
index 00000000..a9c7b371
--- /dev/null
+++ b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/package.json
@@ -0,0 +1,8 @@
+{
+ "name": "xyd-fixture-rt-neg3-vite-app-iframe-multi-entry",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "build": "vite build"
+ }
+}
diff --git a/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/sample-app.html b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/sample-app.html
new file mode 100644
index 00000000..af385a83
--- /dev/null
+++ b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/sample-app.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/src/main.tsx b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/src/main.tsx
new file mode 100644
index 00000000..51c6f446
--- /dev/null
+++ b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/src/main.tsx
@@ -0,0 +1,38 @@
+import { createRoot } from "react-dom/client";
+
+interface NavBarProps {
+ /** Application title */
+ title: string;
+ /** Navigation links */
+ links: string[];
+ /** Whether to use dark theme */
+ dark?: boolean;
+}
+
+export function NavBar({ title, links, dark }: NavBarProps) {
+ return (
+
+ );
+}
+
+function App() {
+ return (
+
+
+
+
+ );
+}
+
+const root = createRoot(document.getElementById("root")!);
+root.render();
diff --git a/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/src/sample-app-entry.ts b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/src/sample-app-entry.ts
new file mode 100644
index 00000000..bbf2d1a0
--- /dev/null
+++ b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/src/sample-app-entry.ts
@@ -0,0 +1,7 @@
+import("./sample-app").then(async ({ SampleApp }) => {
+ const React = await import("react");
+ const { createRoot } = await import("react-dom/client");
+
+ const root = createRoot(document.getElementById("root")!);
+ root.render(React.createElement(SampleApp));
+});
diff --git a/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/src/sample-app.tsx b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/src/sample-app.tsx
new file mode 100644
index 00000000..40e647ae
--- /dev/null
+++ b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/src/sample-app.tsx
@@ -0,0 +1,105 @@
+import { createContext, useContext, useState } from "react";
+
+// --- Types ---
+
+interface ThemeContextValue {
+ mode: "light" | "dark";
+ setMode: (mode: "light" | "dark") => void;
+}
+
+const ThemeContext = createContext(null);
+
+// --- Provider with React.ReactNode children ---
+
+function ThemeProvider({ children }: { children: React.ReactNode }) {
+ const [mode, setMode] = useState<"light" | "dark">("light");
+ return (
+
+ {children}
+
+ );
+}
+
+// --- Component with mixed props (simple + React types) ---
+
+interface User {
+ name: string;
+ email: string;
+ id: number;
+ joinedAt: Date;
+}
+
+interface UserCardProps {
+ user: User;
+ role: "admin" | "editor" | "viewer";
+ permissions: string[];
+ onEdit: (id: number) => void;
+ tags: Map;
+ statusIndicator: React.ReactElement;
+ actionBar?: React.ReactNode;
+}
+
+function UserCard({ user, role, permissions, onEdit, tags, statusIndicator, actionBar }: UserCardProps) {
+ const [expanded, setExpanded] = useState(false);
+ const theme = useContext(ThemeContext);
+
+ return (
+
+
{user.name} ({role})
+
{user.email}
+
{permissions.join(", ")}
+
{statusIndicator}
+ {actionBar}
+
+ {expanded && (
+
+
ID: {user.id}
+
+
+ )}
+
+ );
+}
+
+// --- Simple component (no React types) ---
+
+interface TodoItemProps {
+ id: number;
+ title: string;
+ completed: boolean;
+ priority: "low" | "medium" | "high";
+ onToggle: (id: number) => void;
+}
+
+function TodoItem({ id, title, completed, priority, onToggle }: TodoItemProps) {
+ return (
+
+ onToggle(id)} />
+ {title}
+ ({priority})
+
+ );
+}
+
+// --- Main sample app ---
+
+function SampleApp() {
+ return (
+
+ Sample App (iframe)
+ console.log("edit", id)}
+ tags={new Map([["verified", true]])}
+ statusIndicator={Active}
+ />
+ {}} />
+
+ );
+}
+
+export { ThemeProvider, ThemeContext, UserCard, TodoItem, SampleApp };
diff --git a/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/tsconfig.json b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/tsconfig.json
new file mode 100644
index 00000000..9f8bc05b
--- /dev/null
+++ b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "compilerOptions": {
+ "outDir": "./dist",
+ "jsx": "react-jsx",
+ "skipLibCheck": true,
+ "module": "ESNext",
+ "moduleResolution": "bundler",
+ "target": "ES2020",
+ "strict": true
+ },
+ "include": ["src/**/*.ts", "src/**/*.tsx"]
+}
diff --git a/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/vite.config.ts b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/vite.config.ts
new file mode 100644
index 00000000..0aa82aa7
--- /dev/null
+++ b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/input/vite.config.ts
@@ -0,0 +1,20 @@
+import {defineConfig} from 'vite';
+import {resolve} from 'node:path';
+import react from '@vitejs/plugin-react';
+import {xydSourceReactRuntime} from '@xyd-js/source-react-runtime';
+
+export default defineConfig({
+ plugins: [
+ xydSourceReactRuntime(),
+ react(),
+ ],
+ build: {
+ rollupOptions: {
+ input: {
+ main: resolve(__dirname, 'index.html'),
+ 'sample-app': resolve(__dirname, 'sample-app.html'),
+ },
+ },
+ minify: false,
+ },
+});
diff --git a/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/output.js b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/output.js
new file mode 100644
index 00000000..ab5506a8
--- /dev/null
+++ b/packages/xyd-source-react-runtime/__fixtures__/-3.vite-app.iframe-multi-entry/output.js
@@ -0,0 +1,48 @@
+// === assets/main-HASH.js ===
+import "./modulepreload-polyfill-HASH.js";
+import { j as jsxRuntimeExports } from "./jsx-runtime-HASH.js";
+import { a as clientExports } from "./client-HASH.js";
+import "./index-HASH.js";
+function NavBar({ title, links, dark }) {
+ return jsxRuntimeExports.jsxs("nav", { style: { background: dark ? "#222" : "#f5f5f5", padding: 8 }, children: [jsxRuntimeExports.jsx("strong", { children: title }), jsxRuntimeExports.jsx("ul", { children: links.map((link) => jsxRuntimeExports.jsx("li", { children: link }, link)) })] });
+}
+function App() {
+ return jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsx(NavBar, { title: "Playground", links: ["Home", "About"] }), jsxRuntimeExports.jsx("iframe", { src: "/sample-app.html", style: { width: "100%", height: 400, border: "none" } })] });
+}
+const root = clientExports.createRoot(document.getElementById("root"));
+root.render(jsxRuntimeExports.jsx(App, {}));
+NavBar.__xydUniform = JSON.parse('{"title":"NavBar","canonical":"","description":"","definitions":[{"title":"Props","properties":[{"name":"title","type":"string","description":"Application title","meta":[{"name":"required","value":"true"}]},{"name":"links","type":"$array","description":"Navigation links","meta":[{"name":"required","value":"true"}],"properties":[],"ofProperty":{"name":"","type":"string","properties":[],"description":"","meta":[{"name":"required","value":"true"}]}},{"name":"dark","type":"boolean","description":"Whether to use dark theme","meta":[]}],"meta":[{"name":"type","value":"parameters"}]}],"examples":{"groups":[]}}');
+
+
+// === assets/sample-app-HASH.js ===
+import { j as jsxRuntimeExports } from "./jsx-runtime-HASH.js";
+import { r as reactExports } from "./index-HASH.js";
+import "./index-HASH.js";
+const ThemeContext = reactExports.createContext(null);
+function ThemeProvider({ children }) {
+ const [mode, setMode] = reactExports.useState("light");
+ return jsxRuntimeExports.jsx(ThemeContext.Provider, { value: { mode, setMode }, children });
+}
+function UserCard({ user, role, permissions, onEdit, tags, statusIndicator, actionBar }) {
+ const [expanded, setExpanded] = reactExports.useState(false);
+ reactExports.useContext(ThemeContext);
+ return jsxRuntimeExports.jsxs("div", { style: { border: "1px solid #eee", padding: 12, borderRadius: 8, marginBottom: 8 }, children: [jsxRuntimeExports.jsx("strong", { children: user.name }), " (", role, ")", jsxRuntimeExports.jsx("div", { style: { fontSize: 12 }, children: user.email }), jsxRuntimeExports.jsx("div", { children: permissions.join(", ") }), jsxRuntimeExports.jsx("div", { children: statusIndicator }), actionBar, jsxRuntimeExports.jsx("button", { type: "button", onClick: () => setExpanded(!expanded), children: expanded ? "Hide" : "Show" }), expanded && jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsxs("div", { children: ["ID: ", user.id] }), jsxRuntimeExports.jsx("button", { type: "button", onClick: () => onEdit(user.id), children: "Edit" })] })] });
+}
+function TodoItem({ id, title, completed, priority, onToggle }) {
+ return jsxRuntimeExports.jsxs("div", { style: { display: "flex", gap: 8, padding: 4 }, children: [jsxRuntimeExports.jsx("input", { type: "checkbox", checked: completed, onChange: () => onToggle(id) }), jsxRuntimeExports.jsx("span", { style: { textDecoration: completed ? "line-through" : "none" }, children: title }), jsxRuntimeExports.jsxs("span", { children: ["(", priority, ")"] })] });
+}
+function SampleApp() {
+ return jsxRuntimeExports.jsxs(ThemeProvider, { children: [jsxRuntimeExports.jsx("h3", { children: "Sample App (iframe)" }), jsxRuntimeExports.jsx(UserCard, { user: { name: "Alice", email: "alice@test.com", id: 1, joinedAt: /* @__PURE__ */ new Date() }, role: "admin", permissions: ["read", "write"], onEdit: (id) => console.log("edit", id), tags: /* @__PURE__ */ new Map([["verified", true]]), statusIndicator: jsxRuntimeExports.jsx("span", { children: "Active" }) }), jsxRuntimeExports.jsx(TodoItem, { id: 1, title: "Write docs", completed: false, priority: "high", onToggle: () => {
+ } })] });
+}
+ThemeContext.__xydUniform = JSON.parse('{"title":"ThemeContext","canonical":"","description":"","definitions":[{"title":"Props","properties":[{"name":"mode","type":"$xor","description":"","properties":[{"name":"mode","type":"object","description":"","meta":[{"name":"required","value":"true"}]},{"name":"mode","type":"object","description":"","meta":[{"name":"required","value":"true"}]}],"meta":[{"name":"required","value":"true"}]}],"meta":[{"name":"type","value":"parameters"}]}],"examples":{"groups":[]}}');
+UserCard.__xydUniform = JSON.parse('{"title":"UserCard","canonical":"","description":"","definitions":[{"title":"Props","properties":[{"name":"user","type":"User","description":"","meta":[{"name":"required","value":"true"}]},{"name":"role","type":"$xor","description":"","properties":[{"name":"role","type":"string","description":"","meta":[{"name":"required","value":"true"}]},{"name":"role","type":"string","description":"","meta":[{"name":"required","value":"true"}]},{"name":"role","type":"string","description":"","meta":[{"name":"required","value":"true"}]}],"meta":[{"name":"required","value":"true"}]},{"name":"permissions","type":"$array","description":"","meta":[{"name":"required","value":"true"}],"properties":[],"ofProperty":{"name":"","type":"string","properties":[],"description":"","meta":[{"name":"required","value":"true"}]}},{"name":"onEdit","type":"(id: number) => void","description":"","meta":[{"name":"required","value":"true"}]},{"name":"tags","type":"Map","description":"","meta":[{"name":"required","value":"true"}]},{"name":"statusIndicator","type":"ReactElement>","description":"","meta":[{"name":"required","value":"true"}]},{"name":"actionBar","type":"ReactNode","description":"","meta":[]}],"meta":[{"name":"type","value":"parameters"}]}],"examples":{"groups":[]}}');
+TodoItem.__xydUniform = JSON.parse('{"title":"TodoItem","canonical":"","description":"","definitions":[{"title":"Props","properties":[{"name":"id","type":"number","description":"","meta":[{"name":"required","value":"true"}]},{"name":"title","type":"string","description":"","meta":[{"name":"required","value":"true"}]},{"name":"completed","type":"boolean","description":"","meta":[{"name":"required","value":"true"}]},{"name":"priority","type":"$xor","description":"","properties":[{"name":"priority","type":"object","description":"","meta":[{"name":"required","value":"true"}]},{"name":"priority","type":"object","description":"","meta":[{"name":"required","value":"true"}]},{"name":"priority","type":"object","description":"","meta":[{"name":"required","value":"true"}]}],"meta":[{"name":"required","value":"true"}]}],"meta":[{"name":"type","value":"parameters"}]}],"examples":{"groups":[]}}');
+export {
+ SampleApp,
+ ThemeContext,
+ ThemeProvider,
+ TodoItem,
+ UserCard
+};
+
diff --git a/packages/xyd-source-react-runtime/__tests__/source-react-runtime.test.ts b/packages/xyd-source-react-runtime/__tests__/source-react-runtime.test.ts
index a82c720e..8bc14085 100644
--- a/packages/xyd-source-react-runtime/__tests__/source-react-runtime.test.ts
+++ b/packages/xyd-source-react-runtime/__tests__/source-react-runtime.test.ts
@@ -50,6 +50,14 @@ const tests: {
name: '8.tanstack-router.app',
description: 'tanstack router: file-based routing with createFileRoute, Link, useNavigate',
},
+ {
+ name: '-2.vite-lib.react-types-resilience',
+ description: 'vite lib: components with React types in props do not break sibling components',
+ },
+ {
+ name: '-3.vite-app.iframe-multi-entry',
+ description: 'vite app: multi-entry with iframe loading separate React app',
+ },
];
describe('xyd-source-react-runtime', () => {
diff --git a/packages/xyd-source-react-runtime/__tests__/utils.ts b/packages/xyd-source-react-runtime/__tests__/utils.ts
index e3d17831..11493605 100644
--- a/packages/xyd-source-react-runtime/__tests__/utils.ts
+++ b/packages/xyd-source-react-runtime/__tests__/utils.ts
@@ -86,7 +86,7 @@ export async function testSourceReactRuntime(fixtureName: string, propertyName:
// Save snapshot
const snapshotPath = fullFixturePath(`${fixtureName}/output.js`);
- fs.writeFileSync(snapshotPath, result);
+ // fs.writeFileSync(snapshotPath, result);
// Compare
const expected = fs.readFileSync(snapshotPath, 'utf8');
diff --git a/packages/xyd-source-react-runtime/src/index.ts b/packages/xyd-source-react-runtime/src/index.ts
index 19108ef2..21f4f331 100644
--- a/packages/xyd-source-react-runtime/src/index.ts
+++ b/packages/xyd-source-react-runtime/src/index.ts
@@ -137,7 +137,99 @@ async function buildTypiaSchemas(tsconfigPath: string): Promise