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
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