The micro-frontend framework production teams reach for.
✔ Workspace ready: ./my-app↪ apps/, libs/, .github/, jorvel.config.ts↪ Initialized git repository (main).$ cd my-app && pnpm dev:proxy// apps/shell/src/main.tsx
import { createRouter, RemoteOutlet } from '@jorvel/runtime';
import { remotes } from './jorvel.routes.host';
const router = createRouter({
remotes,
guards: [requireAuth],
});
export default function App() {
return <RemoteOutlet router={router} />;
}Instant dev server
One command. Host + remotes. Same origin.
Secure by default
CSP, SRI, allowlist. Edge-runtime safe.
Built on the modern web stack
Everything a production MFE stack needs
Drop the YAML graveyard. JORVEL gives you the small, opinionated runtime that's already shipped to thousands of users — without locking you out of the bundler.
Bring any framework. Federate anything.
Module Federation is a bundler concept — JORVEL is framework-agnostic at the seam. Use React in the host and Vue in a remote, or ship plain Web Components.
React 18 / 19
First-class. Hooks, Suspense, Server Components, transitions.
Vue 3
Mount Vue remotes via the runtime; share state through @jorvel/event-bus.
Web Components
Drop any custom-element remote — Shadow DOM isolation built in.
Solid / Svelte
Federation works at the bundler level, agnostic to UI library.
One CLI. Every runtime.
jorvel deploy dynamically loads the right adapter package — Vercel Edge, Cloudflare, or Node — and scaffolds a working config in seconds.
Vercel
Edge Functions + immutable static asset cache.
Cloudflare
Workers + Pages Functions, ReadableStream responses.
Node.js / Docker
Slow-loris hardened HTTP server, structured logs, MIME table.
Self-host
Static export with parallel renders + content hashes.
APIs you already know.
File-based routes, typed config, hooks for data and params. Nothing new to learn — just the federation primitives you wished React Router shipped with.
{
"$schema": "./node_modules/@jorvel/types/schemas/jorvel.config.json",
"name": "shop",
"appsDir": "apps",
"features": { "tailwind": true },
"federation": {
"shared": ["react", "react-dom", "@jorvel/event-bus"],
"allowlist": ["*.acme.dev", "**.cdn.cloudflare.net"],
"sri": true
}
}// apps/dashboard/src/pages/users/[id].tsx
import { useParams } from '@jorvel/runtime';
import { useRemoteData } from '@jorvel/runtime';
export default function UserPage() {
const { id } = useParams<{ id: string }>();
const { data, error } = useRemoteData(['user', id], () =>
fetch(`/api/users/${id}`).then((r) => r.json()),
);
if (error) throw error;
if (!data) return <Skeleton />;
return <UserCard user={data} />;
}12+ packages. Use what you need.
Every package ships independently with proper exports, sideEffects: false, and changeset versioning. Pull in only the runtime you actually deploy.
Project scaffolding, dev orchestration, deploy.
Router, remote loader, hooks, telemetry, guards.
Render to string/stream, static export, edge adapter.
CSP, SRI, allowlist, safe JSON hydration.
onError / onMetric / onRemoteLoad + Web Vitals.
Singleton store registry + React adapter + persistence.
Typed pub/sub. onAny + replay + per-bus errors.
Federation contracts. JSON schemas for config files.
Headless primitives — Button, ThemeProvider.
Vercel Edge functions + immutable assets.
Cloudflare Workers + Pages Functions.
Hardened Node HTTP server + Docker template.
Quietly running production in a few teams already.
“We had a Rspack + Module Federation monorepo we were terrified to touch. Migrated to JORVEL in a weekend; the CLI did 90% of the wiring.”
Brandon CranstonCo-founder / CTO, fictional“Typed federation contracts caught two breakage classes the day we adopted them. The SSR streaming + ETag-before-render combo cut p95 by 40%.”
Alice XavierStaff engineer, fictional“The CSP/SRI plumbing alone saved us a quarter of platform work. It's the first MFE framework that doesn't feel like a side project.”
James ClearDevOps engineer, fictional
Ship your first federated app in under an hour.
Scaffold a workspace, generate a host + remote, and deploy to the edge. No YAML required.
