Skip to content

Effect compatibility and maturity

This page describes the current repository contract. It is a decision aid for teams evaluating CraftTS, not a promise that beta APIs will remain unchanged.

Compatibility matrix

AreaCurrent contractStatus
Craft runtime@craft-ts/core 0.7.0-beta.11Beta
Craft components@craft-ts/component on the same Craft versionBeta
Effect bridge@craft-ts/effect 0.7.0-beta.11Beta / experimental integration
Effect runtimeeffect ^4.0.0-rc.110Effect 4 release candidate
Effect 3 projectsNo compatibility contractMigrate or isolate before adopting
Node.js20.19+ or 22.12+Required by the current docs
TypeScriptUse the version supported by the selected Craft beta; verify with the project lockfileToolchain-sensitive
Browser applicationVite demo and jsdom tests are coveredExperimental but executable
SSRNo product SSR renderer in this releaseNot ready
Server functionsLocal transport and middleware experimentProof of concept
Migration toolingcraft-migrate for Craft conceptsNo complete Effect-specific migration

Install all Craft packages from the same beta channel. @craft-ts/effect also declares effect as a peer dependency, so the Effect version is part of the application's compatibility surface.

Maturity by capability

CapabilityWhat is covered todayAdoption guidance
Effect domain programsEffect, tagged errors, Context.Service, LayerGood candidate for a pilot
Effect-backed reads and writesqueryEffect, mutationEffect, asyncProcessEffectPilot with real tests and a narrow feature
Synchronous Effect members in a computationSyncOp, computedEffect, syncEffectDeclare the members that never suspend, then reuse them in craftComputed and params
Layer scopingapplication, route, component and primitive providersUse after the basic boundary is understood
Typed error mappingE becomes Craft exceptions; defects stay technical errorsSuitable for explicit UI error handling
Effect service mocksmockEffectService plus Craft registersSuitable for focused tests
Static Effect graphEffect services, operations and Layers are collectedUseful for architecture rules; still evolving
Server functionsexecuteEffect, middleware and local HTTP demoKeep behind an experimental boundary
SSR and deployment integrationNot shipped as a product contractDo not make it a prerequisite for adoption

How to read this table

The safest first adoption is browser-side, one feature, with an existing Effect domain and an application Layer provided by Craft. Defer SSR-specific decisions and server functions until their contracts are stable.

See Adopting CraftTS progressively for a staged plan and the quickstart's verification section for the executable Effect demo checks.