# What changed in @effect/language-service

> 76 changes in @effect/language-service 0.77 to 0.87 from its official release notes, upgrade guides and advisories: 4 breaking, 3 new APIs and options. Each one cited. Sources checked 2026-10-20. HTML: https://unstale.sh/npm/@effect/language-service/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @effect/language-service 0.87

### Breaking changes

- Effect v4 compatibility now uses the new package paths for CLI, HTTP, schema model, and encoding imports, updating examples and diagnostics. (0.87.3) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.87.3)

### Tooling

- The v4 quick fix now inserts Effect.context<never>() instead of the removed Effect.services, and reuses an existing Effect.context() binding. (0.87.5) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.87.5)
- Calls inside an Effect are now reported, with a suggestion to use Effect.runPromiseExitWith in v4 or Runtime.runPromiseExit in v3. (0.87.5) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.87.5)
- Calls inside an Effect are now reported, like Effect.runSync, with a suggestion to use the appropriate v4 or v3 alternative. (0.87.5) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.87.5)
- The language service now allows Effect.provide at recognized application entry points. (0.87.3) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.87.3)
- Effect v4 compatibility is updated to 4.0.0-beta.104, including the renamed Schema.Error and Schema.TaggedError constructors. (0.87.2) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.87.2)
- Adds a style diagnostic suggesting Effect.map instead of Effect.flatMap followed by Effect.succeed. (0.87.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.87.0)
- Updates the setup command to configure VS Code with the unified js/ts TypeScript settings. (0.87.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.87.0)

### Fixes and other changes

- Now checks calls used as method receivers and calls nested inside them. (0.87.4) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.87.4)
- Reports calls whose result is used as a method receiver, including calls nested inside them. (0.87.4) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.87.4)
- Now checks calls used as method receivers and calls nested inside them. (0.87.4) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.87.4)
- The diagnostic now ignores Effect v4 local Effect.provide(..., { local: true }) calls when reporting chained provides. (0.87.1) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.87.1)

## @effect/language-service 0.86

### Breaking changes

- Unsupported TypeScript versions are rejected when loading or patching TypeScript; TypeScript 7 users are directed to @effect/tsgo. (0.86.5) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.86.5)

### Behavior and default changes

- When TypeScript skipLibCheck is enabled, patched tsc runs skip Effect diagnostics for external library files. (0.86.6) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.86.6)
- The preferSchemaOverJson option is now off by default. (0.86.2) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.86.2)

### Tooling

- The generated schema.json now includes the TypeScript 6.0 ES2025 target and lib entries. (0.86.2) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.86.2)
- Diagnostic guidance now recommends Effect v3 and v4 APIs based on whether the shape is known and whether code handles JSON strings or values. (0.86.2) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.86.2)
- 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. (0.86.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.86.0)

### Fixes and other changes

- The language service no longer suggests removing Effect.gen when a single return statement contains multiple yield* expressions, which would produce invalid code. (0.86.4) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.86.4)
- RpcClient → Rpc enrichment skips ancestor nodes whose type cannot be resolved, preserving the upstream go-to-definition result for JSX tag names. (0.86.3) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.86.3)
- 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. (0.86.3) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.86.3)

## @effect/language-service 0.85

### Tooling

- Adds an effect-native diagnostic reporting async function declarations and guiding developers toward Effect-based async control flow. (0.85.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.85.0)
- Adds a diagnostic discouraging crypto.randomUUID() in favor of the Effect Random module, which uses Effect-injected randomness. (0.85.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.85.0)
- Adds a diagnostic discouraging crypto.randomUUID() in favor of the Effect Random module, which uses Effect-injected randomness. (0.85.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.85.0)
- Adds a style diagnostic for Effect.Do usage and suggests migrating to Effect.gen or Effect.fn. (0.85.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.85.0)
- Adds a style diagnostic for Effect.map(...) immediately followed by Effect.flatten in pipe flows. (0.85.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.85.0)
- Adds a diagnostic for Effect.sync(() => Promise...) patterns and suggests Effect.promise or Effect.tryPromise for async work. (0.85.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.85.0)
- Adds a diagnostic that detects yield* Effect.gen(...) inside an existing Effect generator context. (0.85.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.85.0)
- Adds an effect-native diagnostic reporting manual Promise construction and guiding developers toward Effect-based async control flow. (0.85.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.85.0)
- Adds a diagnostic guiding process.env reads toward Effect Config APIs. (0.85.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.85.0)
- Adds a diagnostic guiding process.env reads toward Effect Config APIs. (0.85.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.85.0)
- Adds a style diagnostic for arrow functions whose block body only returns an expression. (0.85.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.85.0)

### Fixes and other changes

- Type parsing is updated to match renamed Context APIs in the latest Effect v4 beta releases. (0.85.1) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.85.1)

## @effect/language-service 0.84

### Tooling

