Effect best practices and patterns — https://www.effect.solutions
Living Document: Opinionated collection exploiting Cunningham's Law. Disagree? Open an issue
Curated Effect TypeScript patterns for common scenarios — error handling, services, layers, testing, and more. For humans and AI agents.
Website: Browse at effect.solutions
CLI: Access docs offline
bunx effect-solutions list # List all topics
bunx effect-solutions show http-clients # Show specific topic
bunx effect-solutions open-issue # Leave feedback- Practical patterns - Real-world solutions, not just theory
- Type-safe examples - All code validated with Effect LSP
- AI-friendly - Structured for LLM consumption via CLI
- Community-driven - Open issues to suggest/debate patterns
Error handling
import { Effect } from "effect"
Effect.gen(function* () {
const user = yield* findUser(id).pipe(
Effect.catchTag("NotFound", () => Effect.succeed(null))
)
})HTTP client setup
import { Effect, HttpClient } from "effect"
import { FetchHttpClient } from "@effect/platform"
const program = Effect.gen(function* () {
const http = yield* HttpClient.HttpClient
const result = yield* http.get("/api/users")
})
program.pipe(
Effect.provide(FetchHttpClient.layer)
)See effect.solutions for full patterns and rationale.
- Find a missing pattern or disagree with a recommendation
- Open an issue to discuss
- Submit PR with pattern + tests
- Create changeset:
bun scripts/changeset-named.ts "description"
See CONTRIBUTING.md for details and CLAUDE.md for development workflow.
- Apply changesets and bump versions:
bun run version(creates tagvX.Y.Z). - Push the tag/commit to GitHub.
- The
Releaseworkflow builds multi-arch CLI binaries and runschangeset publishto publish all packages to npm.
effect-solutions- CLI for local docs- Website at effect.solutions
MIT