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

PackagePurpose
effectCore framework: Effect type, Context, Layer, Fiber, Stream, Schedule, Scope, Schema, and all unstable/* namespaces
@effect/vitestVitest integration with it.effect, layer test helpers
@effect/opentelemetryOpenTelemetry 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-nodeNode.js-specific runtime services (NodeRuntime)
@effect/platform-bunBun-specific runtime services (BunRuntime)
@effect/platform-browserBrowser-specific runtime services

Gotcha: In v4, @effect/platform, @effect/cli, @effect/rpc, @effect/cluster, @effect/workflow, @effect/ai, and @effect/sql were merged into effect/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/*:

NamespaceWhat’s Therev3 Package
httpHTTP client, server, router, middleware, body parsing, multipart@effect/platform
httpapiSchema-first HTTP API builder, OpenAPI, Swagger, Scalar@effect/platform
rpcType-safe RPC, client/server, workers@effect/rpc
clusterDistributed entities, sharding, runners, singletons@effect/cluster
workflowDurable workflows, activities, durable queues@effect/workflow
cliCommand-line apps, flags, prompts, help docs@effect/cli
aiLanguage models, chat sessions, tools, tokenizers, MCP@effect/ai
sqlSQL clients, migrations, resolvers, schema, streams, models@effect/sql
reactivityReactive state, atoms, async results, hydration@effect/experimental
observabilityOTLP exporters (tracer, metrics, logger)@effect/opentelemetry
persistenceKey-value stores, persisted caches, rate limiters@effect/experimental
encodingMsgPack, NDJSON, SSE@effect/platform / @effect/experimental
workersWorker threads, transferable objects@effect/platform
processChild processes, spawner@effect/platform
devtoolsDevTools server, client, schema@effect/experimental
eventlogEvent journals, event groups@effect/experimental
socketSocket client and server@effect/platform
schemaModel, 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 combinators
  • Context - dependency injection
  • Layer - resource lifecycle and composition
  • Fiber - lightweight virtual threads
  • Stream - pull-based effectful sequences
  • Schedule - retry and repeat policies
  • Scope - resource lifecycle management
  • Schema - data validation and domain modeling
  • Channel - streaming pipelines
  • PubSub / Queue - concurrent messaging
  • Ref / Deferred - mutable references and promises
  • DateTime / Duration / Clock - time abstractions
  • Metric / Logger / Tracer - observability
  • HashMap / HashSet / Chunk / Trie - data structures
  • Array / String / Number / Record - standard library
  • Predicate / Equal / Hash - equality and type guards

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*, wrong return)
  • 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* without return for terminal effects
  • try-catch inside generators
  • Using .pipe with Effect.fn

Community

ResourceWhere
Discorddiscord.gg/effect-ts - main community hub
Effect DaysAnnual conference, talks on Effect patterns and ecosystem
Effect PodcastInterviews with Effect users and core team members
WorkshopsPeriodic online workshops on Effect fundamentals and advanced patterns
GitHubEffect-TS/effect - source and issues
Websiteeffect.website - docs and API reference