Skip to main content
Effect View for React 19

React components, powered by Effect.

Bring typed services, scoped resources, reactive state, server queries, and schema-driven forms into React without hiding either framework.

npm install effect-view effect@beta
Hot reload with Vite Fast Refresh
UserCard.tsxEffect + JSX
import { Effect } from "effect"
import { Async, Component } from "effect-view"
import { Users } from "./services"

export const UserCard = Component.make("UserCard")(
function* ({ userId }: { userId: string }) {
const users = yield* Users

const user = yield* Component.useOnChange(
() => users.find(userId),
[userId],
)

yield* Component.useReactEffect(
() => Effect.forkScoped(users.watch(userId)),
[userId],
)

return (
<article>
<h2>{user.name}</h2>
<p>{user.email}</p>
</article>
)
},
).pipe(Async.async)
01 Yield services02 Own the lifecycle03 Return JSX

Why Effect View

One model from render to resources.

Effect View adds the pieces React deliberately leaves open while preserving the React component model you already know.

Ready when React is

Start with one Effect component.

Add a runtime, cross the React boundary once, and grow into the rest of the toolkit only when you need it.

Read the guide