TSSLint 3.0 Final Release Streamlines TypeScript Linting with Native Node.js Integration
#Dev

TSSLint 3.0 Final Release Streamlines TypeScript Linting with Native Node.js Integration

Frontend Reporter
2 min read

The final major version of TSSLint reduces dependencies while improving migration paths and editor performance for TypeScript developers.

Featured image

TypeScript developers seeking faster, more integrated linting have a significant update with TSSLint 3.0's release. Created by Johnson Chu as a spiritual successor to the deprecated TSLint, this final major version significantly reduces dependencies while streamlining developer workflows and editor integration.

Core Architectural Advantage

Unlike general-purpose linters like ESLint that operate as separate processes, TSSLint runs directly as a TypeScript Language Server plugin. By leveraging the existing TypeScript compiler's AST and TypeChecker without ESTree conversion, it eliminates redundant type-checking initialization. This architectural approach delivers near-instant diagnostics and fixes—significantly reducing editor lag during auto-fix operations that previously hampered large-scale projects.

What's New in Version 3.0

The headline change is the removal of esbuild for runtime operations. TSSLint now utilizes Node.js's native support for importing .ts files (requiring Node.js 22.6.0+). This dependency reduction improves startup speed and simplifies build configurations. Additional improvements include:

  • Enhanced Migration Paths: A new importTSLintRules feature allows direct import of legacy TSLint rules, easing transition for existing codebases
  • Unified Rule Handling: Integration with Arnaud Barre's TSL project provides consistent TypeScript linting rule management
  • Directive Support: The createIgnorePlugin API enables configuration of ignore patterns via directive comments
  • Improved Developer Tooling: New tsslint-docgen automates rule documentation, while CLI cache files now reside in the OS temporary directory

Performance Trade-offs and Breaking Changes

Benchmarks revealed that multi-threading consumed 2x energy for only 1.5x speed gains due to Node.js memory constraints. Consequently, the --threads option was removed entirely. Other breaking changes include renaming --projects to --project and createDisableNextLinePlugin to createIgnorePlugin. The team indicates future exploration of resource-efficient multi-threading solutions.

Ecosystem Position and Limitations

While tools like Biome and oxlint focus on syntactic linting speed, TSSLint maintains unique advantages in type-aware analysis through direct TypeScript compiler integration. However, it remains incompatible with the upcoming TypeScript 7 native compiler (typescript-go) due to lacking Language Service Plugin support. As Chu noted on X: "Unless we have a significantly better solution, tsslint will not attempt to duplicate existing community efforts" for Go-based implementations.

Vue.js creator Evan You has endorsed TSSLint as "the most efficient way to run type-aware lint rules while leveraging the existing TS language server." With reduced dependencies and optimized editor integration, this final major version offers TypeScript teams a compelling alternative to ESLint-based workflows.

TSSLint 3.0 is available on GitHub.


Author photo Daniel Curtis is a UI Development Manager at Griffiths Waite, leading frontend engineering efforts with focus on TypeScript solutions and developer experience.

Comments

Loading comments...