Pimp My IDE / garage dispatch
Back to garage
October 2, 2026 | TypeScript / release engineering

Couple the package train.

Effect 4 moves its ecosystem to one version number. The easier version choice comes with a sharper job: inventory every import and mark every unstable carriage.

Lockstep versions remove one kind of compatibility guess. They do not turn unstable APIs into stable ones or prove your application still behaves the same.

The package is real.

The npm registry serves effect@4.0.0 with provenance metadata and no runtime dependencies. A clean temporary project installed that exact package and ran Effect.runPromise(Effect.succeed(...)) on Node 22.[3]

That smoke check proves the published core package installs and one basic effect runs on one host. It does not test an Effect 3 application, a platform adapter, a database driver, a schema migration, or production behavior.

Lockstep versions fix the shopping problem.

Effect 3 used independent versions for the core package and companion packages. Effect 4 gives the ecosystem one version number and releases those packages together. If the application uses effect@4.0.0, the matching PostgreSQL driver is @effect/sql-pg@4.0.0.[2]

Many old packages also moved into the core package. RPC, cluster, CLI, AI, SQL, workflow, and other modules now use imports under effect/*. Platform, SQL driver, AI provider, telemetry, test, and framework bindings remain separate packages.[2]

A shared version number is a coupling map. Treat it as a migration constraint, not a green light.

The stability label still controls risk.

Effect 4 has a long-term support policy. The project promises bug and security fixes through September 2029, or longer if Effect 5 ships late enough. The stable API follows major-version compatibility rules.[1]

The same promise does not apply to every module. APIs marked unstable can break in a minor release. Experimental APIs can break in a patch. Imports such as effect/http, effect/rpc, and effect/workflow no longer contain an unstable path segment, but the shorter path does not change their status.[2]

Migrate the contract, then replay behavior.

  1. List every effect and @effect/* package in the lockfile.
  2. Move every companion package to the same exact version.
  3. Apply the published import and API rename maps.
  4. Record every unstable or experimental API your application uses.
  5. Run type checks, unit tests, integration tests, and failure-path replay against one pinned revision.

The package coupler below builds that review card. It does not inspect your repository, edit imports, run a type checker, or test an application.

Interactive makeover / migration package coupler

Close each coupling gate.

Traditional purpose replaced: a static migration checklist. Better version: native switches move one connected package train and produce a copyable review card with missing evidence left visible.

Select planned checks

These switches record migration-plan sections. They do not detect packages or confirm results.

Coupling gates
Package train

No gate selected

0 of 4

The migration route is open.

Select the package inventory first. Later gates stay disconnected until every earlier section is selected.

This display records selected plan sections. It does not read a lockfile, resolve package compatibility, compile TypeScript, or supply runtime evidence.

Migration coupling card

The completed state means four plan sections were selected. Repository revision, package list, command output, test results, and rollback proof are still required.

Sources read

Source log and evidence boundary
  1. Effect 4.0 release post, read October 2, 2026. This supplies the release announcement, package consolidation, zero-runtime-dependency statement, project benchmark numbers, adoption numbers, and long-term support policy.
  2. Effect 3 to Effect 4 migration guide, read October 2, 2026. This supplies lockstep versioning, package moves, remaining companion-package groups, import changes, stability rules, runtime requirements, and migration guide links.
  3. effect 4.0.0 on npm, read and exercised October 2, 2026. Registry metadata reports version 4.0.0, provenance, and no runtime dependencies. Pimp My IDE installed the package in a disposable project and ran one basic effect on Node 22.
  4. Effect 4.0.0 GitHub release, read October 2, 2026. This confirms the release tag and the first stable Effect 4 release.
  5. Hacker News discussion for Effect 4.0, item ID verified through the Hacker News API and read October 2, 2026. This is the discovery route, not technical authority.

Evidence boundary. Pimp My IDE installed the core package and ran one basic effect. We did not migrate an Effect 3 application, install companion packages, compile a TypeScript project, exercise concurrency, measure bundle size, reproduce vendor benchmarks, or test the long-term support process. The coupler drafts a review card. It does not perform a migration.