{"id":613807,"date":"2026-09-12T12:02:17","date_gmt":"2026-09-12T12:02:17","guid":{"rendered":"https:\/\/www.newsbeep.com\/il\/613807\/"},"modified":"2026-09-12T12:02:17","modified_gmt":"2026-09-12T12:02:17","slug":"tsgolint-reaches-stable-v7-bringing-go-powered-type-aware-linting-to-oxlint","status":"publish","type":"post","link":"https:\/\/www.newsbeep.com\/il\/613807\/","title":{"rendered":"tsgolint Reaches Stable v7, Bringing Go-Powered Type-Aware Linting to Oxlint"},"content":{"rendered":"<p><a href=\"https:\/\/github.com\/oxc-project\/tsgolint\" rel=\"nofollow noopener\" target=\"_blank\">tsgolint<\/a>, the type-aware linting engine behind <a href=\"https:\/\/oxc.rs\/docs\/guide\/usage\/linter\" rel=\"nofollow noopener\" target=\"_blank\">Oxlint<\/a>, has reached a stable <a href=\"https:\/\/oxc.rs\/blog\/2026-07-22-type-aware-linting-stable\" rel=\"nofollow noopener\" target=\"_blank\">v7 release<\/a>, bringing native Go speed to the TypeScript lint rules that teams have long run through ESLint.<\/p>\n<p>tsgolint handles the rules that need TypeScript semantic analysis, the ones that answer questions such as whether a promise is ever awaited. Rather than reimplementing a type checker, it builds real TypeScript programs on top of <a href=\"https:\/\/github.com\/microsoft\/typescript-go\" rel=\"nofollow noopener\" target=\"_blank\">typescript-go<\/a>, the official Go port of the compiler that ships as <a href=\"https:\/\/devblogs.microsoft.com\/typescript\/announcing-typescript-7-0\/\" rel=\"nofollow noopener\" target=\"_blank\">TypeScript 7<\/a>. <a href=\"https:\/\/github.com\/oxc-project\/oxc\" rel=\"nofollow noopener\" target=\"_blank\">Oxlint<\/a>, written in Rust, handles file discovery, configuration and the cheap syntactic rules, then passes the type-aware work to the Go binary, which returns structured diagnostics. The release tracks TypeScript v7.0.2 and covers <a href=\"https:\/\/github.com\/oxc-project\/tsgolint\" rel=\"nofollow noopener\" target=\"_blank\">59 of typescript-eslint&#8217;s 61<\/a> type-aware rules, up from 43 at the <a href=\"https:\/\/voidzero.dev\/posts\/announcing-oxlint-type-aware-linting-alpha\" rel=\"nofollow noopener\" target=\"_blank\">December alpha<\/a>.<\/p>\n<p>Getting started takes two commands:<\/p>\n<p>&#13;<br \/>\npnpm add -D oxlint oxlint-tsgolint@7&#13;<br \/>\npnpm oxlint &#8211;type-aware&#13;<\/p>\n<p>Adding &#8211;type-check reports compiler errors alongside lint diagnostics from the same TypeScript program, and both flags can be pinned in an oxlint.config.ts or .oxlintrc.json file. The release also adds per-rule timings, surfaced with oxlint &#8211;type-aware &#8211;debug timings, so teams can see which type-aware rules dominate a run. The team&#8217;s benchmarks put the stable build at 12 to 18 times faster than ESLint with typescript-eslint across microsoft\/vscode, microsoft\/typescript, typeorm and vuejs\/core on an Apple M4 Pro.<\/p>\n<p>Writing before the release, J\u00f6kull S\u00f3lberg <a href=\"https:\/\/www.solberg.is\/fast-type-aware-linting\" rel=\"nofollow noopener\" target=\"_blank\">concluded<\/a> that &#8220;Oxlint is making the right long-term bet,&#8221; reasoning that aligning with tsgo inherits &#8220;every future optimisation the TypeScript team ships, while keeping the rule surface identical to typescript-eslint.&#8221; The same argument runs through a <a href=\"https:\/\/github.com\/biomejs\/biome\/discussions\/7009\" rel=\"nofollow noopener\" target=\"_blank\">Biome discussion<\/a> weighing whether Biome should adopt typescript-go too. <a href=\"https:\/\/biomejs.dev\/blog\/biome-v2\/\" rel=\"nofollow noopener\" target=\"_blank\">Biome v2<\/a> synthesises its own types without the compiler, and <a href=\"https:\/\/blogs.abhipanseriya.dev\/blog\/typescript-eslint-owns-typed-linting-oxlint-and-biome-are-coming-from-opposite-directions\" rel=\"nofollow noopener\" target=\"_blank\">one analysis<\/a> puts its noFloatingPromises rule at roughly 75 percent of the cases typescript-eslint catches, a gap it notes Vite creator Evan You has publicly questioned.<\/p>\n<p>The typescript-eslint team, whose contributor auvred created the original prototype, still calls its own <a href=\"https:\/\/github.com\/typescript-eslint\/tsgolint\" rel=\"nofollow noopener\" target=\"_blank\">tsgolint fork<\/a> an experiment that is &#8220;not under active development.&#8221; On the oxc side, correctness is still being refined, with users filing reports such as <a href=\"https:\/\/github.com\/oxc-project\/tsgolint\/issues\/1044\" rel=\"nofollow noopener\" target=\"_blank\">one<\/a> where an autofix removed a type assertion that tsc actually required.<\/p>\n<p>ESLint users can run npx @oxlint\/migrate &#8211;type-aware to translate an existing config, following the <a href=\"https:\/\/oxc.rs\/docs\/guide\/usage\/linter\/migrate-from-eslint\" rel=\"nofollow noopener\" target=\"_blank\">migrate-from-eslint guide<\/a>. The catch is the dependency, because <a href=\"https:\/\/oxc.rs\/docs\/guide\/usage\/linter\/type-aware\" rel=\"nofollow noopener\" target=\"_blank\">type-aware linting<\/a> needs TypeScript 7.0 or later, some legacy tsconfig options such as baseUrl are unsupported, and projects using removed TypeScript 6 features have to migrate first.<\/p>\n<p>The jump straight from the experimental 0.x line to a stable v7 is a deliberate change, because tsgolint is now versioned against the compiler it embeds, v7.0.2000 aligns with TypeScript 7.0.2. Work now focuses on the final rules, editor integration and monorepo performance.<\/p>\n<p>Linting is the static-analysis step that flags likely bugs and enforces conventions before code runs, and its most expensive tier is type-aware linting, which needs a real model of a program&#8217;s types to answer questions a single file cannot.<\/p>\n<p>Oxlint is the linter in oxc, a suite of Rust-based JavaScript tools developed under VoidZero, the company Evan You founded to consolidate a famously fragmented toolchain, and tsgolint is the piece that lets it reach for the real compiler rather than reimplement one. Its stable release lands amid a wider rewrite of that toolchain in native languages, from bundlers and formatters to the TypeScript compiler itself.<\/p>\n","protected":false},"excerpt":{"rendered":"tsgolint, the type-aware linting engine behind Oxlint, has reached a stable v7 release, bringing native Go speed to&hellip;\n","protected":false},"author":2,"featured_media":613808,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31],"tags":[437,434,435,436,438,4407,146,134929,277870,85,46,3306,277869,44831,7390],"class_list":["post-613807","post","type-post","status-publish","format-standard","has-post-thumbnail","category-arts-and-design","tag-arts","tag-arts-and-design","tag-artsanddesign","tag-artsdesign","tag-design","tag-development","tag-entertainment","tag-eslint","tag-go-language","tag-il","tag-israel","tag-javascript","tag-tsgolint-oxlint-typescript","tag-typescript","tag-web-development"],"_links":{"self":[{"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/posts\/613807","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/comments?post=613807"}],"version-history":[{"count":0,"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/posts\/613807\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/media\/613808"}],"wp:attachment":[{"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/media?parent=613807"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/categories?post=613807"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/tags?post=613807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}