Effect
The library that currently carries pure functional programming in TypeScript — and the site sells almost none of it as functional programming. The tagline read on 2026-08-12 is “Reliable TypeScript for the AI era”, and the pitch under it is production systems: “Build production-ready systems your team can ship, customers can depend on, and AI agents can work with.” Maintained by Effectful Technologies Inc., MIT licensed. Version read as 4.0, in release candidate. Named production users: Cloudflare, OpenCode, MasterClass, T3 Chat, X.
T1 — first-party, per the standing caveat on project home pages. Authoritative about what the library is designed to do; every reliability and adoption claim on it is the vendor’s own and uncontrolled.
The three-channel type
One type carries the whole design:
Effect<Success, Error, Requirements>
A value of this type is a description of work that has not run yet. The three parameters track what
it produces, what it can fail with, and what it needs supplied. TypeScript’s own Promise<T>
has one parameter and answers only the first question; a rejected promise is unknown, and a
dependency is whatever the module happened to import. Effect moves both into the type, which is why
the site’s first listed problem is untyped error handling — replacing catch (e: unknown).
Around that sit fibers for structured concurrency, parallel execution with configurable limits, retry with exponential backoff and jitter, resource cleanup, a schema system that derives runtime validation from types, and OpenTelemetry tracing with structured logging and metrics.
Why this belongs in a wiki about languages
Effect is a library, and it is doing a language designer’s job. Effect tracking is a property
haskell has in its type system: an IO a is a value describing an action, and the compiler will
not let it pass for an a. TypeScript has no such notion, so Effect rebuilds it in userland out of
generics — a three-parameter type standing in for a feature the language declined to have.
The lineage usually given for this is ZIO, the Scala effect system; the comparison is standard in third-party writing about the library and does not appear in the first-party framing read here, so treat it as reported rather than established. The site’s own comparisons are to RxJS, fp-ts and Neverthrow, and its claim against all three is scope: one runtime holding async control, dependency management, error handling and observability, rather than a set of abstractions.
That framing is the finding. The site does not lead with monads, type classes or purity. It leads with reliability, and the functional machinery arrives as the means. fp-ts led with the abstractions and is now merging into this project — see that page for what got traded.
Cost, stated by others
Third-party writing on Effect converges on a learning curve measured in weeks of team training, because the composition and error model differ from ordinary imperative JavaScript. That number is not first-party and not measured; it is recorded here as the shape of the objection, not as a finding. No source read here reports runtime overhead, bundle size, or a defect-rate comparison against plain TypeScript — which is the same evidentiary hole typescript itself sits in.
Related
fp-ts · functional-programming · typescript · haskell · type-system · lightweight-hkt · records-and-tuples · synthesis