Skip to main content

What are unstable modules?

The effect/unstable namespace contains experimental features and APIs that are actively being developed and refined. These modules provide access to powerful capabilities that may undergo breaking changes as the Effect team gathers feedback and iterates on the design.

Why use unstable modules?

Unstable modules give you early access to:
  • New features before they stabilize
  • Cutting-edge functionality for modern application patterns
  • Powerful abstractions that are being refined based on community feedback
While these APIs may change between releases, they are production-ready and used in real applications today.

Available modules

HTTP Client

Make HTTP requests with retries, timeouts, and request transformation

HTTP Server

Build HTTP servers with routing and middleware

HTTP API

Create schema-first, type-safe APIs with automatic validation

CLI

Build command-line applications with typed arguments and flags

Process

Manage child processes and command pipelines

AI

Work with language models and AI providers

Cluster

Build distributed applications with entities

RPC

Define type-safe remote procedure calls

Workflow

Orchestrate durable, long-running workflows

Observability

Export telemetry with OTLP and Prometheus

Persistence

Work with key-value stores, caches, and queues

Socket

Handle WebSocket and stream-based connections

Workers

Spawn and communicate with web workers

Import paths

Unstable modules use the effect/unstable import path:
import { HttpClient } from "effect/unstable/http"
import { Command, Flag } from "effect/unstable/cli"
import { LanguageModel } from "effect/unstable/ai"

Stability considerations

APIs in the unstable namespace may change between minor versions. When upgrading Effect, review the changelog for breaking changes in unstable modules.
Many unstable modules follow similar patterns to stable Effect APIs. If you’re familiar with services, layers, and error handling in Effect, you’ll feel right at home.

Migration to stable

As unstable modules mature, they may:
  • Graduate to the main Effect package
  • Move to dedicated packages (like @effect/platform)
  • Undergo final API refinements before stabilization
The Effect team announces these transitions in release notes and provides migration guides when breaking changes occur.

Build docs developers (and LLMs) love