tsgolint

TypeScript linting gets faster with tsgolint's stable type-aware release

TypeScript linting has long meant waiting on JavaScript's type system.

3 min readInfoQ
TypeScript linting gets faster with tsgolint's stable type-aware release

The steady march toward faster developer tooling has reached a familiar battleground: the linter. With tsgolint hitting stable v7, we are seeing something more interesting than just another performance benchmark. This release pairs the type-aware semantic analysis that TypeScript developers rely on from tools like the typescript-go compiler with the raw execution speed of Go. That combination matters because it attacks the friction that has long sat at the edge of every large codebase: the wait between saving a file and hearing back from your tooling. We have spent years accepting that deep type checking is slow, and tsgolint is essentially saying that trade-off is no longer necessary.

What stands out is not the raw number of rules handled, though covering 59 of 61 type-aware rules is a strong signal. It is the architectural choice to let Oxlint own configuration and file discovery while tsgolint focuses on semantic analysis. That division of labor is practical and honest. It acknowledges that building a full linter from scratch is a massive undertaking, and that reusing proven components for the plumbing while concentrating effort on the harder type-aware logic is a smarter path. This is the same pragmatic thinking we saw with Cloudflare's move to EmDash for its blog, where the team chose to build a CMS that solved its specific performance needs rather than forcing a general-purpose tool to fit. Both stories point to a broader trend: the willingness to assemble specialized components instead of reaching for an all-in-one solution.

For developers, the practical takeaway is about the closing gap between convenience and correctness. Type-aware linting has traditionally been the slower, more thorough option, often reserved for CI pipelines rather than editor feedback. tsgolint flips that expectation by making the thorough pass fast enough to run continuously. That is not a minor quality-of-life improvement. It changes how often you can catch a subtle type-level bug before it ships. We would tell a reader who is still on ESLint to treat this as a serious option worth a trial run, especially if they are already using Oxlint for file management. The compatibility with TypeScript 7.0.2 also signals forward momentum, though it is worth watching how quickly the project tracks future TypeScript releases.

The open question is whether this performance-first approach will push the broader ecosystem to raise its own baseline. When a Go-powered linter can handle nearly all type-aware rules at a fraction of the time, the pressure shifts to incumbent tools to justify their slower feedback loops. We are not saying everyone should migrate tomorrow, but the fact that this is stable and production-ready means the conversation has moved from "could this work?" to "why are we waiting?" The specific detail to watch is how the tsgolint team handles the remaining two unimplemented rules and whether the community rallies around extending that coverage. That will tell us if this is a compelling alternative or just a fast prototype that got lucky with a stable release. For now, the trajectory looks like one of the more sensible uses of Go in the TypeScript ecosystem we have seen.

From InfoQ

tsgolint has released a stable v7, enhancing TypeScript linting with native Go speed. It offers type-aware linting, leveraging TypeScript's semantic analysis through the typescript-go compiler. Oxlint manages configurations and file discovery. The release, compatible with TypeScript 7.0.2, handles 59 of 61 type-aware rules and shows significant performance improvements over ESLint.

Read the original at InfoQ