Skip to content

Commit 645fea1

Browse files
committed
first pass
1 parent c108422 commit 645fea1

File tree

1 file changed

+80
-3
lines changed

1 file changed

+80
-3
lines changed

src/blog/2025-12-01-type-aware-alpha.md

Lines changed: 80 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,54 @@ We're excited to announce the alpha release of type-aware linting in Oxlint!
1414

1515
## Overview
1616

17-
[Add overview content here]
17+
Following our [technical preview in August](/blog/2025-08-17-oxlint-type-aware), we're excited to announce that type-aware linting has reached alpha status. This milestone brings significant improvements in stability, configurability, and rule coverage.
18+
19+
Type-aware linting enables powerful rules like `no-floating-promises`, `no-misused-promises`, and `await-thenable` that catch bugs by understanding TypeScript's type system. With N type-aware rules now available, you can catch entire categories of runtime errors before they happen.
20+
21+
The alpha release addresses the major limitations from the technical preview:
22+
23+
- **Full rule configuration support** - Configure individual type-aware rules in `.oxlintrc.json`
24+
- **Disable comment support** - Use `eslint-disable` comments to control type-aware rules
25+
- **IDE support** - Type-aware linting works in VSCode and other supported editors
26+
- **Improved stability** - Many crashes and edge cases have been fixed
27+
28+
While we're still working on performance for very large monorepos and some advanced rules, the alpha is ready for testing in production codebases.
1829

1930
## Quick Start
2031

21-
[Add quick start instructions here]
32+
Install `oxlint` and `oxlint-tsgolint`, then run with the `--type-aware` flag:
33+
34+
::: code-group
35+
36+
```sh [npm]
37+
npm add -D oxlint oxlint-tsgolint@latest
38+
npx oxlint --type-aware
39+
```
40+
41+
```sh [pnpm]
42+
pnpm add -D oxlint oxlint-tsgolint@latest
43+
pnpm oxlint --type-aware
44+
```
45+
46+
```sh [yarn]
47+
yarn add -D oxlint oxlint-tsgolint@latest
48+
yarn oxlint --type-aware
49+
```
50+
51+
```sh [bun]
52+
bun add -D oxlint oxlint-tsgolint@latest
53+
bunx oxlint --type-aware
54+
```
55+
56+
:::
57+
58+
To try a specific type-aware rule without other configuration:
59+
60+
```bash
61+
npx oxlint --type-aware -A all -D typescript/no-floating-promises
62+
```
63+
64+
For more configuration options, see our [usage guide](/docs/guide/usage/linter/type-aware).
2265

2366
## What's New
2467

@@ -30,7 +73,41 @@ We're excited to announce the alpha release of type-aware linting in Oxlint!
3073

3174
## Technical Details
3275

33-
[Add technical implementation details]
76+
### Architecture
77+
78+
Type-aware linting in Oxlint uses a unique two-binary architecture:
79+
80+
```
81+
oxlint CLI (Rust)
82+
├─ Handles file traversal, ignore logic, and diagnostics
83+
├─ Passes paths and configuration to tsgolint
84+
└─ Formats and displays results
85+
86+
tsgolint (Go)
87+
├─ Uses typescript-go for type checking
88+
├─ Executes type-aware rules
89+
└─ Returns structured diagnostics
90+
```
91+
92+
This design keeps Oxlint's core fast while leveraging TypeScript's type system through typescript-go. The frontend-backend separation means `oxlint` controls the user experience while `tsgolint` handles the heavy lifting of type analysis.
93+
94+
### TypeScript Compatibility
95+
96+
`tsgolint` is based on [typescript-go](https://github.com/microsoft/typescript-go), Microsoft's TypeScript v7.0 rewrite in Go, not the original TypeScript compiler.
97+
98+
**Important compatibility notes:**
99+
100+
- Only TypeScript 7.0+ features are supported
101+
- Pre-7.0 syntax and deprecated features are not supported
102+
- Legacy `tsconfig.json` options like `baseUrl` have been removed in TypeScript 7.0
103+
104+
If you're using deprecated features from TypeScript 6.0 or earlier, you'll need to migrate your codebase first. See the [TypeScript migration guide](https://github.com/microsoft/TypeScript/issues/62508#issuecomment-3348649259) for help updating deprecated tsconfig options.
105+
106+
### Implementation Details
107+
108+
`tsgolint` doesn't use typescript-go's public APIs. Instead, it compiles typescript-go by [shimming](https://github.com/oxc-project/tsgolint/tree/main/shim) internal APIs to make them accessible. We actively track typescript-go updates and fix breaking changes as needed.
109+
110+
Our typescript-go fork is synced regularly using renovatebot, ensuring we stay current with the latest improvements and fixes.
34111

35112
## What's Next
36113

0 commit comments

Comments
 (0)