BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Effect v4 Beta: Rewritten Runtime, Smaller Bundles and Unified Package System

Effect v4 Beta: Rewritten Runtime, Smaller Bundles and Unified Package System

Listen to this article -  0:00

Effect, the TypeScript framework for building production-grade applications with structured concurrency and typed error handling, has released Effect v4 beta, shipping with a rewritten runtime, significantly smaller bundles, and a unified package ecosystem.

Effect v4 beta introduces several changes, including a complete rewrite of the core fiber runtime, a consolidated package system where all ecosystem packages share a single version number, and a new unstable module mechanism that allows new features to ship inside the core package without committing to semver stability. The release also delivers bundle size reductions.

One of the headline changes in Effect v4 is the complete rewrite of the core fiber runtime, designed for lower memory overhead, faster execution, and simpler internals. According to the release blog, a minimal program using Effect, Stream, and Schema drops from roughly 70 kB in v3 to about 20 kB in v4. This directly addresses one of the most common concerns about Effect for frontend use cases.

A longstanding pain point for Effect users has been version management across the ecosystem. In v3, packages like effect, @effect/platform, and @effect/sql were versioned independently, often leading to compatibility issues when versions fell out of sync. In v4, all ecosystem packages share a single version number and are released together. Core functionality from @effect/platform, @effect/rpc, and @effect/cluster has been consolidated into the main effect package, with separate packages remaining only for platform-specific or provider-specific implementations such as SQL drivers and AI providers. They do note in the announcement that this will mean some version releases will have no changes, but feel this is a small price to pay for a more consistent developer experience with aligned version numbers.

Effect v4 also introduces unstable modules, accessible via effect/unstable/* import paths. These allow the team to ship new capabilities without committing to strict semver guarantees. The release ships with 17 unstable modules covering AI, HTTP, Schema, SQL, RPC, CLI, workflows, and clustering. As these modules mature, they graduate into the top-level effect/* namespace.

Johannes Schickling, founder of Prisma, noted on X:

This addresses most common painpoints and feedback by making it faster, smaller and simpler.

Tom MacWright, an engineer at Val Town, wrote in a March 2026 blog post that:

v4 does seem exciting: a smaller, more unified, faster module is great news.

He goes on to say this about adoption:

We haven't migrated yet because we use some of the deprecated APIs, like Runtime, and I try to avoid using beta releases in general in production software.

Elsewhere, Developer Sandro Maglione, who documented his migration of several codebases, reported gzipped worker bundles dropping from 900 kB to 779 kB, though he cautioned that AI-assisted migration could lead agents into "tangents confusing repositories and APIs" on larger projects. Early adopters have also flagged runtime compatibility issues in restricted environments like Convex, where blocked globals caused immediate failures. This has since been resolved.

For teams considering migration, the core programming model of Effect, Layer, Schema, and Stream remains the same. Official migration guides are available: a general v3 to v4 guide links out to specific core and module guides. There is also a markdown file covering the schema rewrite. The team has stated that codemods and AI-assisted migration tooling will follow.

Effect is an open-source TypeScript framework developed and maintained by Effectful Technologies. It provides typed error handling, structured concurrency, dependency injection, and observability primitives for both frontend and backend TypeScript applications.

About the Author

Rate this Article

Adoption
Style

BT