NEWS

Effect 4.0 cuts bundle size by 5x and gains long-term support

Effect 4.0 cuts bundle size by 5x and gains long-term support
Image: Redação iMasters
News
Reading
5 min
Tables
1
In short

Released on September 30, 2026, Effect 4.0 rewrites the fiber runtime from scratch, drops dependencies to zero, and sets an LTS policy that runs through 2029.

Effect, a TypeScript framework for typed errors, structured concurrency, and dependency injection, released version 4.0 on September 30, 2026, according to InfoQ. It's the first stable release of a cycle that spent eight months in beta and six weeks as a release candidate. Behind the round number lies a complete rewrite of the fiber runtime, the engine that underpins all of the library's structured concurrency.

For those already using Effect, Stream, and Schema in production, the question isn't whether to upgrade, but when: the short answer is that the team has already opened a migration guide and a support window that runs through 2029.

The numbers behind the rewrite

The Effect team published its own benchmarks comparing a minimal program using Effect, Stream, and Schema across versions 3.x and 4.0. The results, medians of nine runs in a clean process over the same source code:

MetricEffect 3.xEffect 4.0Change
Bundle size35.6 kB7.1 kB~5x smaller
Heap with 50,000 fibers157.5 MB21.8 MB-86%
Concurrent task throughput0.71 million/s4.57 million/s~6.4x

These are the team's own numbers, and the stork.ai newsletter, cited by InfoQ, makes a point of noting that they haven't yet been independently reproduced. For anyone deciding whether to migrate a production service based on these gains, it's worth running your own benchmark before switching versions on anything critical.

Zero dependencies and a unified ecosystem

Beyond the performance rewrite, 4.0 consolidates an ecosystem that used to be spread across several packages. Modules that lived in @effect/platform, @effect/rpc, and @effect/cluster now live inside the main effect package, and every @effect/* package now shares a single version.

The core also brings its runtime dependency list down to zero, after removing pg (replaced by a native PgProtocol client) and MessagePack. In practice, this eliminates an entire class of supply-chain problem that used to come from transitive dependencies of the Postgres driver and the serializer, two points that historically generated version conflicts in large projects.

Long-term support through 2029

With 4.0, Effect debuted a formal LTS (long-term support) policy, something that was missing in previous versions:

  • Bug fixes: through September 2029, or one year after the release of 5.0, whichever comes later.
  • Security fixes: through September 2029, or two years after 5.0, whichever comes later.

For teams evaluating Effect as a structural piece for typed errors and concurrency in production, the policy resolves a recurring objection: knowing how long a major version will keep receiving security patches without forcing an upgrade.

The downloads are smaller than they looked

The figure of 43.9 million weekly downloads, cited at launch, covers the entire ecosystem combined, including beta and release candidate tags, not just the stable release. stork.ai points out that Effect 4.0 stable, on its own, logged approximately 150,000 downloads on its first day. That's a real volume for a niche library within TypeScript, but quite different from the scale suggested by the aggregate number, and it's a reminder to read adoption metrics published in release announcements with care.

First week's stumbles

The official post "Effect 4.0: The First Week," published alongside the 4.0.1 and 4.0.2 patches on October 8, 2026, admitted a process failure: several modules that should have shipped marked as unstable were published without the @stability tag, which implicitly promised stability they didn't have. The tags were added, and now every exported API explicitly declares its stability level.

In the same window, the team moved HTTP, SQL, RPC, and AI spans to OpenTelemetry's semantic conventions, which makes it easier to integrate Effect's tracing with any observability backend that already follows the standard (Jaeger, Honeycomb, Datadog, among others).

On Hacker News, a developer who was already running the beta in production described the experience:

I've been using the beta on three separate projects for quite a while now and it has been totally pain-free. I mostly use the v3x core library (which has expanded to contain other libraries in v4) and Schema so I can't speak to much outside of those, but I trust they've done a great job all around.

Hacker News commenter

Effect 4.1 has already arrived with crypto and Glob

Three weeks later, on October 20, 2026, Effect 4.1 shipped with a set of new modules that extend the library's surface beyond concurrency and typed errors:

  • effect/crypto, covering random number generation, hashing, and signing.
  • A Glob module backed by FileSystem.glob, working on Node, Bun, and Deno.
  • A Csv module with streaming inside effect/encoding.
  • RFC 9457 Problem Details support in HttpApi, standardizing how the API returns structured HTTP errors.

What changes for those who already have Effect in their stack

Those on 3.x have the official v3-to-v4 migration guide as a starting point; the team itself suggests that coding agents can handle most of the mechanical porting work, since much of the change is import renaming and signature adjustments, not business logic rewrites.

It's also worth placing Effect on the map for anyone evaluating the category: it occupies territory similar to ZIO in the Scala world, and competes directly with TypeScript libraries like Effection 4.0, which targets the same structured concurrency with a deliberately smaller API surface. For those who just need async/await with structured cancellation, without Effect's full apparatus of typed errors and DI, Effection may be the leaner option; for those who already depend on Schema, Layer, and integrated tracing, the 4.0 rewrite reinforces the bet on Effect as a central piece of the resilience stack.

Translated from the Brazilian Portuguese original · Read the original