- Diagnostic messages use reviewed neutral wording while preserving version-specific API references. (0.84.3) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.3)
- Adds Effect v4 support so the diagnostic suggests and fixes Effect.run*With usage based on Effect.services. (0.84.1) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.1)
- Adds an opt-in diagnostic that flags console logging methods outside Effect generators and suggests Effect.log/Logger. (0.84.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.0)
- Adds an opt-in diagnostic that flags console logging methods inside Effect generators and suggests Effect.log/Logger. (0.84.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.0)
- Adds an opt-in diagnostic that flags Date.now() and new Date() usage outside Effect generators and suggests Clock/DateTime. (0.84.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.0)
- Adds an opt-in diagnostic that flags Date.now() and new Date() usage inside Effect generators and suggests Clock/DateTime. (0.84.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.0)
- Adds an opt-in diagnostic that flags global fetch() usage outside Effect generators and suggests HttpClient. (0.84.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.0)
- Adds an opt-in diagnostic that flags global fetch() usage inside Effect generators and suggests HttpClient. (0.84.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.0)
- Adds an opt-in diagnostic that flags Math.random() usage outside Effect generators and suggests the Random service. (0.84.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.0)
- Adds an opt-in diagnostic that flags Math.random() usage inside Effect generators and suggests the Random service. (0.84.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.0)
- Adds an opt-in diagnostic that flags setTimeout and setInterval usage outside Effect generators and suggests Effect.sleep/Schedule. (0.84.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.0)
- Adds an opt-in diagnostic that flags setTimeout and setInterval usage inside Effect generators and suggests Effect.sleep/Schedule. (0.84.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.0)

### Fixes and other changes

- Floating Stream values are now reported in Effect projects for both v3 and v4. (0.84.3) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.3)
- Ignores type-only heritage expressions such as interface extensions, preventing bogus TS2689 diagnostics. (0.84.2) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.2)
- Prevents false positives when an Effect.fn or Effect.fnUntraced callback gets its contextual function type from a union member. (0.84.1) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.1)

## @effect/language-service 0.83

### New APIs and options

- Adds a CLI command for updating diagnostic rule severities without rerunning the full setup flow. (0.83.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.83.0)

### Tooling

- Adds setup CLI preset management for diagnostic severities, including preset metadata and preset-aware customization. (0.83.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.83.0)

## @effect/language-service 0.82

### Behavior and default changes

- The command's diagnostics output now includes start and end. (0.82.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.82.0)
- A schema can now be referenced from a local installation. (0.82.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.82.0)

### Tooling

- Use this comment on an enclosing declaration to suppress the leaking requirements diagnostic for specific leaked services. (0.82.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.82.0)
- Adds a diagnostic mirroring `noImplicitAny` for unannotated `Effect.fn` and `Effect.fnUntraced` callback parameters. (0.82.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.82.0)

### Fixes and other changes

- The diagnostic now also reports invalid `ServiceMap.Service` self type parameters. (0.82.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.82.0)

## @effect/language-service 0.81

### Tooling

- A new diagnostic flags global fetch usage and recommends the Effect HTTP client. (0.81.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.81.0)
- The node built-in import diagnostic now recommends the Effect HTTP client for http and https imports. (0.81.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.81.0)
- Setup diagnostics now use grouped preview-driven metadata and richer interactive prompt rendering. (0.81.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.81.0)

### Fixes and other changes

- Setup diagnostics now support tsconfig files that do not contain compilerOptions. (0.81.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.81.0)

## @effect/language-service 0.80

### New APIs and options

- The diagnostics command accepts inline --lspconfig to override project plugin configuration without editing tsconfig.json. (0.80.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.80.0)

### Tooling

- A root schema.json is generated for tsconfig.json plugin configuration and includes typed Effect Language Service plugin options. (0.80.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.80.0)
- effect-language-service setup automatically adds or removes the matching $schema entry. (0.80.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.80.0)

## @effect/language-service 0.79

### Breaking changes

- Renames the plugin option to `skipDisabledOptimization`; it keeps disabled diagnostics eligible for comment-based overrides when patch mode is active. (0.79.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.79.0)
- The misspelled plugin option is renamed to `skipDisabledOptimization`. (0.79.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.79.0)

### New APIs and options

- Adds a plugin option that allows Effect diagnostics reported as errors to be ignored for patched `tsc` exit-code purposes. (0.79.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.79.0)

### Tooling

- Adds a diagnostic warning when classes directly extend the native Error constructor, including common local aliases. (0.79.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.79.0)
- Adds an opt-in diagnostic warning about Node.js built-in module imports that have Effect-native counterparts in `@effect/platform`. (0.79.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.79.0)
- Adds a diagnostic warning when `ServiceMap.Service` is assigned to a variable instead of used in a class declaration, with an auto-fix. (0.79.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.79.0)

## @effect/language-service 0.78

### Behavior and default changes

- Inferred span names can include service and method names for supported layer service methods; class static members using Layer.*(this, ...) use the enclosing class name instead of this. (0.78.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.78.0)

### Tooling

- Adds a diagnostic warning when an Effect computation appears in the failure channel of another Effect, preferring innermost matches for nested cases. (0.78.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.78.0)

### Fixes and other changes

- The refactor no longer produces any types in Layer channels after the Effect v4 API change. (0.78.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.78.0)
- Correctly handles yieldable values such as Option.none() and targets only expression statements with top-level yield* expressions in a validated enclosing Effect.gen scope. (0.78.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.78.0)
- Hover support now uses yieldable parsing paths. (0.78.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.78.0)

## @effect/language-service 0.77

### Tooling

- Adds completion and diagnostic support for Model.Class from effect/unstable/schema, including detecting mismatched Self type parameters and suggesting Model.Class after Model. (0.77.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.77.0)
- Adds a diagnostic warning when a project targeting a newer Effect version uses outdated Effect APIs. (0.77.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.77.0)

### Fixes and other changes

- Updates TaggedError completion to use TaggedErrorClass, matching the Effect v4 API. (0.77.0) — [release notes](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.77.0)
