/posts/announcing-oxlint-type-aware-linting-alpha.mdFor more technical details, implementations, and considerations for Oxlint's type-aware linting, see the blog post on the Oxc website.
TL;DR: Oxlint's type-aware linting has reached alpha status. Type-aware rules can now be manually configured, disabled with comments, and fixed automatically. This milestone also includes more rule coverage, TypeScript diagnostics reporting, and type-checking while linting.
Less than 6 months after the technical preview release, Oxlint's type-aware linting has reached alpha status. The goal for the technical preview was to build a proof of concept for type-aware linting in Oxlint. VoidZero's goal for the alpha release is to better integrate Oxlint with tsgolint, which powers our type-aware lint rules.
tsgolint? Type-aware rules like no-floating-promises can slow down linting because TypeScript may need to check every file to infer types. VoidZero accelerates this process using tsgolint to perform the underlying type checks and type-aware linting for Oxlint.
tsgolint is a high-performant linter backend on top of typescript-go, the Go port of TypeScript. Originally a proof-of-concept by auvred (typescript-eslint team), it's now maintained by VoidZero. Since typescript-go doesn't export internal packages, tsgolint provides a shim, an adapter layer on top of typescript-go that makes these internal APIs accessible. All type-aware rules are written directly against these shimmed internal APIs, keeping Oxlint fast while leveraging TypeScript's type system. tsgolint is not meant to run standalone. It is designed to be used as a backend for linters like Oxlint, providing type-aware linting capabilities.
Preliminary results show that Oxlint + tsgolint is significantly faster than ESLint + typescript-eslint (source), given the same ruleset:
vuejs/coreoutline/outlineHowever, a major consideration for this approach is maintenance and staying up-to-date with typescript-go. We regularly update tsgolint to depend on the latest typescript-go release and address any changes. While working on tsgolint, our team also submits pull requests to improve typescript-go and the overall ecosystem.

tsgolint as "linter backend" for type-aware linting. tsgolint integration with Oxlint The goal for the alpha status was to reduce the distinction between type-aware rules and non-type-aware rules when using Oxlint.
.oxlintrc.json// .oxlintrc.json
{
"rules": {
"typescript/no-floating-promises": [
"error",
{
"ignoreVoid": true,
"allowForKnownSafePromises": [
{ "from": "file", "name": "SafePromise" },
{ "from": "lib", "name": "PromiseLike" }
]
}
]
}
}/* oxlint-disable typescript/no-floating-promises */
// oxlint-disable-next-line typescript/no-floating-promises
[1, 2, 3].map(async x => x + 1);--fix flag.All 3 updates bring type-aware rule features closer to parity with non-type-aware rules.
In addition to more stability, Oxlint's type-aware linting alpha comes with:
tsc --noEmit) and reduce total time spent linting and type-checking in CI. You can enable it via the --type-check flag.no-deprecated, prefer-includes , strict-boolean-expressions rules. It now covers 43 / 59 typescript-eslint rules. All supported rules.tsconfig.json files.VoidZero is actively working on the following improvements for the beta release:
typescript-eslint rules.tsgolint may encounter out-of-memory issues. Our team is working improving memory usage for the next milestone. If you are having memory issues please report it in the tsgolint repository.Connect with us:
oxlint bugs to oxc and type-aware linting bugs to tsgolint.CallToAction.vue