Ecosystem Overview
Effect is a monorepo with the effect package at its core and a set of driver packages for specific platforms and databases.
Core Packages
| Package | Purpose |
|---|---|
effect | Core framework: Effect type, Context, Layer, Fiber, Stream, Schedule, Scope, Schema, and all unstable/* namespaces |
@effect/vitest | Vitest integration with it.effect, layer test helpers |
@effect/opentelemetry | OpenTelemetry SDK integration for existing OTel setups |
@effect/sql-* | SQL drivers: sql-pg, sql-mysql2, sql-sqlite-node, sql-libsql, sql-d1, sql-mssql, sql-clickhouse |
@effect/platform-node | Node.js-specific runtime services (NodeRuntime) |
@effect/platform-bun | Bun-specific runtime services (BunRuntime) |
@effect/platform-browser | Browser-specific runtime services |
Gotcha: In v4,
@effect/platform,@effect/cli,@effect/rpc,@effect/cluster,@effect/workflow,@effect/ai, and@effect/sqlwere merged intoeffect/unstable/*. You no longer install these as separate packages. Only the driver packages (@effect/sql-pg, etc.) and platform runtime packages remain external.
v4 Unstable Namespaces
Everything that was a separate package in v3 now lives under effect/unstable/*:
| Namespace | What’s There | v3 Package |
|---|---|---|
http | HTTP client, server, router, middleware, body parsing, multipart | @effect/platform |
httpapi | Schema-first HTTP API builder, OpenAPI, Swagger, Scalar | @effect/platform |
rpc | Type-safe RPC, client/server, workers | @effect/rpc |
cluster | Distributed entities, sharding, runners, singletons | @effect/cluster |
workflow | Durable workflows, activities, durable queues | @effect/workflow |
cli | Command-line apps, flags, prompts, help docs | @effect/cli |
ai | Language models, chat sessions, tools, tokenizers, MCP | @effect/ai |
sql | SQL clients, migrations, resolvers, schema, streams, models | @effect/sql |
reactivity | Reactive state, atoms, async results, hydration | @effect/experimental |
observability | OTLP exporters (tracer, metrics, logger) | @effect/opentelemetry |
persistence | Key-value stores, persisted caches, rate limiters | @effect/experimental |
encoding | MsgPack, NDJSON, SSE | @effect/platform / @effect/experimental |
workers | Worker threads, transferable objects | @effect/platform |
process | Child processes, spawner | @effect/platform |
devtools | DevTools server, client, schema | @effect/experimental |
eventlog | Event journals, event groups | @effect/experimental |
socket | Socket client and server | @effect/platform |
schema | Model, variant schema | @effect/sql / @effect/experimental |
The unstable prefix means these APIs may change between minor versions. The core effect module (Effect, Context, Layer, Stream, Schema, Schedule, Scope, Fiber, etc.) is stable.
What’s Stable in Core
These modules ship in the effect package root and are API-stable:
Effect- core effect type and combinatorsContext- dependency injectionLayer- resource lifecycle and compositionFiber- lightweight virtual threadsStream- pull-based effectful sequencesSchedule- retry and repeat policiesScope- resource lifecycle managementSchema- data validation and domain modelingChannel- streaming pipelinesPubSub/Queue- concurrent messagingRef/Deferred- mutable references and promisesDateTime/Duration/Clock- time abstractionsMetric/Logger/Tracer- observabilityHashMap/HashSet/Chunk/Trie- data structuresArray/String/Number/Record- standard libraryPredicate/Equal/Hash- equality and type guards
Related Tools
Effect LSP (tsgo)
Effect maintains a fork of the TypeScript compiler called tsgo that provides faster type checking and better error messages for Effect code. It’s a drop-in replacement for tsc:
npx @effect/tsgo check
Tip: tsgo is significantly faster than stock TypeScript for large Effect codebases. Use it in CI for faster feedback loops.
VS Code Extension
The Effect VS Code extension provides:
- Inline type signatures for Effect types
- Quick fixes for common patterns (missing
yield*, wrongreturn) - Documentation on hover for Effect APIs
- Better error message rendering
Effect Playground
The Effect Playground is an in-browser editor for experimenting with Effect code. Useful for trying snippets without setting up a project.
Linting Rules
Effect provides ESLint rules that catch common mistakes:
yield*withoutreturnfor terminal effectstry-catchinside generators- Using
.pipewithEffect.fn
Community
| Resource | Where |
|---|---|
| Discord | discord.gg/effect-ts - main community hub |
| Effect Days | Annual conference, talks on Effect patterns and ecosystem |
| Effect Podcast | Interviews with Effect users and core team members |
| Workshops | Periodic online workshops on Effect fundamentals and advanced patterns |
| GitHub | Effect-TS/effect - source and issues |
| Website | effect.website - docs and API reference |