finds.dev← search

// the find

Effect-TS/effect

★ 14,586 · TypeScript · MIT · updated Jun 2026

Build production-ready applications in TypeScript

Effect is a TypeScript framework built around a functional effect system — think Haskell's IO monad but designed for production TypeScript. It gives you structured concurrency, typed errors tracked in signatures, dependency injection via Layers, and a 35+ package ecosystem (SQL, CLI, AI, distributed actors, durable workflows) all composable through the same primitives. This is for teams who want to treat side effects, failures, and dependencies as first-class concerns rather than bolting them on after the fact.

- Errors are part of the type signature — Effect<A, E, R> forces callers to acknowledge what can fail and with what, which eliminates a whole class of silent-failure bugs that plague standard Promise-based code

- The fiber-based concurrency model gets structured concurrency right: cancellation propagates correctly, resources are always cleaned up, and race/zip/timeout combinators compose without the footguns of raw Promise.race

- The ecosystem depth is real — @effect/sql covers Postgres, MySQL, SQLite, D1, and Drizzle/Kysely adapters, all through the same Layer DI, and @effect/cluster ships a working distributed actor model that most TypeScript frameworks don't attempt at all

- Schema is a serious runtime validation library integrated at the core, not a third-party afterthought — it drives codegen, serialization, and type derivation rather than just being a validator you call at the boundary

- The onboarding cliff is steep: you need to understand Layers, fibers, and the Effect type before writing anything non-trivial, and most developers will spend a week confused before it clicks — there's no shallow end of this pool

- Going all-in is essentially required — mixing Effect code with regular Promise-based libraries produces impedance mismatch and boilerplate wrappers everywhere; teams that adopt it partially end up with the worst of both worlds

- The API surface is genuinely enormous and the docs cover the basics but leave large gaps at the advanced end; you will end up reading source code or asking on Discord to understand behavior in non-obvious edge cases

- Bundle size is a concern for browser targets — even with tree-shaking, the core package is large, and pulling in @effect/platform-browser on top makes this a hard sell for anything latency-sensitive on the client

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →