Effect is a library for building robust, maintainable, type-safe, and production grade applications in TypeScript.
The effect package is the core of the framework. It provides primitives for managing side effects, errors, concurrency, resources, and structured data, alongside a rich standard library.
Effect 4.x is a long-term support (LTS) release, with at least three years of bug and security fixes. If you are upgrading from Effect 3.x, follow the migration guide.
npm install effect-
TypeScript 5.9 or newer. TypeScript 7 is recommended for the best performance and compatibility with Effect's TypeScript tooling.
-
Node.js 18 or newer when running Effect on Node.js.
-
Strict type-checking: the
strictflag must be enabled in yourtsconfig.json:{ "compilerOptions": { "strict": true } }
- Website: documentation, guides, and news.
- Reference: API documentation for this package.
- Discord: ask questions, share what you're building, and talk to the core team.
- Community: meetups and events, or bring Effect to your own.
- Issues: bug reports and feature requests.
Whether your team is considering Effect, rolling it out, or already running it in production, we'd love to hear from you: what you're building, what works, and what you need from Effect next.
- Talk to the maintainers. Introduce your team on Discord or email contact@effectful.co. We're happy to connect privately on Slack or Discord for feedback and help with adoption.
- Production support. We're exploring how to better support teams running Effect in production. If your organization has specific support needs, let's discuss them.
- Adoption help. Our adoption partners offer implementation, consulting, team extension, training, and commercial support.
The effect package is a collection of modules. Some of the core ones:
| Module | Description |
|---|---|
| Effect | The core abstraction for managing side effects, concurrency, and error handling in a structured way. |
| Context | A lightweight dependency injection mechanism that enables passing services through computations without direct references. |
| Layer | A system for managing dependencies, allowing for modular and composable resource allocation. |
| Fiber | Lightweight virtual threads with resource-safe cancellation capabilities, enabling many features in Effect. |
| Stream | A powerful abstraction for handling asynchronous, event-driven data processing. |
| Schedule | A module for defining retry and repeat policies with composable schedules. |
| Scope | Manages the lifecycle of resources, ensuring proper acquisition and release. |
| Schema | A powerful library for defining, validating, and transforming structured data with type-safe encoding and decoding. |
In v4, functionality that previously lived in separate packages ships inside effect under the effect/* namespaces, including http, http-api, rpc, cluster, workflow, cli, ai, sql, and reactivity.