Build a backend service where every possible error is declared in the type signature and must be handled before the code compiles.
Write TypeScript that runs unchanged on Node.js, Bun, or in the browser with platform differences abstracted away.
Add distributed tracing to your app via the built-in OpenTelemetry package without changing business logic.
Connect to OpenAI, Anthropic, or Google AI inside a typed pipeline where API errors are tracked and handled.
Steep learning curve, the functional effect system requires new mental models before productivity kicks in.
Effect is a TypeScript framework for building applications that deal reliably with errors, concurrency, and unpredictable behavior. It is built around a concept called a functional effect system, which is a structured way to describe operations that have side effects, such as reading from a database, making a network request, or handling failures, without letting those side effects run uncontrolled through the codebase. For TypeScript developers, this means the type checker knows not just what a function returns, but also what errors it can produce and what resources it depends on. The repository is organized as a monorepo: a single codebase that contains dozens of separate packages. The core package provides the foundational building blocks. The surrounding packages extend it in specific directions. There are packages for interacting with SQL databases (supporting PostgreSQL, MySQL, SQLite, and others), for building command-line tools, for running distributed computing workloads, and for adding observability to applications via the OpenTelemetry standard. There are also AI-specific packages for working with OpenAI, Anthropic, Google, and Amazon Bedrock. Platform packages handle differences between runtime environments, so you can write code once and run it in Node.js, in the Bun runtime, or in a web browser, with each platform package adapting the underlying operations appropriately. The design philosophy of Effect is to make failure explicit and manageable. Instead of letting errors silently crash a program or leak through untyped promise rejections, the framework requires errors to be declared upfront and handled deliberately. The same discipline applies to resource cleanup and concurrent operations. Effect is aimed at TypeScript developers building production applications who want stricter guarantees about how their code behaves, particularly in backend or server-side contexts. The learning curve is steeper than many JavaScript libraries, but the framework provides comprehensive documentation and has an active community.
← effect-ts on gitmyhub — every repo by this author, as a profile.
Verify against the repo before relying on details.