npm / @effect/language-service
@effect/language-service
What changed in @effect/language-service 0.80 to 0.87, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-20.
2 breaking2 new APIs and options4 behavior and defaults41 tooling13 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@effect/language-service 0.8712 changes
Breaking changes 1
Effect v4 compatibility now uses the new package paths for CLI, HTTP, schema model, and encoding imports, updating examples and diagnostics.
Tooling 7
The v4 quick fix now inserts Effect.context<never>() instead of the removed Effect.services, and reuses an existing Effect.context() binding.
Calls inside an Effect are now reported, with a suggestion to use Effect.runPromiseExitWith in v4 or Runtime.runPromiseExit in v3.
Calls inside an Effect are now reported, like Effect.runSync, with a suggestion to use the appropriate v4 or v3 alternative.
The language service now allows Effect.provide at recognized application entry points.
Effect v4 compatibility is updated to 4.0.0-beta.104, including the renamed Schema.Error and Schema.TaggedError constructors.
Adds a style diagnostic suggesting Effect.map instead of Effect.flatMap followed by Effect.succeed.
Updates the setup command to configure VS Code with the unified js/ts TypeScript settings.
Fixes and other changes 4
Now checks calls used as method receivers and calls nested inside them.
Reports calls whose result is used as a method receiver, including calls nested inside them.
Now checks calls used as method receivers and calls nested inside them.
The diagnostic now ignores Effect v4 local Effect.provide(..., { local: true }) calls when reporting chained provides.
@effect/language-service 0.869 changes
Breaking changes 1
Unsupported TypeScript versions are rejected when loading or patching TypeScript; TypeScript 7 users are directed to @effect/tsgo.
Behavior and default changes 2
When TypeScript skipLibCheck is enabled, patched tsc runs skip Effect diagnostics for external library files.
The preferSchemaOverJson option is now off by default.
Tooling 3
The generated schema.json now includes the TypeScript 6.0 ES2025 target and lib entries.
Diagnostic guidance now recommends Effect v3 and v4 APIs based on whether the shape is known and whether code handles JSON strings or values.
Adds a diagnostic for Effect, Stream, and Layer assertions that unsafely narrow error or requirements channels; it skips channels originally typed as any and offers a quick fix that removes the assertion.
Fixes and other changes 3
The language service no longer suggests removing Effect.gen when a single return statement contains multiple yield* expressions, which would produce invalid code.
RpcClient → Rpc enrichment skips ancestor nodes whose type cannot be resolved, preserving the upstream go-to-definition result for JSX tag names.
Promise detection ignores any and unknown before checking assignability against the global Promise type, fixing false positives for Effect.sync thunks whose return type degrades to any.
@effect/language-service 0.8512 changes
Tooling 11
Adds an effect-native diagnostic reporting async function declarations and guiding developers toward Effect-based async control flow.
Adds a diagnostic discouraging crypto.randomUUID() in favor of the Effect Random module, which uses Effect-injected randomness.
Adds a diagnostic discouraging crypto.randomUUID() in favor of the Effect Random module, which uses Effect-injected randomness.
Adds a style diagnostic for Effect.Do usage and suggests migrating to Effect.gen or Effect.fn.
Adds a style diagnostic for Effect.map(...) immediately followed by Effect.flatten in pipe flows.
Adds a diagnostic for Effect.sync(() => Promise...) patterns and suggests Effect.promise or Effect.tryPromise for async work.
Adds a diagnostic that detects yield* Effect.gen(...) inside an existing Effect generator context.
Adds an effect-native diagnostic reporting manual Promise construction and guiding developers toward Effect-based async control flow.
Adds a diagnostic guiding process.env reads toward Effect Config APIs.
Adds a diagnostic guiding process.env reads toward Effect Config APIs.
Adds a style diagnostic for arrow functions whose block body only returns an expression.
Fixes and other changes 1
Type parsing is updated to match renamed Context APIs in the latest Effect v4 beta releases.
@effect/language-service 0.8415 changes
Tooling 12
Diagnostic messages use reviewed neutral wording while preserving version-specific API references.
Adds Effect v4 support so the diagnostic suggests and fixes Effect.run*With usage based on Effect.services.
Adds an opt-in diagnostic that flags console logging methods outside Effect generators and suggests Effect.log/Logger.
Adds an opt-in diagnostic that flags console logging methods inside Effect generators and suggests Effect.log/Logger.
Adds an opt-in diagnostic that flags Date.now() and new Date() usage outside Effect generators and suggests Clock/DateTime.
Adds an opt-in diagnostic that flags Date.now() and new Date() usage inside Effect generators and suggests Clock/DateTime.
Adds an opt-in diagnostic that flags global fetch() usage outside Effect generators and suggests HttpClient.
Adds an opt-in diagnostic that flags global fetch() usage inside Effect generators and suggests HttpClient.
Adds an opt-in diagnostic that flags Math.random() usage outside Effect generators and suggests the Random service.
Adds an opt-in diagnostic that flags Math.random() usage inside Effect generators and suggests the Random service.
Adds an opt-in diagnostic that flags setTimeout and setInterval usage outside Effect generators and suggests Effect.sleep/Schedule.
Adds an opt-in diagnostic that flags setTimeout and setInterval usage inside Effect generators and suggests Effect.sleep/Schedule.
Fixes and other changes 3
Floating Stream values are now reported in Effect projects for both v3 and v4.
Ignores type-only heritage expressions such as interface extensions, preventing bogus TS2689 diagnostics.
Prevents false positives when an Effect.fn or Effect.fnUntraced callback gets its contextual function type from a union member.
@effect/language-service 0.832 changes
New APIs and options 1
Adds a CLI command for updating diagnostic rule severities without rerunning the full setup flow.
Tooling 1
Adds setup CLI preset management for diagnostic severities, including preset metadata and preset-aware customization.
@effect/language-service 0.825 changes
Behavior and default changes 2
The command's diagnostics output now includes start and end.
A schema can now be referenced from a local installation.
Tooling 2
Use this comment on an enclosing declaration to suppress the leaking requirements diagnostic for specific leaked services.
Adds a diagnostic mirroring
noImplicitAnyfor unannotatedEffect.fnandEffect.fnUntracedcallback parameters.
Fixes and other changes 1
The diagnostic now also reports invalid
ServiceMap.Serviceself type parameters.
@effect/language-service 0.814 changes
Tooling 3
A new diagnostic flags global fetch usage and recommends the Effect HTTP client.
The node built-in import diagnostic now recommends the Effect HTTP client for http and https imports.
Setup diagnostics now use grouped preview-driven metadata and richer interactive prompt rendering.
Fixes and other changes 1
Setup diagnostics now support tsconfig files that do not contain compilerOptions.
@effect/language-service 0.803 changes
New APIs and options 1
The diagnostics command accepts inline --lspconfig to override project plugin configuration without editing tsconfig.json.
Tooling 2
A root schema.json is generated for tsconfig.json plugin configuration and includes typed Effect Language Service plugin options.
effect-language-service setup automatically adds or removes the matching $schema entry.