@effect/language-service plugin entry in your tsconfig.json. All options are optional and fall back to their documented defaults.
Full configuration example
tsconfig.json
Diagnostic control
Record<string, Severity>
default:"{}"
Maps rule names to severity levels, overriding each rule’s built-in default. Set to
{} to enable all diagnostics at their defaults. Valid severity values are "error", "warning", "suggestion", "message", and "off".boolean
default:"true"
When
false, suggestion-level Effect diagnostics are omitted from tsc CLI output. LSP and other editor flows are not affected.boolean
default:"true"
When
true, Effect suggestion and message-category diagnostics do not affect the tsc process exit code. The diagnostics are still reported; they just won’t cause a non-zero exit.boolean
default:"false"
When
true, Effect warning-category diagnostics do not affect the tsc process exit code.boolean
default:"false"
When
true, Effect error-category diagnostics do not affect the tsc process exit code.boolean
default:"false"
When
true, diagnostics that are globally disabled are still processed so that per-line or per-section @effect-diagnostics directive comments can re-enable them locally. Enabling this option has a performance cost proportional to the number of disabled rules.Key detection
KeyPattern[]
Configures the key pattern formulas used by the
deterministicKeys diagnostic. Each entry is an object with the following fields:Default:
boolean
default:"false"
When
true, the deterministicKeys rule also matches constructors annotated with @effect-identifier JSDoc tags, in addition to the standard structural detection.Pipeable style
number
default:"2"
Minimum number of contiguous pipeable transformation calls required to trigger the
missedPipeableOpportunity diagnostic. Increase this value to reduce noise in codebases that prefer explicit style.Layer graph and hover
string
default:"mermaid.live"
Mermaid rendering service used to generate Layer graph diagram links in hover output. Accepted values:
"mermaid.live"— links open on mermaid.live"mermaid.com"— links open on mermaid.com- Any custom URL — the diagram payload is appended to the provided base URL
boolean
default:"false"
When
true, external links (such as Mermaid diagram URLs) are suppressed from hover output. Useful in air-gapped environments or when external URL generation is undesirable.number
default:"0"
How many levels deep the Layer graph extraction follows symbol references when building the hover diagram.
0 means only the immediate layer composition is shown. Higher values produce more complete graphs at the cost of analysis time.Effect.fn quick fix variants
string[]
default:"[\"span\"]"
Controls which
effectFnOpportunity quick fix variants are offered when the diagnostic suggests wrapping a function with Effect.fn. Each entry is a variant name. The only built-in variant is "span".Editor experience
boolean
default:"false"
When
true, suppresses redundant return-type inlay hints on Effect.gen, Effect.fn, and Effect.fnUntraced generator functions where the return type is already clear from context.Duplicate package detection
string[]
default:"[]"
Package names that are permitted to appear in multiple versions without triggering the
duplicatePackage diagnostic. Useful when a controlled multi-version scenario is intentional (e.g. migrating between major versions).Auto-import style
The four options below control how the language service suggests and organises imports. Package name matching is case-insensitive for all four options.string[]
default:"[]"
Package names that should be imported as namespace imports (
import * as X from '...') rather than named imports. Package matching is case-insensitive.string[]
default:"[]"
Package names that should use barrel named imports (
import { X } from 'package') rather than deep-path imports. Package matching is case-insensitive.Record<string, string>
default:"{}"
Maps package names to preferred local import aliases. Keys are case-insensitive package name matches; values are the alias to use in generated imports.
ignore | follow
default:"ignore"
Controls whether named re-exports at a package’s top-level entry point are followed when resolving import candidates. Accepted values are case-insensitive; invalid values fall back to
"ignore"."ignore"— re-exports are not followed; only direct exports are considered."follow"— re-exports are traversed to find the original export source.