# Effect — Type-Safe Functional Programming for TypeScript > Effect is a TypeScript library that brings structured concurrency, typed errors, dependency injection, and composable abstractions to production TypeScript applications. ## Install Save in your project root: # Effect — Type-Safe Functional Programming for TypeScript ## Quick Use ```bash npm install effect ``` ```typescript import { Effect, Console } from "effect"; const program = Console.log("Hello from Effect!"); Effect.runPromise(program); ``` ## Introduction Effect is a comprehensive TypeScript library for building reliable applications. It provides a typed effect system where every function declares its success type, error type, and required dependencies in the type signature. This gives you compile-time guarantees about error handling, resource management, and dependency injection without leaving the TypeScript ecosystem. ## What Effect Does - Tracks success values, typed errors, and dependencies in function signatures - Provides structured concurrency with fibers, scopes, and interruption - Includes built-in retry, timeout, scheduling, and rate limiting combinators - Ships with a dependency injection system using Layers and Services - Offers data validation, serialization, and HTTP client/server modules ## Architecture Overview Effect uses a lazy, push-based evaluation model. Programs are described as immutable data structures (the Effect type) and only execute when run by a Runtime. The Runtime manages a fiber-based scheduler that multiplexes concurrent effects onto the JavaScript event loop. Effects compose via `pipe`, `flatMap`, and generators (`Effect.gen`), building up a description of the computation that the runtime evaluates step by step. ## Self-Hosting & Configuration - Install the core package via npm, pnpm, or yarn - No special compiler or build plugin required—works with standard TypeScript - Configure the runtime with custom loggers, metrics, and span processors - Layer definitions wire up services for dependency injection at the application edge - Official packages for HTTP (`@effect/platform`), Schema, SQL, and OpenTelemetry ## Key Features - Typed error channel prevents unhandled exceptions at compile time - Generator syntax (`Effect.gen`) for async/await-style imperative code - Resource safety with Scope-based acquisition and release guarantees - Built-in observability with tracing, metrics, and structured logging - Schema module for runtime validation with automatic TypeScript type derivation ## Comparison with Similar Tools - **fp-ts** — functional utilities without a runtime; Effect provides a full effect system with concurrency - **Zod** — schema validation only; Effect Schema integrates validation with the effect system - **RxJS** — stream-based reactive programming; Effect is fiber-based with structured concurrency - **neverthrow** — typed Result type; Effect adds dependency tracking, concurrency, and resource management - **ZIO (Scala)** — Effect is directly inspired by ZIO, adapted for the TypeScript ecosystem ## FAQ **Q: Do I need functional programming experience?** A: No. Effect's generator syntax reads like standard async/await code. You can adopt functional patterns gradually. **Q: How does Effect handle errors differently from try/catch?** A: Errors are part of the type signature. The compiler ensures every possible error is handled or propagated, eliminating silent failures. **Q: Can I use Effect with React or Next.js?** A: Yes. Effect runs in any JavaScript environment. The `@effect/platform` package includes adapters for Node.js, browsers, and edge runtimes. **Q: What is the performance overhead?** A: Effect's fiber scheduler adds minimal overhead. For I/O-bound applications, the structured concurrency and retry mechanisms often improve overall throughput compared to ad-hoc implementations. ## Sources - https://github.com/Effect-TS/effect - https://effect.website --- Source: https://tokrepo.com/en/workflows/5e3e4b27-3ba8-11f1-9bc6-00163e2b0d79 Author: AI Open Source