One application runtime
Declare your services once. Pages, components, and Server Functions use the same Effect runtime, with explicit dependencies and scoped resources.
Read the guideReact Server Components · Effect · Bun
A small, opinionated framework that brings Effect’s services, concurrency, and resource management to React Server Components.
bunx create-ersc-app my-app
Experimental. Built on React Canary and Effect v4. Browser support and navigation
Start with the familiar
Plain TypeScript, React, and Effect. Create an identity, define your pages, and compose your routes.
Explore this exampleimport { Effect } from 'effect';
import { Application } from 'effective-rsc';
const ERSC = Application.ersc();
const RootLayout = ERSC.Layout.make({
render: ({ children }) =>
Effect.succeed(
<html lang='en'>
<body>{children}</body>
</html>,
),
});
const HomePage = ERSC.Page.make({
render: () => Effect.succeed(<h1>Hello from effective-rsc</h1>),
});
export default ERSC.make({
routes: ERSC.Routes.make({ layout: RootLayout }).page('/', HomePage),
});
Declare your services once. Pages, components, and Server Functions use the same Effect runtime, with explicit dependencies and scoped resources.
Read the guideRender Server Components, stream with Suspense, and submit native forms. React owns the UI and its protocols.
Read the guideCompose pages, layouts, and middleware in TypeScript. The route graph is explicit, with no hidden filename conventions.
Read the guide