Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Effect-TS/tsgo/llms.txt
Use this file to discover all available pages before exploring further.
Diagnostics are not showing in my editor
Diagnostics are not showing in my editor
Work through each of these checks in order.1. Verify the plugin is configured in If the 3. Verify the binary locationRun the following command to confirm the binary has been installed:This prints the absolute path to the If it is not listed, install it:
tsconfig.jsonYour tsconfig.json must include the @effect/language-service plugin entry:plugins array is missing or the name is wrong, no diagnostics will appear. Run npx @effect/tsgo setup to add it automatically.2. Check that your editor is using effect-tsgo as the TypeScript serverThe standard built-in TypeScript server bundled with VS Code (or another editor) does not include the Effect Language Service. You must configure your editor to use effect-tsgo instead.The recommended approach is the patch command, which replaces the @typescript/native-preview binary. See the Editor Setup guide for per-editor instructions.Run the following to find the binary path and use it in your editor config:effect-tsgo binary for your platform. If it fails or returns an error, run npx @effect/tsgo patch to (re-)apply the binary.4. Confirm @effect/tsgo is installed in the projectRunning effect-tsgo alongside tsgo causes duplicate diagnostics
Running effect-tsgo alongside tsgo causes duplicate diagnostics
Do not run both This replaces the
effect-tsgo and the official tsgo at the same time. Because effect-tsgo is a superset of tsgo, running both produces duplicate diagnostics and degrades editor performance.Configure your editor to use effect-tsgo as the sole TypeScript language server. Remove any explicit tsgo server configuration and replace it with the effect-tsgo binary.The recommended approach is to run:@typescript/native-preview binary that your editor loads, so no additional editor configuration is needed when using the TypeScript Native Preview extension. See the Editor Setup guide for details.Binary patching issues
Binary patching issues
How patching worksRunning Too many backup filesEach call to
If you are on an unsupported platform, the binary install step will fail. Consider using the Nix flake to build from source.
npx @effect/tsgo patch replaces the default TypeScript-Go binary with the Effect-patched version. A numbered backup of the original binary is created automatically before each patch operation.To restore the original binary:patch creates a new backup. If you have patched and unpatched many times, more than 100 backup files may accumulate. Clean them up manually from the directory printed by npx @effect/tsgo get-exe-path.Platform supportPre-built binaries are available for:| Platform | Architecture |
|---|---|
| macOS | arm64 (Apple Silicon) |
| macOS | x64 (Intel) |
| Linux | x64 |
| Linux | arm64 |
| Linux | arm |
| Windows | x64 |
| Windows | arm64 |
Breaking changes after upgrading
Breaking changes after upgrading
@effect/tsgo is in alpha. Breaking changes to plugin options, diagnostic names, and behaviour may occur between releases without a major version bump.Before upgrading, review the CHANGELOG for the releases between your current version and the target version.Some features present in the previous TypeScript-based version of the Effect Language Service may be temporarily missing or behave differently — this is expected while the Go-based port is in progress.tsc exit code is non-zero due to Effect diagnostics
tsc exit code is non-zero due to Effect diagnostics
By default, Effect suggestion-level diagnostics do not affect the To suppress suggestion diagnostics from
tsc exit code, but warnings and errors do. Use the following plugin options to adjust this behaviour:tsc output entirely (without hiding them from the editor), set:ignoreEffectSuggestionsInTscExitCode defaults to true, so suggestions never cause a non-zero exit code out of the box.Directive overrides for disabled rules are not taking effect
Directive overrides for disabled rules are not taking effect
By default, when a diagnostic rule is disabled in With this enabled, you can selectively activate a disabled rule for a specific line:
diagnosticSeverity, the language service skips processing it entirely for performance. This means per-line @effect-diagnostics comment directives cannot re-enable it.To allow directives to override disabled rules, set skipDisabledOptimization to true:Hover responses are slow
Hover responses are slow
Two settings can affect hover performance:Go-based compiler performance
layerGraphFollowDepthThe layerGraphFollowDepth option controls how many levels of symbol references the layer graph extractor follows when building hover diagrams. The default is 0 (only direct references). Increasing this value makes hover responses more detailed but significantly slower for large layer graphs.effect-tsgo uses the Go-based TypeScript compiler, which is significantly faster than the classic TypeScript compiler for large projects. If you are experiencing general slowness beyond hover, ensure you are not accidentally running the classic TypeScript server in parallel (see the duplicate diagnostics entry above).